天天看點

馬士兵struts2學習筆記(詳細版)

15、23_尚學堂馬士兵_Struts2_子產品包含  

<struts>  

   <constant name="struts.devMode" value="true" />  

   <include file="login.xml" />  

</struts>  

可以将别的寫好的配置檔案直接包含到struts得配置檔案中,友善多人開發避免不必要的配置檔案沖突.  

login.xml  

<?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">  

   <package name="login" extends="struts-default" namespace="/login">  

       <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">  

           <result>/user_login_success.jsp</result>  

       </action>  

   </package>  

16、24_尚學堂馬士兵_Struts2_預設Action  

<package name="default" namespace="/" extends="struts-default">  

        <!-- 當配置檔案中沒有使用者要通路的Aciton的時候,會調用<default-action-ref 所定義的Action --處理錯誤頁面 -->  

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

       <action name="index">  

           <result>/default.jsp</result>  

17、27_尚學堂馬士兵_Struts2_結果類型_result_type_1  

   ResultType的最常用的幾種配置:(四種配置分别代表了四種不同的跳轉方式)  

    <package name="resultTypes" namespace="/r" extends="struts-default">  

       <action name="r1">  

                 <!--type不寫預設的為dispatcher:用伺服器跳轉跳轉到結果頁面--隻能跳轉到頁面,不能跳轉到Action -->  

           <result type="dispatcher">/r1.jsp</result>  

       <action name="r2">  

                 <!--用戶端跳轉的方式跳轉到結果頁面  隻能跳轉到頁面,不能跳轉到Action  -->  

           <result type="redirect">/r2.jsp</result>  

       <action name="r3">  

                 <!--伺服器跳轉的方式跳轉到Action -->  

           <result type="chain">r1</result>  

       <action name="r4">  

                 <!--用戶端跳轉的方式跳轉到Action -->  

           <result type="redirectAction">r2</result>  

<!--當要跳轉的Action在别的包下的時候 應該這樣寫-->  

             <action name="r5">  

              <result type="china">  

                  <parma name="actionName">dashboard</param>  

                  <parma name="namespace">/sesure</param>  

              </result>  

18、30_尚學堂馬士兵_Struts2_Global_Results_全局結果集  

<package name="user" namespace="/user" extends="struts-default">  

<!-- 配置全局的結果集:當傳回的result沒有配置的時候會執行全局結果集的配置-->  

       <global-results>  

           <result name="mainpage">/main.jsp</result>  

       </global-results>  

           <result>/index.jsp</result>  

       </action>    

<!--關鍵字extends的使用:我想在下面的這個配置包中使用上面那個包中的結果集,那麼可以使用extends關鍵字繼承上一個包  

<package name="admin" namespace="/admin" extends="user">  

       <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">  

           <result>/admin.jsp</result>  

17、31_尚學堂馬士兵_Struts2_動态結果集_dynamic_result  

可以在strtus.xml檔案中動态的指定傳回的結果集。  

public class UserAction extends ActionSupport {  

   private int type;  

   private String r;  

   public String getR() {  

       return r;  

   }  

   public void setR(String r) {  

       this.r = r;  

   public int getType() {  

       return type;  

   public void setType(int type) {  

       this.type = type;  

   @Override  

   public String execute() throws Exception {  

       if(type == 1) r="/user_success.jsp";  

       else if (type == 2) r="/user_error.jsp";  

       return "success";  

}  

struts.xml檔案中的配置:  

<package name="user" namespace="/user" extends="struts-default">  

       <action name="user" class="com.bjsxt.struts2.user.action.UserAction">  

<!--可以用${屬性名}的方式取得Action中的屬性,在伺服器端判斷好相應的跳轉路徑然後存到變量裡 然後再struts.xml檔案中用這種方式取出來,可以極大的增加配置檔案的靈活性 -->  

           <result>${r}</result>  

       </action>        

18、32_尚學堂馬士兵_Struts2_帶參數的結果集  

通路連結格式:<a href="user/user?type=1">傳參數</a>  

    當從一個Action跳轉到另一個Action的時候,如果需要傳值并且是伺服器端的跳轉,沒有必要再struts.xml檔案result的跳轉路徑中進行傳值操作,因為多個伺服器端的跳轉,共享的是同一個值棧,可以直接取到,但是如果是用戶端的跳轉(redirect)的方式進行跳轉則需要進行如下的配置:  

                 <!-- 用${}的方式是從值棧取值,注意:不是El表達式 -->  

           <result type="redirect">/user_success.jsp?t=${type}</result>  

但是如果在jsp頁面取出傳輸的值用<s:property value="t"/>是取不到的,因為這種方式是在值棧裡取值而我們跳轉道德是一個jsp頁面不是一個Action是以值棧為空,但是我們可以在ActionContext中進行取值:<s:property value="#parameters.t"/>  

15、23_尚學堂馬士兵_Struts2_子產品包含

<struts>

   <constant name="struts.devMode" value="true" />

   <include file="login.xml" />

</struts>

可以将别的寫好的配置檔案直接包含到struts得配置檔案中,友善多人開發避免不必要的配置檔案沖突.

login.xml

<?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">

   <package name="login" extends="struts-default" namespace="/login">

       <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">

           <result>/user_login_success.jsp</result>

       </action>

   </package>

16、24_尚學堂馬士兵_Struts2_預設Action

<package name="default" namespace="/" extends="struts-default">

        <!-- 當配置檔案中沒有使用者要通路的Aciton的時候,會調用<default-action-ref 所定義的Action --處理錯誤頁面 -->

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

     <action name="index">

      <result>/default.jsp</result>

     </action>

17、27_尚學堂馬士兵_Struts2_結果類型_result_type_1

   ResultType的最常用的幾種配置:(四種配置分别代表了四種不同的跳轉方式)

    <package name="resultTypes" namespace="/r" extends="struts-default">

     <action name="r1">

                 <!--type不寫預設的為dispatcher:用伺服器跳轉跳轉到結果頁面--隻能跳轉到頁面,不能跳轉到Action -->

       <result type="dispatcher">/r1.jsp</result>

     <action name="r2">

                 <!--用戶端跳轉的方式跳轉到結果頁面  隻能跳轉到頁面,不能跳轉到Action  -->

       <result type="redirect">/r2.jsp</result>

     <action name="r3">

                 <!--伺服器跳轉的方式跳轉到Action -->

       <result type="chain">r1</result>

     <action name="r4">

                 <!--用戶端跳轉的方式跳轉到Action -->

       <result type="redirectAction">r2</result>

<!--當要跳轉的Action在别的包下的時候 應該這樣寫-->

             <action name="r5">

              <result type="china">

                  <parma name="actionName">dashboard</param>

                  <parma name="namespace">/sesure</param>

              </result>

18、30_尚學堂馬士兵_Struts2_Global_Results_全局結果集

<package name="user" namespace="/user" extends="struts-default">

<!-- 配置全局的結果集:當傳回的result沒有配置的時候會執行全局結果集的配置-->

     <global-results>

      <result name="mainpage">/main.jsp</result>

     </global-results>

      <result>/index.jsp</result>

     </action>

<!--關鍵字extends的使用:我想在下面的這個配置包中使用上面那個包中的結果集,那麼可以使用extends關鍵字繼承上一個包

<package name="admin" namespace="/admin" extends="user">

     <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">

      <result>/admin.jsp</result>

17、31_尚學堂馬士兵_Struts2_動态結果集_dynamic_result

可以在strtus.xml檔案中動态的指定傳回的結果集。

public class UserAction extends ActionSupport {

 private int type;

 private String r;

 public String getR() {

  return r;

 }

 public void setR(String r) {

  this.r = r;

 public int getType() {

  return type;

 public void setType(int type) {

  this.type = type;

 @Override

 public String execute() throws Exception {

  if(type == 1) r="/user_success.jsp";

  else if (type == 2) r="/user_error.jsp";

  return "success";

}

struts.xml檔案中的配置:

<package name="user" namespace="/user" extends="struts-default">

     <action name="user" class="com.bjsxt.struts2.user.action.UserAction">

<!--可以用${屬性名}的方式取得Action中的屬性,在伺服器端判斷好相應的跳轉路徑然後存到變量裡然後再struts.xml檔案中用這種方式取出來,可以極大的增加配置檔案的靈活性 -->

       <result>${r}</result>

     </action>    

18、32_尚學堂馬士兵_Struts2_帶參數的結果集

通路連結格式:<a href="user/user?type=1">傳參數</a>

    當從一個Action跳轉到另一個Action的時候,如果需要傳值并且是伺服器端的跳轉,沒有必要再struts.xml檔案result的跳轉路徑中進行傳值操作,因為多個伺服器端的跳轉,共享的是同一個值棧,可以直接取到,但是如果是用戶端的跳轉(redirect)的方式進行跳轉則需要進行如下的配置:

                 <!-- 用${}的方式是從值棧取值,注意:不是El表達式 -->

       <result type="redirect">/user_success.jsp?t=${type}</result>

但是如果在jsp頁面取出傳輸的值用<s:property value="t"/>是取不到的,因為這種方式是在值棧裡取值而我們跳轉道德是一個jsp頁面不是一個Action是以值棧為空,但是我們可以在ActionContext中進行取值:<s:property value="#parameters.t"/>