Struts2的常見的配置文件介紹


1:package 定義一個包。 包作用,管理action。 (通常,一個業務模板用一個包)
  常見屬性及其說明:

    (1)name  包的名字;以方便在其他處引用此包,此屬性是必須的。 包名不能重復;       

    (2)extends 當前包繼承自哪個包,用於聲明繼承的包。在struts中,包一定要繼承struts-default ;

        struts-default在struts-default.xml中定的包

   (3)abstract  表示當前包為抽象包; 抽象包中不能有action的定義,否則運行時期報錯
                    abstract=true  只有當當前的包被其他包繼承時候才用!
                    如:
                        <package name="basePackage" extends="struts-default" abstract="true"></package>
                        <package name="user" extends="basePackage">

   (4) namespace   指定名稱空間,也就是訪問此包下的Action需要訪問的路徑,默認為"/"
                  作為路徑的一部分
                  訪問路徑=  http://localhost:8080/項目/名稱空間/ActionName
2:action   配置請求路徑與Action類的映射關系,                                        常見屬性及其說明:
         (1)name  請求路徑名稱,用於配置Action對象被請求的URL映射
         (2)class 請求處理的aciton類的全名
         (3)method 請求處理方法,設置請求Action對象時,調用對象的哪一個方法。       
3:result                                                          常見屬性及其說明:
       (1)name  action處理方法返回值 。
       (2)type  跳轉的結果類型,用於設置返回結果的類型,如請求轉發,重定向等。
       (3)標簽體中指定跳轉的頁面。


 簡單的配置如下所示:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- 生命包 -->
 8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
 9         <!-- 定義action -->
10         <action name="hello" class="com.bie.HelloAction" method="execute">
11             <!-- 顯示成功的jsp頁面 -->
12             <result name="success" type="dispatcher">success.jsp</result>
13         </action>
14     </package>
15 </struts>

 4:通配符實現簡化配置

第一步:引包,略過,前面已經寫過

第二步:配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>struts2_20170219</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12   
13   <!-- 引入struts2的核心過濾器 -->
14   <filter>
15       <!-- 過濾器的名稱 -->
16       <filter-name>struts2</filter-name>
17       <!-- 過濾器類 -->
18       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
19   </filter>
20   <filter-mapping>
21       <!-- 過濾器名稱 -->
22       <filter-name>struts2</filter-name>
23       <!-- 過濾器映射 -->
24       <url-pattern>/*</url-pattern>
25   </filter-mapping>
26 </web-app>

第三步:開發action

 1 package com.bie;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 /** 
 6 * @author BieHongLi 
 7 * @version 創建時間:2017年2月20日 下午1:29:55 
 8 * 
 9 */
10 public class RegisterAction extends ActionSupport{
11 
12     private static final long serialVersionUID = 1L;
13 
14     public String login(){
15         System.out.println("登陸的方法");
16         return SUCCESS;
17     }
18     
19     public String register(){
20         System.out.println("注冊的方法");
21         return SUCCESS;
22     }
23 }

第四步:配置struts.xml,先使用了普通的方法,后使用了通配符進行配置;

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 4     "http://struts.apache.org/dtds/struts-2.0.dtd">
 5 
 6 <struts>
 7     <!-- 聲明包 -->
 8     <package name="helloWorld" extends="struts-default" abstract="false" namespace="/">
 9         <!-- 定義action -->
10         <action name="hello" class="com.bie.HelloAction" method="execute">
11             <!-- 顯示成功的jsp頁面 -->
12             <result name="success" type="dispatcher">success.jsp</result>
13         </action>
14     </package>
15     
16     <!-- 聲明包 -->
17     <package name="login" extends="struts-default" abstract="false" namespace="/">
18         <action name="login" class="com.bie.RegisterAction" method="login">
19             <result name="success">success.jsp</result>
20         </action>
21         
22         <action name="register" class="com.bie.RegisterAction" method="register">
23             <result name="success">success.jsp</result>
24         </action>
25     </package>
26     
27     <!-- 通配符的實現簡單配置 -->
28     <package name="loginRegister" extends="struts-default" abstract="false" namespace="/">
29         <action name="login_*_*" class="com.bie.RegisterAction" method="{1}">
30              <result name="success">success.jsp</result>
31         </action>
32     </package>
33 </struts>

結果如下,訪問的時候如此訪問即可。


5:struts-default.xml詳解
目錄:struts-core.jar/struts-default.xml詳解
內容:
    (1):bean節點指定了struts在允許的時候創建的對象類型
    (2):指定struts-default包【用戶寫的package一樣要繼承此包】
    (3):package struts-default中定義了:
        a:跳轉的結果類型:
            dispatcher轉化,不指定默認為轉發;
            redirect重定向;
            redirectAction重定向到action資源;
            stream文件下載的時候使用;
        b:定義了所有的攔截器;

        定義了32個攔截器,
    為了攔截器引用方便,可以通過定義棧的方式引用攔截器
    此時如果引用了棧,棧中的攔截器都會被引用;
        c:默認執行的攔截器棧,默認執行的action;
            <default-interceptor-ref name="defaultStack"/>
            <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />


6:攔截器,攔截器功能與過濾器功能類似
相同點和不同點:
    共同點:都是攔截資源的;
    不同點:攔截器,攔截所有資源都可以,包括.jsp,servlet,css,js,img等等,過濾器是servlet的概念,可已在struts中使用和servlet中使用;
               過濾器,只攔截action請求;是struts的概念,攔截器只在struts2中使用。          


7:struts2的執行流程
    服務器啟動
    (1):加載項目web.xml
    (2):創建struts核心過濾器,執行filter--->init()方法
        struts-default.xml---》核心功能的初始化;
        struts-plugin.xml---》struts的相關插件;
        struts.xml用戶編寫的配置文件;
    訪問:
        (3):用戶訪問action,服務器根據訪問路徑名稱,找到對應的action配置,創建action對象。
        (4):執行默認的攔截器棧中定義的18個攔截器。
        (5):執行action的業務處理方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM