SSH:Struts2框架(搭建運行第一個程序)

 一、將struts 2的lib文件夾下地commons-fileupload.jar、commons-io.jar、freemarker.jar、javassist.jar、ognl.jar、struts2-core.jar和xwork-core.jar必需類複製到web應用的WEB-INF/lib路徑下。如果需要在web應用中使用struts 2的更多特性,則需要將相應的JAR文件複製到web應用的WEB-INF/lib路徑下。

   

          二、編輯Web應用的web.xml配置文件,配置Struts 2 的核心Filter。在web.xml中定義核心Filter是來攔截用戶請求。

                 由於Web應用是基於請求/響應構建的應用,所以不管哪個MVC Web框架,都需要在web.xml中配置該框架的核心filter或者servlet,這樣纔可以讓該框架介入Web應用中。

                下面是struts 2 在web.xml文件中的配置片段:

  1. <?xml version="1.0" encoding="GBK"?>  
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  5.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">  
  6.     <!-- 定義Struts 2的核心Filter -->  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  10.     </filter>  
  11.       
  12.     <!-- 讓Struts 2的核心Filter攔截所有請求 -->  
  13.     <filter-mapping>  
  14.         <filter-name>struts2</filter-name>  
  15.         <url-pattern>/*</url-pattern>  
  16.     </filter-mapping>  
  17. </web-app>  

      

          三、如果需要以POST方式提交請求,則需定義包含表單數據的jsp頁面。若果僅僅只是以GET方式放送請求,則不需要。

     

          四、定義處理用戶請求的Action類

               這是所有MVC框架中必不可少的。因爲Action就是MVC框架中的控制器。該控制器負責調用model裏的方法來處理請求。

               MVC框架的底層機制是:核心servlet或者Filter接收到用戶的請求後,通常會對用戶請求進行簡單的預處理,例如解析、封裝參數等,然後通過反射來創建Action實例,並調用Action的指定方法來處理用戶的請求。

              但是當Servlet或Filter攔截請求後,它如何知道創建那個Action的實例?這裏一般有兩種方法可以解決

              1:利用配置文件。如:我們可以配置login.action對應使用LoginAction類。這樣就可以讓MVC框架知道創建那個Action的實例了。

               2:利用約定。如:我們可以約定xxx.action總是對應XxxAction類。如果核心控制器收到請求後,將會調用相應的Action類來處理用戶請求。

         

          五、配置Action

                配置Action就是指定哪個請求對應哪個、Action進行處理,從而讓核心控制器根據配置來創建合適的Action實例,並調用該Action 的業務控制方法。               

  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
  5.     <!-- 指定struts 2的配置文件的跟元素  -->  
  6. <struts>    
  7.     <!-- 所有的Action定義都應該放在package下 -->  
  8.     <package name="mystruts" extends="struts-default">  
  9.         <action name="login" class="com.action.LoginAction" method="execute">  
  10.         </action>  
  11.     </package>  
  12. </struts>   

 

          六、配置處理結果和物理視圖資源之間的對應關係

               當Action處理用戶請求結束後,通常會返回一個處理結果。我們可以認爲該名稱是邏輯視圖名,這個羅建視圖名需要和指定物理視圖資源關聯才有價值。所以我們還需要配置處理結果之間的對應關係。 

  1. <action name="login" class="com.action.LoginAction" method="execute">  
  2.     <!-- 定義三個邏輯視圖和物理資源之間的映射 -->  
  3.     <result name="input">/login.jsp</result>  
  4.     <result name="error">/error.jsp</result>  
  5.     <result name="success">/success.jsp</result>  
  6. </action>  

 


          七、編寫視圖資源

 

            經過這個幾個步驟,我們基本可以完成一個struts 2 的配置

 

         下面一個完整的struts 2 的實例

          1、配置核心Filter

               代碼和上面的一樣

          2、編寫jsp頁面:命名爲login.jsp;實現基本的登陸功能

  1. <%@ page language="java" import="java.util.*"  pageEncoding="utf-8"%>  
  2. <html>  
  3.   <head>  
  4.     <title>用戶登陸</title>  
  5.   </head>  
  6.     
  7.   <body>  
  8.     <form action="login">               
  9.           用戶名:<input type="text" name="username" />              
  10.           密  碼:<input type="password" name="password" />             
  11.           <input type="submit" value="登陸">         
  12.     </form>  
  13.   </body>  
  14. </html>  


        3、配置Action  。命名爲struts.xml  並放在src的目錄下

  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
  5.     <!-- 指定struts 2的配置文件的跟元素  -->  
  6. <struts>    
  7.     <!-- 所有的Action定義都應該放在package下 -->  
  8.     <package name="mystruts" extends="struts-default">  
  9.         <action name="login" class="com.action.LoginAction" method="execute">  
  10.             <!-- 定義三個邏輯視圖和物理資源之間的映射 -->  
  11.             <result name="input">/login.jsp</result>  
  12.             <result name="error">/error.jsp</result>  
  13.             <result name="success">/success.jsp</result>  
  14.         </action>  
  15.     </package>  
  16. </struts>  


          4、編寫處理用戶請求的Action類

  1. package com.action;  
  2.   
  3. public class LoginAction{  
  4.     private String username;  
  5.     private String password;  
  6.     public String getUsername() {  
  7.         return username;  
  8.     }  
  9.     public void setUsername(String username) {  
  10.         this.username = username;  
  11.     }  
  12.     public String getPassword() {  
  13.         return password;  
  14.     }  
  15.     public void setPassword(String password) {  
  16.         this.password = password;  
  17.     }  
  18.       
  19.     //定義處理用戶請求的login方法  
  20.     public String execute(){  
  21.         //通過ActionContext()設置session範圍的屬性  
  22.         ActionContext.getContext.getSession().put("user", getUsername());  
  23.           
  24.         if(getUsername().equals("chentmt")&&getPassword().equals("chenssy")){  
  25.             //通過ActionContext()設置reque範圍的屬性  
  26.             return "success";  
  27.         }  
  28.         else {  
  29.             return "error";  
  30.         }  
  31.     }  
  32. }  



          配置這些資源後,我們就可以通過瀏覽器來訪問了:http://localhost:8080/struts2_01/login.jsp可以看到如下界面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章