struts2中实现自定义的拦截器,有三种方式:
1、实现interceptor接口
2、继承AbstractInterceptor这个抽象类
3、继承MethodFilterInteceptor类
这里我只用了第一种方式:
<interceptors > <interceptor name="InterceptorOne" class="com.nce.interceptor.MyInterceptorOne"></interceptor> </interceptors>
在*Action的配置文件中加入:这里使用loginAction
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="InterceptorOne"></interceptor-ref> </action>
接下来就可以运行了,如果你的请求中有你输入的参数的话,那么你会在页面中看到这样的错:500; java.lang.NullPointerException
这是为什么呢?通过实现,我觉得在我们使用了自定义的拦截器以后,那么struts2默认的拦截器就没有使用了,而默认的拦截器就有把请求流中的值注入到属性中的功能,而我们自定义的拦截器是没有这个功能的,那么自然就要报空指针的错误了。那么最有效的方法就是在我们使用自定义的拦截器的同时也使用默认的拦截器。方法如下:
(一)在interceptors中加入:
<interceptors > <interceptor name="InterceptorOne" class="com.nce.interceptor.MyInterceptorOne"></interceptor> <interceptor-stack name="myStack"> <interceptor-ref name="InterceptorOne"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </interceptor-stack> </interceptors>
而在loginAction的配置中使用myStack
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="myStack"></interceptor-ref> </action>
(二)直接将默认的拦截器放入loginAction的配置中
<action name="login" class="com.ncs.action.LoginAction"> <result name="success">Success.jsp</result> <result name="failure">Failure.jsp</result> <interceptor-ref name="InterceptorOne"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action>
这样就可以避免很多错误了。
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
public class MyInterceptorOne implements Interceptor{
public void destroy() { // TODO Auto-generated method stub }
public void init() { // TODO Auto-generated method stub }
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
System.out.println("begin to intercept...");
String result = invocation.invoke();
System.out.println("end to intercept...");
return result; } }
在配置文件中配置:
分享到:
相关推荐
其中,init和destroy方法会在程序开始和结束时各执行一遍,不管使用了该拦截器与否,只要在struts.xml中声明了该Struts2拦截器就会被执行。 intercept方法就是拦截的主体了,每次拦截器生效时都会执行其中的逻辑。
Struts2拦截器实现权限控制demo,我感觉对初学者还是有一定帮助的
由于struts2标签的性能不好,项目组决定不使用,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现
提到拦截器,使我不得不想起武侠剧中劫匪们常说的一句话:“此山是我开,此树是我栽,要打此路过,留下买路财!”。难不成程序中也有“打劫”的,说的没错,拦截器就是个打劫的。在现实生活中,劫匪劫的大都是钱财,...
谈到拦截器,还有一个词大家应该知道——拦截器链(Interceptor Chain,在Struts 2中称为拦截器栈Interceptor Stack)。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链
主要给大家介绍了关于Struts2学习基础教程之拦截器机制与自定义拦截器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要总结了struts2.0中的拦截器,对于初学者有一定的帮助,里面也有部分代码演示
由于struts2标签的性能不好,但是如果用struts2自带的拦截器防止重复提交又必须struts标签,所以只好自定拦器实现
可以直接运行,并对整合spring和struts2步骤及需要注意的事项进行类总结 整合spring和struts2总结 1.将struts2和spring中的库文件复制...— 如果没有使用Spring ObjectFactory,提供了2个拦截器来自动装配action。
struts2 用拦截器 实现用户权限登录 可以直接运行,只单单用到struts的东西。 struts2 用拦截器 实现用户权限登录 可以直接运行,只单单用到struts的东西。
主要介绍了Struts拦截器实现拦截未登陆用户实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了Struts2中对未登录jsp页面进行拦截功能的实现,在演示源码的同时对步骤和原理进行了分析,具有一定参考价值,需要得朋友可以了解下。
学生成绩管理系统JSP课程设计 可实现学生和老师两个端的登录;...等功能 运用技术: ...3、数据验证:HTML5的原生验证模式、Struts2的Validation验证框架以及Interceptor拦截器、JavaEE的Filter过滤器
本书内容包括Web客户端技术、JSP/Servlet技术、Struts 2(拦截器、类型转换、输入校验、上传和下载文件、Struts 2的各种标签、对 AJAX的支持等)、Spring(Ioc容器、装配Java Bean、Jdbc和Hibernate模板、事务管理、...
答:Struts1和Struts2是两个完全不同的框架,Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。Struts2以核心控制器FilterDispatcher为基础,包含了框架内部的控制流程和处理机制。 ...
本文内容包括:术语设计目标集成IoC设计请求转发集成模板引擎设计拦截器渲染扩展小结参考资料传统的JavaEEMVC框架如Struts等都是基于Action设计的后缀式映射,然而,流行的Web趋势是REST风格的架构。尽管使用Filter...