Struts2----带参数转发到JSP

来源:互联网 发布:网络机顶盒哪个最好 编辑:程序博客网 时间:2024/06/08 01:39

struts.xml

 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.     <constant name="struts.devMode" value="true" />  
  8.     <package name="user" namespace="/user" extends="struts-default">  
  9.   
  10.         <action name="user" class="com.pegasus.web.UserAction">  
  11.             <!-- 1.result 的类型为 rederect -->  
  12.             <!-- 2.转发到的地址后边加上参数 -->  
  13.             <result type="redirect">/user_success.jsp?t=${type}</result>  
  14.         </action>  
  15.     </package>  
  16.   
  17. </struts>  

 另一种写法

struts.xml中的配置

[html] view plaincopy
  1. <action name="list" class="com.dev.action.HelloWorldAction"  
  2.             method="execute">  
  3.             <result name="success" type="redirect">  
  4.                 <param name="location">/employeeAdd.jsp</param>    
  5.                 <param name="username">${username}</param>    
  6.             </result>  
  7.         </action>  


index.jsp

 

Html代码  收藏代码
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3.   
  4. <% String context = request.getContextPath(); %>  
  5.   
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  7. <html xmlns="http://www.w3.org/1999/xhtml">  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />  
  10. <title>Insert title here</title>  
  11. </head>  
  12. <body>  
  13. 向结果传参数  
  14. <ol>  
  15.     <li><a href="user/user?type=1">传参数</a></li>  
  16. </ol>  
  17.       
  18. </body>  
  19. </html>  
 

user_success.jsp

 

Html代码  收藏代码
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3.     <%@taglib uri="/struts-tags" prefix="s" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />  
  8. <title>UserSuccess</title>  
  9. </head>  
  10. <body>  
  11.     User Success!  
  12.     <!-- 通过<s:property>接受并处理参数 -->  
  13.     from valuestack: <s:property value="t"/><br/>  
  14.     <!--  -->  
  15.     from actioncontext: <s:property value="#parameters.t"/>  
  16.     <s:debug></s:debug>  
  17. </body>  
  18. </html>  

 

UserAction.java

 Action必须写get,set方法

Java代码  收藏代码
  1. package com.pegasus.web;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class UserAction extends ActionSupport {  
  6.     private int type;  
  7.       
  8.     public int getType() {  
  9.         return type;  
  10.     }  
  11.   
  12.     public void setType(int type) {  
  13.         this.type = type;  
  14.     }  
  15.   
  16.     public String execute() throws Exception {  
  17.         return "success";  
  18.     }  
  19.   
  20. }  

使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下Struts2的拦截器。找到了原因:给一个Acton配置一个自定义拦截器后,此action就无法使用框架默认的拦截器栈了,这就导致前后台数据传输无效。
           解决方法一般有两种:
           一、显示的使用默认拦截器

<action name="enterSystem_*" class="enterSystemManager" method="{1}">                   <!-- 使用拦截器:进行权限检查 -->                   <interceptor-ref name="defaultStack" />                   <interceptor-ref name="autority" />                     <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result>                   <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result>    </action>  

二、使用<interceptor-ref name="params" />让参数先传递

<action name="enterSystem_*" class="enterSystemManager" method="{1}">                 <!-- 使用拦截器:进行权限检查 -->                 <interceptor-ref name="params" />                 <interceptor-ref name="autority" />                   <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result>                 <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result>    </action>  









0 0
原创粉丝点击