3.一、Spring和Struts2的結合使用

1、配置Struts2:java

  一、新建一個web項目,在src目錄下新建com.st.bean/dao/service/action包,並在該包下面添加相應的接口及接口的實現類:web

    a)、在bean下新建一個UserBean,包含userName、password、sex屬性名,並添加set、get方法及toString方法。spring

    b)、dao層新建UserDao接口,並添加該接口是實現類UserDaoIm:apache

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:windows

 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 }

  二、在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   <!-- **********************************  -->

  三、複製一個struts.xml文件到src目錄下,並編輯<package>標籤中的類容:tomcat

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>

  四、新建一個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>&nbsp;別:</td>
10                <td><input type="radio" name="sex" value="男"/>&nbsp;&nbsp;<input type="radio" name="sex" value="女"/></td>
11            </tr>
12            <tr>
13                <td>&nbsp;碼:</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>

  五、新建一個main.jsp文件,<body>標籤中的類容爲:<body> 登錄成功!<br> </body>app

  六、在action包中新建一個UserAction類(注意UserAction類要繼承ActionSupport類,並實現ModelDriven接口):webapp

 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 }

  七、配置好tomcat服務器後,進入login.jsp頁面後,點擊登陸按鈕,頁面能成功跳轉到man.jsp頁面則表示Struts2已配置成功。

2、配置Spring:

  一、將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>

  二、編輯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>

  三、如今由於有了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>

  四、修改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 }

  五、如今啓動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包按照提示引入。

  六、在瀏覽器中打開login.jsp頁面,填寫相應的登錄信息後按登陸按鈕,若是頁面跳轉成功,且在控制檯打印了UserDaoIm中的提示信息,則表示Spring和Struts2的融合成功。

  能夠看下UserDaoIm中的類容爲:

  

  按登陸按鈕後控制檯打印的信息爲:

  

相關文章
相關標籤/搜索