一、配置Struts2:
1、新建一个web项目,在src目录下新建com.st.bean/dao/service/action包,并在该包下面添加相应的接口及接口的实现类:
a)、在bean下新建一个UserBean,包含userName、password、sex属性名,并添加set、get方法及toString方法。
b)、dao层新建UserDao接口,并添加该接口是实现类UserDaoIm:
1 public class UserDaoIm implements UserDao { 2 3 public UserBean queryUser(UserBean user) { 4 System.out.println("************"+user); 5 return user; 6 } 7 }
c)、在service层新建UserService接口,并添加该接口的实现类UserServiceIm:
1 package com.st.service; 2 3 import com.st.bean.UserBean; 4 import com.st.dao.UserDao; 5 6 public class UserServiceIm implements UserService { 7 8 UserDao dao; 9 public UserBean queryUser(UserBean user) { 10 System.out.println("------------------------"); 11 return dao.queryUser(user); 12 } 13 public void setDao(UserDao dao) { 14 this.dao = dao; 15 } 16 }
2、在lib下面引入Struts2所需要的jar包,在web.xml文件中添加Struts2的拦截器:
1 <!-- ********************************** --> 2 <filter> 3 <filter-name>struts2</filter-name> 4 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>struts2</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping> 10 <!-- ********************************** -->
3、复制一个struts.xml文件到src目录下,并编辑<package>标签中的类容:
1 <struts> 2 <package name="user" namespace="/user" extends="struts-default" > 3 <action name="userAction" class="com.st.action.UserAction" method="login"> 4 <result name="success">/main.jsp</result> 5 <result name="error">/index.jsp</result> 6 </action> 7 </package> 8 </struts>
4、新建一个lojin.jsp文件
1 <body> 2 <form method="post" action="<%=request.getContextPath() %>/user/userAction" > 3 <table> 4 <tr> 5 <td>用户名:</td> 6 <td><input type="text" name="userName" value=""/></td> 7 </tr> 8 <tr> 9 <td>性 别:</td> 10 <td>男<input type="radio" name="sex" value="男"/> 女<input type="radio" name="sex" value="女"/></td> 11 </tr> 12 <tr> 13 <td>密 码:</td> 14 <td><input type="password" name="password" value=""/></td> 15 </tr> 16 <tr> 17 <td><input type="submit" value="登陆"/></td> 18 <td><input type="reset" value="重置"/></td> 19 </tr> 20 </table> 21 </form> 22 </body>
5、新建一个main.jsp文件,<body>标签中的类容为:<body> 登陆成功!<br> </body>。
6、在action包中新建一个UserAction类(注意UserAction类要继承ActionSupport类,并实现ModelDriven接口):
1 public class UserAction extends ActionSupport implements ModelDriven<UserBean>{ 2 private UserBean user; 3 UserService service ; 4 public String login(){ 5 System.out.println("--------------"+user); 6 return SUCCESS; 7 } 8 public void setService(UserService service) { 9 this.service = service; 10 } 11 public UserBean getModel() { 12 this.user = new UserBean(); 13 return user; 14 } 15 }
7、配置好tomcat服务器后,进入login.jsp页面后,点击登录按钮,页面能成功跳转到man.jsp页面则表示Struts2已配置成功。
二、配置Spring:
1、将Spring需要的基本jar包引入到lib下面(注意宁少勿多的原则),将applicationContext.xml文件引入到src目录下面,并清空xml文件中原有的类容。在web.xml文件中添加下面的类容用来配置监听和加载applicationContext.xml文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" 3 xmlns="http://java.sun.com/xml/ns/javaee" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7 <display-name></display-name> 8 <welcome-file-list> 9 <welcome-file>index.jsp</welcome-file> 10 </welcome-file-list> 11 12 <context-param> 13 <param-name>contextConfigLocation</param-name> 14 <param-value> 15 <!-- 注意:多个 .xml 文件中间用逗号分开 --> 16 classpath:applicationContext.xml 17 </param-value> 18 </context-param> 19 <!-- ********************************** --> 20 <filter> 21 <filter-name>struts2</filter-name> 22 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 23 </filter> 24 <filter-mapping> 25 <filter-name>struts2</filter-name> 26 <url-pattern>/*</url-pattern> 27 </filter-mapping> 28 <!-- ********************************** --> 29 30 <!-- 监听 --> 31 <listener> 32 <listener-class> 33 org.springframework.web.context.ContextLoaderListener 34 </listener-class> 35 </listener> 36 </web-app>
2、编辑applicationContext.xml中的类容:
1 <bean id="userDao" class="com.st.dao.UserDaoIm"> 2 </bean> 3 <bean id="userService" class="com.st.service.UserServiceIm"> 4 <property name="dao" ref="userDao" /> 5 </bean> 6 <bean id="userAction" class="com.st.action.UserAction"> 7 <property name="service" ref="userService"/> 8 </bean>
3、现在因为有了Spring,所以UserAction这个类将由Spring的容器生成,所以在struts.xml文件中的UserAction这个类就直接可以使用了,故修改struts.xml文件中的内容为:
1 <package name="user" namespace="/user" extends="struts-default" > 2 <!-- 注意:现在的class引用的是applicationContext.xml中的userAction --> 3 <action name="userAction" class="userAction" method="login"> 4 <result name="success">/main.jsp</result> 5 <result name="error">/index.jsp</result> 6 </action> 7 </package>
4、修改UserAction中的类容,使dao-service-action层之间存在联系(即模拟了一个用户登录的过程):
1 public class UserAction extends ActionSupport implements ModelDriven<UserBean>{ 2 private UserBean user; 3 private UserService service ; 4 5 public String login(){ 6 service.queryUser(user); 7 return SUCCESS; 8 } 9 public void setService(UserService service) { 10 this.service = service; 11 } 12 13 public UserBean getModel() { 14 this.user = new UserBean(); 15 16 return user; 17 } 18 }
5、现在启动Tomcat服务器,他会报这样一个错误:
Caused by: Action class [userAction] not found - action - file:/D:/JAVA/JAVA/tomcat/tomcat-7.0.65-windows-x64/apache-tomcat-7.0.65/webapps/Spring_Struts2/WEB-INF/classes/struts.xml:9:68
即struts.xml文件中的第9行中找不到userAction这个类,这是因为Spring个Struts之间还没有建立相应的联系,这时引入一个“struts2-spring-plugin-2.1.8.1.jar”包(在Struts2里面有),即链接Spring的和Struts的支持包。这时在开启服务器,如果还有缺少的jar包按照提示引入。
6、在浏览器中打开login.jsp页面,填写相应的登陆信息后按登录按钮,如果页面跳转成功,且在控制台打印了UserDaoIm中的提示信息,则表示Spring和Struts2的融合成功。
可以看下UserDaoIm中的类容为:
按登录按钮后控制台打印的信息为: