1  redirect、redirectaction和chain 的区别

当使用type=“redirectAction” 或type=“redirect”提交到一个action并且需要传递一个参数时:

使用type=“redirectAction”时,结果就只能写Action的配置名,不能带有后缀:“.action”。

Xml代码

<action name="Login" class="steven.actions.LoginAction">

<result name="success" type="redirectAction">User?u_id=${loginBean.u_id}</result>

</action>

使用type=“redirect”时,结果应是action配置名+后缀名

Xml代码

<action name="Login" class="steven.actions.LoginAction">

<result name="success" type="redirect">User.action?u_id=${loginBean.u_id}</result>

</action>

redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。

redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。

chain:action处理完后转发到一个action,请求参数全部丢失,action处理结果不会丢失

2 Structs2 流程

3 Structs 拦截器

structs2 拦截器是需要继承AbstractInterceptor 类,在xwork-core.jar 里面。

代码如下:

@Override
public String intercept(ActionInvocation ai) throws Exception {
Map session = ai.getInvocationContext().getSession();
Object action = ai.getAction();
String methodName = ai.getProxy().getMethod();
if(action instanceof UserAction && "login".equals(methodName)) {
return ai.invoke();
}
User user = (User)session.get(Constants.LOGIN_USER_SESSION);
if(user == null) {
return com.opensymphony.xwork2.Action.LOGIN;
} else {
ai.invoke();
return com.opensymphony.xwork2.Action.SUCCESS;
}
}

这里的return login和success 会返回到配置文件定义的页面、

配置文件:

<interceptors>
<!-- 定义权限检查拦截器 -->
<interceptor name="loginInterceptor" class="com.scjx.sysmanage.interceptor.LoginInterceptor"/>
<!-- 定义一个包含权限检查的拦截器栈 -->
<interceptor-stack name="myDefaultStack">
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="loginInterceptor"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
 
首先是定义了一个拦截器,然后定义了一个拦截器栈,最后再把拦截器栈注入到默认的拦截器。
拦截器栈的执行顺序是 执行的时候是正着来,action 执行之后回来的时候是反着来。
 
方法过滤拦截器MethodFilterInterceptor,是对某个方法进行拦截。
<interceptor-ref name="myInterceptor3">

<param name="includeMethods">execute</param>

<param name="excludeMethods">execute</param>

</interceptor-ref>

其中includeMethods ,excludeMethods是固定写法: includeMethods?包含拦截那些方法,多个方法需要用”,”隔开;?excludeMehtods是排除拦截的那些方法;

参考资料:http://www.open-open.com/lib/view/open1338339244354.html

 

 

Structs 2的更多相关文章

  1. Structs框架

    一.准备工作及实例 1.解压struts-2.1.6-all.zip(structs网上下载) apps目录:struts2自带的例子程序 docs目录:官方文档. lib 目录:存放所有jar文件. ...

  2. 第一个structs+spring+hibernate的web程序

    1. 数据库: Column Type Comment id int(11) Auto Increment   name varchar(50) NULL   url varchar(255) NUL ...

  3. struct2的structs.xml文件配置There is no Action mapped for action name 问题

    很久没写过博客,今天重新开始写,新技术太多,只有通过博客才可以不断积累,本人水平有限,如有错误,欢迎指正,谢谢 今天在MAVEN上配置web project的struct2,发现自己忽略了很多问题,再 ...

  4. springMVC 相对于 Structs 的优势

    智者说,没有经过自己的思考和估量,就不能接受别人的东西.资料只能是一个参考,至于是否正确,还得自己去分辨 SpringMVC相对于Structs的几个优势: 1.springMVC安全性更高,stru ...

  5. ssh整合,导入structs包后报错 getAnnotation(AnnotatedElement ae,Class<T> annotatetype)找不到

    今天在整合ssh(spring-framework-3.2.5.RELEASE-dist+struts-2.3.15.3-all+hibernate-release-4.2.6.Final)环境的时候 ...

  6. Java之Structs框架初探

    今天是小白第一次自己的接触Struts框架,因为网上的资料都是从Structs2开始,跟Structs1完全不同,因此,小白直接跳过1学习版本2的搭建,废话不多说,直接开始. 首先要搭建框架,就肯定要 ...

  7. web基础之Structs(一篇)

           为什么有 struts 框架             Struct 的优点之处: 1.       struct的好处 2.       程序更加规范化 3.       程序的可读性提 ...

  8. structs 2 学习总结(一)

      转发请注明出处 1.页面传值. 传值 前台 <s:form action="login1">//action 名字 需要在structs配置 用户<s:tex ...

  9. structs spring hibernate 三者之间有什么关系?

    现在开发流行MVC模式,structs在C(控制器)中使用:hibernate在M(模型)中被使用:至于 spring ,最大的作用在于,structs.hibernate的对象,由于在各个层之间相互 ...

  10. structs常用的Action

    今天座右铭-----谦虚使人进步,骄傲使人落后. 除了基本的Action之外,structs还提供几个其他的类型Action,下面就简单的说一下: 1.DispatchAction:能同时完成多个Ac ...

随机推荐

  1. Oracle中的日期和字符串互相转换

    转载出处:http://blog.sina.com.cn/s/blog_44a005380100k6rv.html TO_DATE格式(以时间:2007-11-02   13:45:25为例)    ...

  2. [C#参考]细说进程、应用程序域与上下文之间的关系

    原文转载链接:http://www.cnblogs.com/leslies2/archive/2012/03/06/2379235.html Written by:风尘浪子 引言 本文主要是介绍进程( ...

  3. Linux流量监控工具使用总结 - iftop

    在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若要查看实时的网络流量,监控TCP/IP连接等,则可以使用iftop. 一.if ...

  4. R与数据分析旧笔记(十六) 基于密度的方法:DBSCAN

    基于密度的方法:DBSCAN 基于密度的方法:DBSCAN DBSCAN=Density-Based Spatial Clustering of Applications with Noise 本算法 ...

  5. BOM 浏览器对象模型学习

    window对象属性 innerWidth/innerHeight 浏览器窗口的内部宽度与高度 outerWidth/outerHeight 浏览器的外部宽度与高度 length window.fra ...

  6. Linux下C编程通过宏定义打开和关闭调试信息

    GCC支持宏定义 gcc -Dmacro,将macro定义为1,我们可以利用这点在我们的代码中加入宏定义开关. #ifdef DEBUG #define pdebug(format, args...) ...

  7. Java中synchronized注意点

    之前一直以为 synchronized 加在方法前面就只有一个线程能访问了,项目中碰到一个问题,一个类的不同对象,同时访问加了 synchronized的方法 同样是可以访问的,那是因为 synchr ...

  8. CURD 例子

    public function modify(){ $id=$_GET['id']; $m=M('user'); $arr=$m->find($id); //var_dump($arr); $t ...

  9. 用extundelete恢复rm -rf删的文件

    “慎用rm -rf命令,除非你知道此命令带来的后果.”这是一条Linux用户守则,虽然大多数用户都明白这条语句的含义,但是我觉得还需要完善一下,为这条语句加 上一个使用前提:在你确认自己拥有清醒头脑, ...

  10. 脑波设备mindwave数据流二次开发示例

    数据流开发神念科技提供了两个文件ThinkGearStreamParse.h和ThinkGearStreamParse.cpp两个文件,主要接口为: 宏定义: /* Data CODE definit ...