struts2的高級配置

動態方法的開啓

2種方法

1、<action name="helloAction_*" class="com.hd.action.hello" method=”{1}”>

*號佔位符

2.開啓常量

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

Method不寫,然後在地址欄地址名和方法名用!號隔開

注意:

在高版本的struts2不能使用

<allowed-methods>hello</allowed-methods>

默認設置

屬性的默認值

<!—

method 如果不寫 自動匹配該類中的execute方法
    class  默認的是ActionSupport
    result  -> name 不寫  默認的是success
               type       默認的是轉發
-->

默認訪問的action

<default-action-ref name="defaultAction"></default-action-ref>

Struts2的訪問流程

1、

到達web.xml  struts2過濾器

過濾器會自動過濾src目錄下的struts.xml文件

進入到該類,並執行對應的方法

返回結果

   Struts.xml中

讀取result中的type屬性   打開後面的頁面

Action類的創建

1、Pojo類

2、繼承 ActionSupport  比接口多了一些action的優化   推薦使用

3、實現接口:Action接口

 

 

Struts2接收參數

1、struts2是一個線程安全

它的生命週期是每次請求到來,都會重新創建action

 

接收參數的方式

1、屬性驅動

在action類中創建屬性,屬性的名字必須和參數的名字保持一致

自動接收參數

給該屬性創建對應的get-set方法

2、對象驅動

屬性中添加對象並設置get-set方法

在傳參數過程中,必須使用對象導航的方式

對象user  參數  user.name 這樣name屬性會自動封裝到對象user中

3、模型驅動

實現modelDriver<Object>接口  泛型傳遞要轉換的對象類型

實現它的方法,  方法中有個返回值,返回對應的屬性

在action彙總定義一個屬性,並給它new出來一個對象

 

模型驅動不能轉換集合, 對象驅動可以轉換集合

 

響應請求

1、轉發  

2、重定向

3、轉發自己的action  chain
<result name="success" type="chain">
    <param name="actionName">toAction_add</param>
    <param name="namespace">/</param>
    <param name="name">${name}</param>
</result>

4、重定向到自己寫的action

<result name="success" type="redirectAction">
    <param name="actionName">toAction_add</param>
    <param name="namespace">/</param>
    <param name="name">${name}</param>
</result>

5ajax

Ajax請求

1、 Servlet常用的對象

request   生命週期  請求到來創建

response 

session   request.getSession()  生命週期  30分鐘後銷燬

servletContext   服務器開啓對象就創建   服務器關閉就銷燬

   2、struts2中action

ActionContext對象

Request原生對象

Response原生對象

ServletContext原生對象

Request域

Session域

ServletContext域    applicationContext

Param 域

Attr域 三合一 (Request域、Session域、ServletContext域)

 

2、steam流的方式

Action中添加屬性 InputStream inputStream 給他添加對應的get-set方法

將json字符串轉化爲字節流並賦值給inputStream

private InputStream inputStream;
@Override
public String execute() throws Exception {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("code",0);
    jsonObject.put("msg","你好,訪問成功");
    String str = jsonObject.toJSONString();
    inputStream = new ByteArrayInputStream(str.getBytes("GBK"));
    return super.execute();
}

public InputStream getInputStream() {
    return inputStream;
}

public void setInputStream(InputStream inputStream) {
    this.inputStream = inputStream;
}

在配置文件中設置type 爲steam

加一個響應的的參數就是這個屬性

<action name="steamAction" class="com.hd.SteamAction.SteamAction">
    <result name="success" type="stream">
        <param name="inputStream">inputStream</param>
    </result>
</action>

 

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