`
Luob.
  • 浏览: 1592574 次
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2 拦截结果监听器(三十)

阅读更多
1.在前面的拦截器中,对execute()方法执行之前和之后都有动作,都定义在拦截器interceptor()方法中,为了精确定义在execute()方法执行结束之后,再处理result执行的动作,Struts2提供了用于拦截结果的监听器,拦截结果监听器通过手动注册给拦截器。

2.首先定义 监听器 必须实现 PreResultListener
package com.sh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.PreResultListener;

public class ResultListener implements PreResultListener{

	public void beforeResult(ActionInvocation invocation, String result) {
		System.out.println("拦截结果监听器执行。。。。");
		System.out.println("返回的视图结果为:"+result);
	}
	
}


3.定义拦截器
package com.sh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ResultInterceptor extends AbstractInterceptor {

	@Override
	public String intercept(ActionInvocation ai) throws Exception {
		//注册自己定义的拦截结果监听器给拦截器
                ai.addPreResultListener(new ResultListener());
		System.out.println("execute()方法执行之前。。。。");
		String result=ai.invoke();
		System.out.println("execute()执行之后。。。。");
		return result;
	}
	
}

action
package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class OrderAction extends ActionSupport{
	public String execute(){
		return SUCCESS;
	}
}


struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts> 
	<!-- 如果 注解的action配置改变时候不需要重新启动tomcate -->
	<constant name="struts.devMode" value="false"/>  
    <constant name="struts.convention.classes.reload" value="true" /> 
	
	<package name="default" extends="struts-default">
		<interceptors>
			<interceptor name="resultInterceptor" class="com.sh.interceptor.ResultInterceptor"/>
		</interceptors>
		
		<action name="order" class="com.sh.action.OrderAction">
			<result>/index.jsp</result>
			<interceptor-ref name="defaultStack"/>
			<interceptor-ref name="resultInterceptor"/>
		</action>
	</package>
    
</struts>


--访问
http://localhost:8080/Struts2_PreResultListener/order.action

--控制台输出
execute()方法执行之前。。。。
拦截结果监听器执行。。。。
返回的视图结果为:success
execute()执行之后。。。。
0
4
分享到:
评论

相关推荐

    struts2拦截器及监听器示例demo

    默认登录页面 http://localhost:8080/Struts_ljq ...登录成功页面有add,delete,modify方法,配置有不同拦截,在后台看拦截信息。...有全局拦截器配置和方法拦截,及监听器简单运用, 仅新手学习demo

    Struts2的监听器的使用

    在Struts2中,这些监听器主要用于初始化框架、配置拦截器、管理Action实例等任务。 1. **StrutsPrepareAndExecuteFilter**:这是Struts2的核心过滤器,负责处理HTTP请求并将其转发到相应的Action。它需要在web.xml...

    JavaWeb中Struts2拦截器深入分析(一)

    `ActionInvocation`接口提供了对当前Action执行状态的访问,拦截器可以在这个接口上获取Action对象、Result对象,甚至添加监听器(PreResultListener)来执行额外的任务。 3. **自定义拦截器的实现** - 自定义拦截...

    struts2 拦截器 权限 ajax jsp

    在Struts2的配置文件(如struts.xml)中,我们可以定义拦截器链,将多个拦截器串联起来,每个拦截器按照顺序执行。 1. **创建自定义拦截器**:首先,我们需要创建一个实现了`Interceptor`接口的类,重写`intercept...

    学习常用知识(java,sql,oracle,ejb,ssh,struts,xml,监听器,拦截器,过滤器)

    在IT领域,掌握Java、SQL、Oracle、EJB、SSH、Struts、XML以及监听器、拦截器和过滤器等技术是至关重要的。这些技术涵盖了Web应用开发的多个层面,对于初学者而言,理解并熟练运用它们能为职业生涯打下坚实的基础。 ...

    struts2PreResultListener接口

    在Struts2配置文件(struts.xml)中,你需要将自定义的监听器添加到Action或全局拦截器栈中: ```xml &lt;package name="default" namespace="/" extends="struts-default"&gt; &lt;!-- 添加自定义预结果监听器 --&gt; ...

    java过滤器、监听器拦截器原理个人总结.pdf

    Java 过滤器、监听器拦截器原理个人总结 Java 过滤器是 Java Servlet 规范中的一种机制,用于对请求和响应进行过滤。过滤器可以实现用户身份验证、日志记录、数据压缩等功能。创建一个过滤器需要两个步骤:创建 ...

    struts2 Https 配置

    Struts2是一个非常流行的...总结起来,配置Struts2应用支持HTTPS涉及服务器SSL配置、Struts2配置、过滤器设置以及可能的拦截器实现。通过这些步骤,可以确保基于Struts2的Web应用在传输敏感数据时具有较高的安全性。

    Struts2教程DOC版

    3. **配置文件**:Struts2的配置文件通常为struts.xml,用于定义Action类、结果类型、拦截器等。通过配置文件,开发者可以灵活地管理应用的路由和行为。 二、Struts2核心组件 1. **Filter Dispatcher**:作为...

    Struts2与extjs整合例子

    同时,要配置拦截器,以实现Struts2的核心功能,如模型驱动、文件上传等。 3. **ExtJS集成**:在前端,你需要引入ExtJS库,并创建视图组件,如Grid、Form、Panel等。通过Ajax请求与Struts2 Action进行通信,获取...

    struts2所有包和配置文件

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它极大地简化了开发过程,提供了丰富的动作、拦截器和结果类型,使得开发者可以更专注于业务逻辑,而不是繁琐的HTTP请求处理。...

    struts2+cas单点登陆例子

    2. **配置web.xml**:在项目的`web.xml`文件中,我们需要配置CAS过滤器和监听器,它们负责拦截请求,处理CAS的票据验证。过滤器会检查用户是否已经通过CAS验证,如果没有,则重定向到CAS服务器的登录页面。 3. **...

    struts2必备的包和配置文件

    2. `web.xml`:这是Servlet容器的部署描述符,用于配置过滤器和监听器。在Struts2中,你需要配置`StrutsPrepareAndExecuteFilter`来拦截HTTP请求并交给Struts2框架处理。 在实际开发中,可能还需要根据需求添加其他...

    搭建struts2的jar包

    4. **配置web.xml**:这是Servlet容器的配置文件,需要配置Struts2的过滤器和监听器。 5. **编写Action类**:Action类是业务逻辑的入口点,继承自Struts2的ActionSupport类。 6. **创建配置文件**:编写struts.xml...

    flex与struts2整合

    配置包括定义Flex的上下文监听器、消息代理Servlet等,这些都是Flex与Struts2之间通信的关键组件。 #### 三、深入理解整合原理 整合Flex与Struts2不仅仅是在项目中简单地添加几个库或配置文件。更重要的是理解两者...

    Struts2之异步调用机制详解案例struts014

    4. **XML配置**:Struts2的配置文件(struts.xml)用于定义Action、结果类型、拦截器等。为了支持异步调用,可能需要在这里声明特定的结果类型,比如JSON或FreeMarker模板,以便返回状态信息。 5. **结果类型...

    struts2 interceptor介绍

    2. **After拦截**:此类拦截器的代码在`invoke`方法调用后执行,但它们会按照与定义顺序相反的顺序运行,确保后期的处理逻辑能够访问到所有前期拦截器的操作结果。 3. **PreResult监听**:有时仅在Action前后进行...

    Struts2入门教程

    2. 配置web.xml文件:添加Struts2的前端控制器DispatcherServlet,以及必要的过滤器和监听器。 四、编写第一个Struts2应用 1. 创建Action类:这是处理用户请求的核心,通常继承自org.apache.struts2.dispatcher.ng....

    struts2教程我在培训时用的

    - **自定义结果监听器**:在Action执行后,监听其返回的结果,并进行相应的操作。 **4.3 文件上传和下载** - **实现文件上传**:利用Struts2的文件上传特性,可以在表单中添加文件上传控件。 - **实现文件下载**:...

Global site tag (gtag.js) - Google Analytics