Struts2學習筆記 - Action篇<配置文件中使用通配符>


有三種方法可以使一個Action處理多個請求

  1. 動態方法調用DMI
  2. 定義邏輯Acton
  3. 在配置文件中使用通配符

這里就說一下在配置文件中使用通配符,這里的關鍵就是struts.xml配置文件,在最簡單的配置當中,我們只需要寫一個Action,但是一個Action只能對應一種處理方式,我們只需在Action的類中實現execute的方法即可,如下面的代碼

package struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class Sample extends ActionSupport {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    @Override
    public String execute() throws Exception {
        //
        return SUCCESS;
    }

}

如果需要一個Action類處理多個業務,那就需要用到以上三種方法,第一種方法只需要關注請求語句就行,第二種方法需要關注struts.xml配置文件,而這篇文章關注的也是配置文件

只需要把通配符寫上就能實現多任務處理,如下面的配置,在這段配置可以看到一個test_*,{1}和result_{1}.jsp,例如:請求是test_page1,那么它對應的方法就是page1,對應返回的頁面是result_page1.jsp,就這么簡單(注意!!!,這里是區分大小寫的,意思就是,例如:在頁面當中aciton="Hello",那么在action類當中的方法名也要大寫,public void Hello(),返回頁面也要對應大寫,Hello.jsp,如果這里使用hello.jsp,會報404找不到頁面)

<action name="test_*" class="struts2.action.TestAction" method="{1}">
     <result name="success">result_{1}.jsp</result>
</action>

 

接下來我們來看看完整的例子:

1.請求頁面,這里有兩個按鈕,一個是執行test_page1的action,另一個是執行test_page2的action

//ResultTest.jsp

<%
@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>測試頁面</h1> <s:form action="test_page1"> <s:submit value="測試頁面1"/> </s:form> <s:form action="test_page2"> <s:submit value="測試頁面2"/> </s:form> </body> </html>

 

2.action類

這個類很簡單,就實現了兩個方法,page1和page2的方法,返回值都是success

package struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public String page1() {
        return SUCCESS;
    }
    
    public String page2() {
        return SUCCESS;
    }
    
}

 

3.struts.xml配置

當請求test_page1的時候,就會調用page1的方法,如果是success就返回,result_page1的方法

當請求test_page2的時候,就會調用page2的方法,如果是success就返回,result_page2的方法

<?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>
    <package name="default" extends="struts-default">
        <action name="test_*" class="struts2.action.TestAction" method="{1}">
            <result name="success">result_{1}.jsp</result>
        </action>
    </package>
</struts>

 

4.返回頁面

這里有兩個返回頁,一個是result_page1.jsp,另一個是result_page2.jsp,兩個頁面的內容一樣,只是文字上有所不同,所以這里就不把兩個頁的代碼貼出來,自己改改就行了

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>測試成功頁1</h1>
</body>
</html>

 


免責聲明!

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



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