- 浏览: 414049 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
skying007:
...
Mysql coalesce() 函数认识和用法 -
kchiu:
关于这个心跳的发送和接收 晚上全是the fuccking s ...
socket心跳检测 -
bjsq618:
你的想法在大的物流公司已经实现了,只不过他们使用是GPS定位
ddd -
jiaguwen123:
2,AuthenticationHandler类的写法
pa ...
xfire客户端 -
sornor:
总结的不错哟!
Java中的函数yield(),sleep()和wait()的区别
主要通过一个自定义interceptor简单的例子来解释 Struts 2 interceptor 工作流程
例子非常简单 没有什么业务 处理,重在 试验 工作流程!
环境:
调试环境:MyEclipse8.5刚下的 非常双爽
web容器:tomcat6
一.自定义interceptor 代码:
这里定义两个interceptor 来进行试验:
//打个包包!
package com.struts.interceptor;
//引入必要的类
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
//继承interceptor接口
public class InterOne implements Interceptor {
//复写destory()方法就一句话主要看看什么时候调用!
@Override
public void destroy() {
System.out.println("this is interceptor one destory ");
}
//复写init()方法就一句话主要看看什么时候调用!
@Override
public void init() {
// TODO Auto-generated method stub
System.out.println("this is interceptor one init ");
}
//复写interceptor方法,主要的业务处理模块,试验目的触发interceptor时方法中代码执行顺序!
@Override
public String intercept(ActionInvocation ait) throws Exception {
System.out.println("this is interceptor one befor invoke");
ait.invoke();//调用下一个interceptor
System.out.println("this is interceptor one after invoke");
return null;
}
}
第二个interceptor与上一个基本相同
package com.struts.interceptor;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class InterTwo implements Interceptor {
@Override
public void destroy() {
System.out.println("this is interceptor two destory ");
}
@Override
public void init() {
// TODO Auto-generated method stub
System.out.println("this is interceptor two init ");
}
@Override
public String intercept(ActionInvocation ait) throws Exception {
System.out.println("this is interceptor two befor invoke");
ait.invoke();
System.out.println("this is interceptor two after invoke");
return null;
}
}
二.做个jsp页面:
<body>
<% System.out.println("this is jsp!"); %> <!-- 在命令行输出点信息,一边看到触发流程-->
this is interceptortest.jsp <br>
</body>
三.配置web.xml这个东东,在myeclipse中会默认生成!只要选择相应的版本!
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四.配置struts.xml
<struts>
<!--定义为调试模式-->
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!--把interceptor定义在package中,会把package中的方法都加上形同的interceptor-->
<interceptors>
<interceptor name="interceptorone" class="com.struts.interceptor.InterOne"/>
<interceptor name="interceptortow" class="com.struts.interceptor.InterTwo"/>
<interceptor-stack name="mystack">
<interceptor-ref name="interceptorone"/>
<interceptor-ref name="interceptortow"/>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mystack"/>
<action name="interceptor">
<result>/interceptortest.jsp</result>
</action>
</package>
</struts>
五.部署,调试,查看输出:
1.启动容器:
信息: Overriding property struts.i18n.reload - old value: false new value: true
2010-4-1 1:04:05 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Overriding property struts.configuration.xml.reload - old value: false new value: true
看见在启动容器时 interceptor方法中的init方法就已经进行初始化了!
this is interceptor one init
this is interceptor two init
2010-4-1 1:04:07 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2010-4-1 1:04:07 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2010-4-1 1:04:07 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/63 config=null
2010-4-1 1:04:07 org.apache.catalina.startup.Catalina start
信息: Server startup in 9733 ms
2.
地址栏输入http://localhost:8080/strutsinterceptor/interceptor.action
查看命令行输出:
看见,在触发interceptor时 会先触发 第一个interceptor相应方法中的invoke()之前的代码之后是第二个,在返回jsp页面后会反向执行 invoke()方法之后的代码!
this is interceptor one befor invoke
this is interceptor two befor invoke
this is jsp!
this is interceptor two after invoke
this is interceptor one after invoke
3.结束容器:
命令行输出了定义在 interceptor中destory()方法中的代码!注意输出顺序也是以stack方式运行的
信息: Stopping service Catalina
this is interceptor two destory
this is interceptor one destory
2010-4-1 1:10:19 org.apache.coyote.http11.Http11Protocol destroy
信息: Stopping Coyote HTTP/1.1 on http-8080
好了基本就是这些已经可以说明问题了!
发表评论
-
Struts2自定义拦截器—Session超时的处理
2011-10-11 11:20 1518http://blog.csdn.net/java_cxrs/ ... -
struts2工作原理
2010-09-14 13:09 1663一个请求在Struts2框架中的处理分为以下几个步骤: 1.客 ... -
struts2配置多个struts.xml文件
2010-09-14 12:36 2284在Struts2中如何加载多个配置文件,不是用include的 ... -
struts中#、%和$这三个符号的使用方法
2010-08-14 01:07 1061一、"#"的用法 1、 访问OGNL ... -
s:url标签使用
2010-08-11 16:39 9096一. value <s:set name ... -
标签tree使用
2010-08-11 16:26 1070<head> <s:head theme ... -
s:同行显示
2010-08-11 11:39 1039<s:form action="Login ... -
拦截器详解
2010-08-02 12:51 822在之前的文章中,我们 ... -
Struts2的国际化支持
2010-08-02 11:23 1016每种框价都会有国际化的支持,struts2的国际化大致上分 ... -
struts1与struts2区别
2010-07-26 14:01 8531 在Action实现类方面的对比:Struts 1要求 ... -
struts2中ognl表达式<二>
2010-07-26 11:08 1364OGNL是Object Graph Navigation La ... -
struts2中ognl表达式<一>
2010-07-26 10:54 1947OGNL —— 完美的催化剂 为了解决数 ... -
struts2 iterator标签 status属性
2010-07-22 10:22 1262iterator标签主要是用于迭代输出集合元素,如list s ... -
Struts2.1 标签详细说明
2010-07-22 10:09 906附件为:struts2标签详细说明! -
The Struts dispatcher cannot be found. This is usually caused by using Struts ta
2010-07-21 19:35 1473异常信息:The Struts dispatcher cann ... -
org.apache.struts2.util.Counter
2010-07-21 15:40 2774<s:bean name="org.apach ... -
使用struts2中的s:bean标签
2010-07-21 15:26 1834先添加一个bean: Test1.java package ... -
<s:token />防重复提交
2010-07-21 13:58 1892<s:token />标签防止重复提交,用法如下: ... -
struts2输入校验
2010-07-19 17:36 1036***************** regist.jsp ... -
struts2.0的资源文件读取
2010-07-19 15:54 2764原文地址(可查看图片):http://axuxinggang. ...
相关推荐
Struts2 Interceptor详解 Struts2作为一款流行的Java Web框架,其强大的功能之一就是拦截器(Interceptor)。拦截器在MVC模式中扮演着重要角色,它可以对请求进行预处理和后处理,提供了灵活的扩展机制,使得业务...
Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)
在Struts2框架中,**Interceptor(拦截器)**是一个关键组件,它允许开发者在特定的动作(Action)执行前后添加自定义的处理逻辑,极大地增强了应用程序的灵活性。 #### 二、Interceptor 概念与作用 Interceptor ...
标题和描述均聚焦于“Struts2_interceptor_和_filter区别”,这暗示着对比和解析Struts2框架中拦截器(Interceptor)与过滤器(Filter)的差异是本文的核心议题。接下来,我们将深入探讨这两者在功能、实现方式以及...
### Struts2 拦截器 Interceptor #### 一、概述 在Struts2框架中,拦截器(Interceptor)是一种非常重要的机制,它能够帮助开发者实现诸如权限控制、事务管理、日志记录等跨切关注点的功能。通过定义不同的拦截器...
STRUTS2:拦截器Interceptor
6. **性能优化**:虽然Struts1本身不支持拦截器,但通过"saif(struts1 interceptor)"插件,开发者可以实现缓存管理、性能统计等优化措施,提升应用程序的性能。 7. **与Struts2的对比**:虽然Struts1的拦截器机制受...
Struts2 拦截器是Struts2框架的核心组件之一,它允许开发者在Action执行前后插入自定义的处理逻辑,实现对请求的预处理和后处理,从而增强应用程序的功能和控制流程。以下是对Struts2拦截器原理与实现的详细解析: ...
总之,“深入浅出Struts2”这份资料全面讲解了Struts2的各个关键组成部分,包括其工作原理、配置方式、拦截器机制、OGNL表达式、插件使用以及与Spring的整合,是学习和掌握Struts2框架的宝贵资源。通过深入学习和...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性良好的Web应用的工具。在Struts2中,拦截器(Interceptor)是核心组件之一,它们在...
- **核心机制**:深入探讨Struts2的Action、Result、Interceptor、OGNL等核心组件的工作原理。 - **配置篇**:解析XML配置文件和注解配置的使用,以及如何自定义配置元素。 - **实战篇**:通过实际项目案例,演示...
这本书"深入浅出Struts2源代码"是针对该框架源码的深度解析,旨在帮助读者理解Struts2的工作原理,提升开发技能。 Struts2的核心组件包括: 1. **FilterDispatcher**:这是Struts2的入口点,它是一个Servlet ...
在深入理解Struts2的工作流程之前,我们需要先了解一些基本概念。 1. **MVC模式**: MVC模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型负责业务逻辑,视图负责显示...
《深入浅出Struts 2》是一本专为Java开发者设计的书籍,旨在全面解析Struts 2框架的原理、特性和实际应用。Struts 2是Java Web开发中的一个热门框架,它提供了强大的MVC(Model-View-Controller)架构支持,极大地...
在深入探讨Struts2的工作流程之前,我们先了解一下MVC模式的基本概念。MVC模式将应用逻辑分隔为三个部分:模型(Model)处理业务逻辑,视图(View)负责展示数据,控制器(Controller)协调用户输入和模型间的交互。...
Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...
Struts 2的核心概念包括Action、Result、Interceptor(拦截器)等,这些组件协同工作,实现了业务逻辑与表现层的分离,使得代码更易于维护和扩展。Action是处理用户请求的中心对象,它可以接收请求参数,调用业务...
1. **快速入门**:介绍如何搭建Struts 2的开发环境,创建第一个简单的Hello World应用程序,让读者对Struts 2有个直观的认识。 2. **配置详解**:讲解Struts 2的配置文件(struts.xml)以及各种配置元素的作用,...
Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.