Struts2之訪問路徑


  上一篇已經和大家分享了關於Struts2命名空間和Action的三種創建方式,本篇我們接着命名空間的內容,來一起探討一下關於Struts2的訪問路徑問題,何為訪問路徑,就是指當我們在瀏覽器輸入地址,點擊回車,向服務器發送請求,這個訪問路徑就是今天我們要討論的知識點,我們以上一篇的訪問路徑為例,為大家分析一下Struts2訪問路徑的本質。對於這個url路徑http://localhost:8080/Struts/hello/login,我來分析一下他的組成,http://這是http請求協議;localhost這是本地訪問地址,等同於127.0.0.1,;8080:是我們本地服務器的訪問端口;Struts:使我們的工程名稱;hello:使我們的命名空間;login:是我們的命名空間下的Action名稱。把這些組合在一起就是我們的Struts2 Action的請求方式,當然這里如果我們的命名空間下設置了默認Action,最后的Action名稱可以沒有。對於Struts2的訪問路徑就為大家介紹這么多,下面我們一起來學習一下DMI動態方法綁定和通配符的使用。

  首先我們先來探討一下DMI動態方法綁定,在上一篇的內容里面我們訪問Action中的方法的方式,均是通過在struts.xml文件里面默認設置好的,這樣很不方便我們的接口調用人員使用,那如何進行動態方法綁定呢?其實很簡單,就以上面的url路徑為例,我們看一下如何在url端進行訪問路徑的動態綁定。上面的接口訪問的是login Action下的login方法,我們就可以這樣來寫:http://localhost:8080/Struts/hello/login!login,這樣我們的程序就可以動態進行Action訪問方法綁定了,大家看出來嗎?Struts2里面用!將Action和Action中的待訪問方法進行區分。

  動態綁定是不是很簡單,當然一些小伙伴可能感覺url地址里面加個“!”怪怪的,還有沒有其他方法來進行動態方法綁定呢?答案是必須滴,我們還可以通過通配符配置,來完成上面的動態方法綁定。下面我們就用一個例子,來把今天學習的知識串聯起來:

  

  首先看一下我們的struts.xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="true" /><!--在使用DMI動態方法調用時,設置為true,否則會出現調用異常問題-->
    <constant name="struts.devMode" value="true" />
    
    <!-- 常規Action配置 -->
    <package name="hell" namespace="/hell" extends="struts-default">
        <!-- 訪問控制 -->
        <action name="index" class="com.edu.action.Hell">
            <result>
                /hello.jsp
            </result>
            <result name="error">
                /error.jsp
            </result>
        </action>
    </package>
    
    <!-- 使用通配符進行動態方法綁定的Action配置 -->
    <package name="user" namespace="/user" extends="struts-default">
        <!-- 訪問控制 -->
        <action name="index" class="com.edu.action.UserAction">
            <result>
                /index.jsp
            </result>
        </action>
        <action name="*_*" class="com.edu.action.{1}Action" method="{2}">
            <result>
                /{2}.jsp
            </result>
        </action>
    </package>

    <!-- Add packages here -->

</struts>

  UserAction.class代碼:

public class UserAction extends ActionSupport implements UserManage{

    public String add() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String del() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String getUser() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String getUserList() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }

    public String update() {
        // TODO Auto-generated method stub
        return SUCCESS;
    }
    
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return SUCCESS;
    }
    
}

  Hell.class

public class Hell extends ActionSupport{

    public String execute() throws Exception {
        return SUCCESS;
    }
    
    public String addLogin(){
        return ERROR;
    }
}

  下面我們就可以進行測試了,http://localhost:8080/Struts2/user/User_add

  

  下面我們來一起分析一下上面的請求地址:http://localhost:8080/Struts2/user/User_add,命名空間之前的部分我就不再贅述,如果你有不明白的地方,可以異步頂部,看一上面的解釋,下面我們重點來看一下User_add,這是什么意思呢?我們向上看一下我們的struts.xml的配置,我們在Action name配置的是*_*,然后在Action綁定Action類是用的是第一個*識別到的參數,動態綁定方法時使用的是第二個*綁定的參數,這里的“_”就是Struts2進行參數綁定的分割符。有過sql操作的朋友一定對於*不陌生,我們現在就暫定它為占位。

  對於DMI動態方法綁定,這里我就以常規配置的Action為大家進行一下演示,訪問路徑為:http://localhost:8080/Struts2/hell/index!addLogin

  好了,到這里關於Struts2路徑訪問和DMI動態方法綁定以及通配符的知識就為大家介紹完了。后續內容持續更新中。。。


免責聲明!

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



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