- 浏览: 124471 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Struts2的监听器:
在xwork-2.0.7.jar包下,在com.opensymphony.xwork2.interceptor包下有个PreResultListener接口,自定义的监听器需实现此接口。
1,首先写一个自定义的Struts2监听器
MyListener.java
package com.test.listener; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.PreResultListener; public class MyListener implements PreResultListener { public void beforeResult(ActionInvocation invocation, String resultCode) { System.out.println("result ="+resultCode); } }
2,再在自定义的方法拦截器中调用此监听器,如下所示
package com.interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor; import com.test.listener.MyListener; public class MyMethodInterceptor extends MethodFilterInterceptor { protected String doIntercept(ActionInvocation invocation) throws Exception { System.out.println("before myMethodFilterInterceptor...."); invocation.addPreResultListener(new MyListener()); String invoked = invocation.invoke(); System.out.println("after myMethodFilterInterceptor...."); return invoked; } }
执行的顺序是:
1,先执行拦截器中的方法,如doIntercept。
2,在拦截器中调用invocation.invoke()来执行目标action中的validate验证方法。
3,如果validate验证成功,就执行execute方法或其它自定义的方法。
执行完后,则执行监听器类的beforeResult方法,并且其resultCode参数是success。
如果validate验证失败,则执行监听器类的beforeResult方法,并且其resultCode参数是input。
4,监听器中的方法执行完后,则返回到拦截器中的方法继续完成剩下的部分。
以上就是监听器的简单编写与流程介绍。
-------------------------------------------------------------------------------
验权小例:假设用户需先登录login.jsp页面输入登录用户信息,输入完成后,自动跳转到register.jsp页面填写注册信息,如果用户直接访问register.jsp页面输入信息,则在提交时,就跳转到login.jsp页面要求用户输入登录信息。即不允许用户直接访问register.jsp页面输入注册信息。
1,首先编写拦截器AuthInterceptor.java
package com.interceptor; import java.util.Map; import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class AuthInterceptor implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { //取出session Map session = invocation.getInvocationContext().getSession(); //判断user值是否为空,如果为空,就跳转到 login.jsp页面 if(session.get("user") == null){ return Action.LOGIN; }else{ invocation.invoke(); } return null; } }
2,填写struts2.xml配置文件
<interceptor name="authInterceptor" class="com.interceptor.AuthInterceptor"></interceptor> <action name="login" class="com.test.action.LoginAction"> <result name="input">/login.jsp</result> <!--input标签表示,如果action中validate方法的FieldError中有值,就会跳转到input标签指定的JSP页面--> <result name="success">/register.jsp</result> <result name="failer">/login.jsp</result> </action> <global-results> <!-- 定义全局常量,对应的AuthInterceptor.java类的Action.LOGIN常量, type="redirect"表示重定向--> <result name="login" type="redirect">/login.jsp</result> </global-results> <action name="login" class="com.test.action.LoginAction"> <result name="input">/login.jsp</result> <!--login输入成功,就跳转到/register.jsp页面 --> <result name="success">/register.jsp</result> <result name="failer">/login.jsp</result> </action> <action name="register" class="com.test.action.RegisterAction" > <interceptor-ref name="authInterceptor"></interceptor-ref> <result name="success">/success.jsp</result> <result name="input">/register.jsp</result> </action>
3,在LoginAction.java类中应设置SESSION的值
public String execute() { Map map = ActionContext.getContext().getSession(); //随便放置一个valid字符串 map.put("user", "valid"); if("hello".equals(this.getUsername().trim()) && "world".equals(this.getPassword().trim())){ return "success"; }else{ this.addFieldError("username", "username or password error"); return "failer"; } }
用户在login.jsp页面输入登录信息后,跳转到LoginAction中,在此action中,将valid字符串放入session的user变量中,使user不为空,根据struts.xml的配置,login.jsp页面输入完成后,会自动跳转到register.jsp页面,用户在register.jsp页面输入完成点击提交,会跳转到RegisterAction,在此action中会判断session中的user是否为空,如果不为空,则继续流程,否则重新跳转到login.jsp页面。
发表评论
-
Struts2(18):Struts2深入探索续2
2011-06-06 03:15 624Struts2与Servlet是低耦合的,这可使项目不依赖于具 ... -
Struts2(17):Struts2深入探索续
2011-06-06 00:26 11621,struts2有属性驱动方式与模型驱动两种方式:之前的例子 ... -
Struts2(16): Struts2深入探索
2011-06-05 12:56 962先来看看struts2包中的一些配置文件: 1,strut ... -
Struts2(15):Struts2的国际化续
2011-06-04 23:38 945Struts2中action错误的国际化 在action类的 ... -
Struts2(14):Struts2的国际化
2011-06-04 02:44 918先看看JAVA的国际化实现:JAVA国际化是使用java.ut ... -
Struts2(13):Struts2的上传下载续2
2011-06-04 00:07 963本节主要介绍上传任意数据的文件、指定文件类型上传与Struts ... -
Struts2(12):Struts2的上传下载续
2011-05-29 12:40 951使用Struts2结束common的fileupload和io ... -
Struts2(11):Struts2的上传下载
2011-05-29 01:00 892首先来看看在JSP中上传是如何做的: 从upload.jsp ... -
Struts2(7):Struts2的输入校验框架(xml配置文件校验)
2011-05-22 22:00 3004上一节使用了Action类中的validate方法进行校验,此 ... -
Struts2(6):Struts2的输入校验2
2011-05-22 18:13 1115遇到类型转换错误的时候(也就是说不能进行类型转换),strut ... -
Struts2(5):Struts2的输入校验
2011-05-22 16:23 11571,Register.jsp,一个注册页面,包括用户名,密码, ... -
Struts2(4):Struts2类型转换2
2011-05-22 12:35 11011,修改上一节的input.jsp文件 <s:form ... -
Strtus2(3):struts2的类型转换
2011-05-21 23:34 10421,新建一个Point类,包含两个变量x,y。只有set,ge ... -
Struts2(2):Struts2的输入检验
2011-05-21 12:44 9801:新建一个login2.jsp,使用Struts2的标签编写 ... -
Struts2(1):入门与配置
2011-05-21 11:51 5891,在MyEclipse中新建一个WEB工程:struts2d ... -
Struts2(9):开发自己的Struts2拦截器(编码与配置)
2011-05-15 21:16 1555要开发自己的Struts2拦截器类,需要实现Inte ... -
Struts2(8):拦截器的简单实现原理
2011-05-15 18:29 898什么是拦截器: 拦截器,在AOP(Aspect-Oriente ...
相关推荐
在Struts2中,监听器是用于监控特定事件并执行相应操作的重要组件。下面我们将深入探讨Struts2监听器的使用及其在实际开发中的作用。 首先,了解监听器在Web应用中的基本概念。监听器是Servlet容器(如Tomcat)中的...
### STRUTS:Listener监听器详解 #### 一、引言 在Java Web开发中,监听器(Listener)是十分重要的组成部分,它们主要用于监听特定事件的发生,并执行相应的处理逻辑。Struts框架作为早期流行的MVC架构之一,充分...
在"28_Struts2ImgCode"这个文件名中,虽然没有实际的文件内容,但我们可以推测它可能包含了与Struts2和图像验证码相关的代码示例。在HTTPS环境中,如果涉及到图片验证码,需要注意的是,验证码图片也需要通过HTTPS...
2. **配置web.xml**:在项目的`web.xml`文件中,我们需要配置CAS过滤器和监听器,它们负责拦截请求,处理CAS的票据验证。过滤器会检查用户是否已经通过CAS验证,如果没有,则重定向到CAS服务器的登录页面。 3. **...
本教程将逐步引导你了解并实践这些核心概念,从创建第一个Struts2项目,到配置Action、编写拦截器、处理表单提交、实现文件上传,再到利用Tiles进行页面布局,一步步深化对Struts2的理解。无论你是初学者还是有经验...
在Web开发中,特别是涉及到日期时间选择的情况下,如何在客户端(JavaScript)与服务器端(如Struts2框架)之间有效地交互和处理日期时间数据是非常重要的。本文将详细介绍如何在JavaScript中读取Struts2中的`s:...
默认登录页面 http://localhost:8080/Struts_ljq ...登录成功页面有add,delete,modify方法,配置有不同拦截,在后台看拦截信息。...有全局拦截器配置和方法拦截,及监听器简单运用, 仅新手学习demo
- **实现WEB层**:配置Struts2的过滤器和Spring监听器,编写Action类并注入Service层的bean,设置Struts2的配置文件和JSP页面。 5. **数据库设计** - 学生信息表(xsb):包含学号(XH)、姓名(XM)、性别(XB)...
Struts2是一个强大的MVC框架,而FileUpload则是一个处理文件上传的库,通常与Struts2结合使用,以提供更完善的文件上传功能。在本项目中,我们看到Struts2还整合了Freemarker作为视图模板引擎,使得前后端数据交互...
配置包括定义Flex的上下文监听器、消息代理Servlet等,这些都是Flex与Struts2之间通信的关键组件。 #### 三、深入理解整合原理 整合Flex与Struts2不仅仅是在项目中简单地添加几个库或配置文件。更重要的是理解两者...
- **自定义结果监听器**:在Action执行后,监听其返回的结果,并进行相应的操作。 **4.3 文件上传和下载** - **实现文件上传**:利用Struts2的文件上传特性,可以在表单中添加文件上传控件。 - **实现文件下载**:...
4. **配置web.xml**:这是Servlet容器的配置文件,需要配置Struts2的过滤器和监听器。 5. **编写Action类**:Action类是业务逻辑的入口点,继承自Struts2的ActionSupport类。 6. **创建配置文件**:编写struts.xml...
查看官方文档,确认并更新任何必要的配置元素,如过滤器和监听器。 **6. 更新Struts配置** 检查所有的`.struts.xml`配置文件,确保它们与新版本兼容。可能需要更新或删除不再支持的配置选项。 **7. 修复动作类和...
这是每个Java Web应用的标准部署描述符,用于配置应用程序的基本设置,比如Servlet、过滤器和监听器。在Struts2中,`web.xml`通常会包含Struts2的前端控制器Servlet,即`org.apache.struts2.dispatcher.ng.filter....
2. `web.xml`:这是Servlet容器的部署描述符,用于配置过滤器和监听器。在Struts2中,你需要配置`StrutsPrepareAndExecuteFilter`来拦截HTTP请求并交给Struts2框架处理。 在实际开发中,可能还需要根据需求添加其他...
该属性用于指定加载Struts 2配置文件的配置文件管理器,默认值为`org.apache.struts2.config.DefaultConfiguration`,这是Struts 2默认的配置文件管理器。若需要实现自定义的配置管理器,则需创建一个实现了`...
在探讨“Struts2 tiles操作例子”这一主题时,我们首先需要理解Struts2框架以及tiles插件在其中扮演的角色。Struts2是Apache软件基金会赞助的一个开源Web应用框架,它基于MVC(Model-View-Controller)设计模式,...
在这个例子中,可能使用了Dojo的`dojoContentPane`或者`dijit.form.Form`等组件,配合`dojo.connect`或`dojo.on`监听用户交互事件,然后使用`xhr`方法与后台Struts2 Action进行通信。 Struts2与Dojo的集成通常涉及...
同时,要配置拦截器,以实现Struts2的核心功能,如模型驱动、文件上传等。 3. **ExtJS集成**:在前端,你需要引入ExtJS库,并创建视图组件,如Grid、Form、Panel等。通过Ajax请求与Struts2 Action进行通信,获取...
为了确保项目能够成功运行,开发者需要正确地配置这些jar包,包括将它们添加到构建路径、设置web.xml中的过滤器和监听器,以及可能需要的额外配置文件如struts.xml。同时,了解每个jar包的功能和用途,可以帮助...