在昨天的struts2(v2.2.1)第一個入門示例的基礎上,參考網上的一些資源,增長了spring(v3.1)整合,整合步驟以下:java
1.引人相關的包:在昨天引入的jar包基礎上,strtus2還要引入struts2-spring-plugin包,spring須要導入的包有:core,web,context,beans,asm,expression,爲了使用spring dao我加入了jdbc包,留着之後用,呵呵web
2.在引入包以後,在web.xml裏配置spring配置文件的位置,以及用來加載spring配置文件的ContextLoaderListenerspring
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 加載struts2核心 --> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 指明spring配置文件在何處 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml,classpath*:applicationContext*.xml</param-value> </context-param> <!-- 加載spring配置文件applicationContext.xml --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3.配置struts.xmlexpress
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="utf-8"></constant> //看這裏 <constant name="struts.objectFactory" value="spring"></constant> <package name="strutsqs" extends="struts-default"> <action name="Login" class="com.struts2.action.LoginAction"> <result name="success">/welcome.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
4.爲了在struts中體現spring的功能,將之前在action裏處理的用戶驗證放入Service裏去,新建LoginSerive.java文件以下apache
package com.struts2.service; public class LoginService { public boolean validate(String username,String password) throws Exception{ boolean flag=false; if(username.equals("tom")&&password.equals("111111")){ flag=true; } return flag; } }
5.爲了使用Service,修改LoginAction.java代碼以下app
package com.struts2.action; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.struts2.service.LoginService; public class LoginAction extends ActionSupport implements Action{ private static final long serialVersionUID = 1L ; private String username; private String password; private LoginService loginService; @Override public void validate() { } public String execute() throws Exception { boolean result=this.loginService.validate(username, password); if(result){ return this.SUCCESS; }else{ return this.ERROR ; } } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public LoginService getLoginService() { return loginService; } public void setLoginService(LoginService loginService) { this.loginService = loginService; } }
6.最後配置spring的配置文件applicationContext.xmljsp
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans default-autowire="autodetect"> <bean id="loginService" class="com.struts2.service.LoginService"></bean> <bean id="hello" class="com.struts2.action.LoginAction"> <property name="loginService" ref="loginService"></property> </bean> </beans>