struts1.x和spring整合

一、struts和spring整合:

1、让struts的action继承spring的ActionSupport:

ApplicationContextcontext=getWebApplicationContext();

CourseServicecourseService=context.getBean("courseService");

2、配置方式

修改struts的配置文件

<actionpath="/listCourses"type="org.springframework.web.struts.DelegatingActionProxy"/>

使用spring的DI为struts的action注入所需对象

<beanname="/listCourses"class="com.springinaction.training.struts.ListCourseAction">

<propertyname="courseService">

<refbean="courseService"/>

</property>

</bean>

3、替换掉struts的RequestProcessor:

<controllerprocessorclass="org.springframework.web.struts.DelegatingRequestProcessor"/>

此时struts的配置就无需做什么改变:

<actionpath="/listCourses"type="com.springinaction.training.struts.ListCourseAction"/>

或者:

<actionpath="/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-inclassname="org.springframework.web.struts.ContextLoaderPlugIn">

<set-propertyproperty="contextConfigLocation"value="/WEB-INF/training-servlet.xml,/WEB-INF/…"/>

</plug-in>

三、spring处理配置DAO

1、GettingaDataSourcefromJNDI:

<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">

<propertyname="jndiName">

<value>java:comp/env/jdbc/myDatasource</value>

</property>

</bean>

2、CreatingaDataSourceconnectionpool:

<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource">

<propertyname="driver">

<value>${db.driver}</value>

</property>

<propertyname="url">

<value>${db.url}</value>

</property>

<propertyname="username">

<value>${db.username}</value>

</property>

<propertyname="password">

<value>${db.password}</value>

</property>

</bean>

配置属性:

<beanid="datasourcecfg"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

<propertyname="location">

<value>classpath:datasource.properties</value>

</property>

</bean>

3、spring对jdbc的支持:

publicvoidinsertPerson(Personperson)throwsSQLException{

Connectionconn=null;

PreparedStatementstmt=null;

try{

conn=dataSource.getConnection();

stmt=conn.prepareStatement("insertintoperson("+

"id,firstName,lastName)values(?,?,?)");

stmt.setInt(0,person.getId().intValue());

stmt.setString(1,person.getFirstName());

stmt.setString(2,person.getLastName());

stmt.executeUpdate();

}catch(SQLExceptione){

LOGGER.error(e);

}finally{

try{if(stmt!=null)stmt.close();}catch(SQLExceptione){LOGGER.warn(e);}

try{if(conn!=null)conn.close();}catch(SQLExceptione){LOGGER.warn(e);}

}

publicintinsertPerson(Personperson){

Stringsql="insertintoperson(id,firstName,lastName)values(?,?,?)";

Object[]params=newObject[]{person.getId(),person.getFirstName(),person.getLastName()};

int[]types=newint[]{Types.INTEGER,Types.VARCHAR,Types.VARCHAR};

returnjdbcTemplate.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>

六、对于数据库增删改过种中防止重复和不能删除项的处理意见:

相关推荐