struts1.x和spring整合
一、struts和spring整合:
1、让struts的action继承spring的ActionSupport:
ApplicationContext context = getWebApplicationContext();
CourseService courseService = context.getBean("courseService");
2、配置方式
修改struts的配置文件
<action path="/listCourses" type="org.springframework.web.struts.DelegatingActionProxy"/>
使用spring的DI为struts的action注入所需对象
<bean name="/listCourses" type="com.springinaction.training.struts.ListCourseAction"/>
或者:
<action path="/listCourses"/>
二、spring的启动时机:
1、在web.xml中加入listener:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/training-service.xml,/WEB-INF/training-data.xml</param-value>
</context-param>
2、如果用的是struts,可以让struts启动时加载spring:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/training-servlet.xml,/WEB-INF/…"/>
</plug-in>
三、spring处理配置DAO
1、Getting a DataSource from JNDI:
<bean id="dataSource"+
"id, firstName, lastName) values (?, ?, ?)");
stmt.setInt(0, person.getId().intValue());
stmt.setString(1, person.getFirstName());
stmt.setString(2, person.getLastName());
stmt.executeUpdate();
}catch(SQLException e) {
LOGGER.error(e);
}finally {
try { if (stmt != null) stmt.close(); }catch(SQLException e) { LOGGER.warn(e); }
try { if (conn != null) conn.close(); }catch(SQLException e) { LOGGER.warn(e); }
}
}
public int insertPerson(Person person) {
String sql = "insert into person (id, firstName, lastName) values (?, ?, ?)";
Object[] params = new Object[] { person.getId(),person.getFirstName(),person.getLastName() };
int[] types =new int[] { Types.INTEGER, Types.VARCHAR, Types.VARCHAR };
return jdbcTemplate.update(sql, params, types);
}
4、spring对Hibernate的支持:
四、如何处理LazyInitializedException异常
<filter>
<filter-name>hibernateSessionFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
五、struts的分模块开发
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/center</param-name>
<param-value>/WEB-INF/center-struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/student</param-name>
<param-value>
/WEB-INF/student-struts-config.xml
</param-value>
</init-param>
<init-param>
<param-name>config/admin</param-name>
<param-value>/WEB-INF/admin-struts-config.xml</param-value>
</init-param>
</servlet>
六、对于数据库增删改过种中防止重复和不能删除项的处理意见: