servlet怎么使用拦截器

servlet怎么使用拦截器,第1张

abstractInterceptor这个是xwork里面的包才有的类,就是你要在struts里面也是要用它。

import java.util.Map

import com.opensymphony.xwork2.Action

import com.opensymphony.xwork2.ActionInvocation

import com.opensymphony.xwork2.ValidationAware

import com.opensymphony.xwork2.interceptor.AbstractInterceptor

public class AuthorizationInterceptor extends AbstractInterceptor {

private static final String USER_KEY = "user"

public String intercept(ActionInvocation invocation) throws Exception {

Map session = invocation.getInvocationContext().getSession()

if(session.get(USER_KEY) == null) {

addActionError(invocation, "You must be authenticated to access this page")

return Action.ERROR

}

return invocation.invoke()

}

private void addActionError(ActionInvocation invocation, String message) {

Object action = invocation.getAction()

if(action instanceof ValidationAware) {

((ValidationAware) action).addActionError(message)

}

}

}

java里的拦截器是动态拦截Action调用的对象。

它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。

在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些 *** 作。

扩展资料:

滤器可以简单理解为“取你所想取”,忽视掉那些你不想要的东西;拦截器可以简单理解为“拒你所想拒”,关心你想要拒绝掉哪些东西,比如一个BBS论坛上拦截掉敏感词汇。

1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。

3、拦截器只对action起作用,而过滤器几乎可以对所有请求起作用。

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能。

5、在action的生命周期里,拦截器可以多起调用,而过滤器只能在容器初始化时调用一次。

参考资料来源:百度百科——拦截器


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11666740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存