2013-2-27

分析的servlet

   客戶端--->web容器-->web.xml -->servlet來處理 ----->model-->數據庫

     <--------------------------------|

request.setAttribute(“username”,username);

//轉發

request.getDis(“manager/index.jps”).forward(request,response);

       ---jsp頁面中  ${username}

//重定向

response.sendRiedirect();

分析 struts2

客戶端----->web容器--->web.xml-->struts2過濾器--->struts.xml--->Action--->model--->數據庫

 <------------------------------------------------------------------------------------|

Action  要想把數據 傳遞給jsp

     private String username;

      public String getUsername(){return username;}

     通過什麼方式傳遞 

  

   <result 

type="dispatcher" name="success">/manager/index.jsp</result>

Jsp =---〉 ${username}

Struts2中結果集類型

   

1、 每個action方法都返回一個String類型的值,struts一次請求返回什麼值是由這個值確定的。

2、 在配置文件中,每一個action元素的配置都必須有result元素,每一個result對應一個action的返回值。

3、 Result有兩個屬性:

name:結果的名字,和action中的返回值一樣,默認值爲success;

type:響應結果類型,默認值爲dispatcher.

m

在struts2-core-2.3.8.jar下面找到struts-default.xml文件中,如下面所示:

 

            

說明:

1、 從上述可以看出總共10種類型

2、 默認類型爲ServletDispatcherResult即轉發。

3、 結果類型可以是這10種結果類型的任意一種。

Dispatcher類型

(1)、 說明

Dispatcher類型是最常用的結果類型,也是struts框架默認的結果類型。

(2)、 例子

頁面參照:/manager/index.jsp

Action參照:AdminAction

配置文件:struts.xml

在配置文件中,可以有兩種寫法:

下面的圖說明了location的來歷:

查看源碼:

  }

父類中:

 

有一個屬性 並且提供了set方法

  

}

6.2.2 Redirect類型

(1)、 說明

Redirect屬於重定向。如果用redirect類型,則在reuqest作用域的值不能傳遞到前臺。

redirectAction類型

(1)、說明

1、 把結果類型重新定向到action

2、 可以接受兩種參數

a) actionName: action的名字

b) namespace:命名空間

(2)、 例子

請求的路徑

http://localhost:8080/project/csdn/csdn/delete.action?name=aa

Namespace=”csdn/csdn/”

<package name=”ss” namespace=”/csdn/csdn”>

       <action=”delete”>

</package>

<package name=”test” namespace=”/csdn”>

<action=”delete”>

</package>

<package name=”sss” namespace=””>

   <action=”delete”>

</package>

Action名稱的搜索順序

1、獲得請求路徑的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

2.首先尋找namespace/path1/path2/path3package,如果存在這個package,則在這個package中尋找名字爲testaction,如果不存在這個package則轉步驟3

3.尋找namespace/path1/path2package,如果存在這個package,則在這個package中尋找名字爲testaction,如果不存在這個package,則轉步驟4

4.尋找namespace/path1package,如果存在這個package,則在這個package中尋找名字爲testaction,如果仍然不存在這個package,就去默認的namaspacepackage下面去找名字爲testaction(默認的命名空間爲空字符串"" ),如果還是找不到,頁面提示找不到action

Action原型  struts2

     Prototype 原型     每次請求都會創建一個新的Action對象

   

Servlet 

     

     Singleton 原型     當第一次請求時,創建servlet對象 之後每次都使用該對象即可。

Servlet的生命週期

        創建---init---service---destory

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