struts.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">
- <struts>
- <constant name="struts.devMode" value="true" />
- <package name="user" namespace="/user" extends="struts-default">
- <action name="user" class="com.pegasus.web.UserAction">
- <!-- 1.result 的类型为 rederect -->
- <!-- 2.转发到的地址后边加上参数 -->
- <result type="redirect">/user_success.jsp?t=${type}</result>
- </action>
- </package>
- </struts>
另一种写法
struts.xml中的配置
- <action name="list" class="com.dev.action.HelloWorldAction"
- method="execute">
- <result name="success" type="redirect">
- <param name="location">/employeeAdd.jsp</param>
- <param name="username">${username}</param>
- </result>
- </action>
index.jsp
- <%@ page language="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <% String context = request.getContextPath(); %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
- <title>Insert title here</title>
- </head>
- <body>
- 向结果传参数
- <ol>
- <li><a href="user/user?type=1">传参数</a></li>
- </ol>
- </body>
- </html>
user_success.jsp
- <%@ page language="java" contentType="text/html; charset=GB18030"
- pageEncoding="GB18030"%>
- <%@taglib uri="/struts-tags" prefix="s" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
- <title>UserSuccess</title>
- </head>
- <body>
- User Success!
- <!-- 通过<s:property>接受并处理参数 -->
- from valuestack: <s:property value="t"/><br/>
- <!-- -->
- from actioncontext: <s:property value="#parameters.t"/>
- <s:debug></s:debug>
- </body>
- </html>
UserAction.java
Action必须写get,set方法
- package com.pegasus.web;
- import com.opensymphony.xwork2.ActionSupport;
- public class UserAction extends ActionSupport {
- private int type;
- public int getType() {
- return type;
- }
- public void setType(int type) {
- this.type = type;
- }
- public String execute() throws Exception {
- return "success";
- }
- }
使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下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>