struts2 action以及页面跳转

一、页面跳转

1. struts2中从WEB-INF下的页面直接超链接到WebRoot目录下的页面,

jsp页面中可以设置如下:

假设当前路径为http://127.0.0.1:8088/LYDF/department/departmentList.action,执行超链接“HomePate”后跳转到http://127.0.0.1:8088/LYDF/main.jsp路径,即WebRoot目录下main.jsp页面。

           <a href="main.jsp">HomePage</a>

           <a href="${pageContext.request.contextPath}/main.jsp">HomePage</a>,

两种写法会达到同样的效果。


2.  当希望通过点击按钮或超链接后直接跳转到一个指定页面时,页面设置可以如下:

             <input  type="button"  onclick="location='toAdd.action'"  value="添加"/>

              或<a  href="toAdd.action">添加</a>

 

   配置文件struts.xml中可以设置如下:

              <package  name="department"  extents="struts-default">

                     <action   name="toAdd">

                               <result>/WEB-INF/department/department_add.jsp</result>

                      </action>

                             ...

               </package>

 此处, action 不写class和 method ,result 不写 name 。


二、action跳转

action之间的跳转,是通过指定result的类型,实现的。

(1)type="dispatcher" 为默认,用于jsp页面跳转
<result name="success">/index.jsp</result> 
完整的写法为: 
<result name="success" type="dispatcher"> 
    <param name="location">/index.jsp</param> 
</result>

(2)type="redirect" 重定向到jsp、action、外部网址

<result name="success" type="redirect">/index.jsp</result> 
<result name="success" type="redirect">/login.do</result> 
<result name="success" type="redirect">http://www.baidu.com</result>

type="redirect" 重定向是把一个http返回码(SUCCESS)以及返回的页面位置重新发给服务器,由web服务器产生一个新的HTTP请求,产生新的线程,保存在原Action中的数据无法访问。如果需要访问,则在action中带参数,参数为一个OGNL表达式,此时该变量必须在前action中有set/get方法,使用${变量名}即可访问到该数据。

参数之间必须使用&amp;   。&amp;是&在xml中转义字符

重定向时带参数处理方法:

1.type="redirect": 
<result name="success" type="redirect">/login.do?userId=${userId }&amp;name=${userName }</result> 
2.type="redirect-action": 
见(3)

 

(3)type="redirect-action" 重定向到另外一个action 

<result name="success" type="redirect-action"> 
    <param name="actionName">login.do</param> // 重定向action名
    <param name="userId">userId</param>   //带的参数

      <param name="name">userName</param>

</result>

 

(4)type="chain" 用于action跳转。

用于把相关的几个action连接起来,共同完成一个功能。处于chain中的action属于同一个http请求,共享一个ActionContext。所以仍可以在跳转后的action中通过获取ActionContext获取request。

<action name="action1" class="org.Action1"> 
    <result name="success" type="chain">action2.do</result> 
</action> 
<action name="action2" class="org.Action2"> 
    <result name="success">login.jsp</result> 
</action>

若action不在同一个package下,需要配置命名空间这个参数。如下

       

  • <package name="resultType" namespace="/r" extends="struts-default">
  • <action name="r1" >
  • <result type="chain">
  • <param name="actionName">r2</param>
  • <param name="namespace">/pp</param>
  • <param name="method">method123</param>
  • </result>
  • </action>
  • </package>


  • <package name="paramsRedirect" namespace="/pp"extends="struts-default">
  • <action name="r2">
  • <result>/1.jsp</result>
  • </action>



  • (5)type="plaintextj" 跳转显示源代码

    <result name="err" type="plaintext"> 
        <param name="location">具体的位置</param> 
        <param name="charSet">字符规范(如GBK)</param> 
    </result>



    你可能感兴趣的:(参数,重定向,页面跳转,struts2.0,action跳转)