拦截器的工作原理如图 拦截器是由每一个action请求(request)都包装在一系列的拦截器的内部,通过redirectAction再一次发送请求。拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作。我们可
拦截器的工作原理如图 拦截器是由每一个action请求(request)都包装在一系列的拦截器的内部,通过redirectAction再一次发送请求。
拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作。
我们可以让每一个Action既可以将操作转交给下面的拦截器,Action也可以直接退出操作返回客户既定的画面。
接下来我们该如何定义一个拦截器:
自定义一个拦截器如下:
实现Interceptor接口或者继承AbstractInterceptor抽象类。
创建一个Struts.xml文件进行定义拦截器。
在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器(<default-interceptor-ref name="myStack"/>),
这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截<param name="excludeMethods">loginView,login</param>。
①Interceptor接口声明三个方法:
public class LoginInterceptor implements Interceptor { private Map<String,Object> session = null; public void destroy() { } public void init() { } public String intercept(ActionInvocation actionInvocation) throws Exception { 8 Object myAction = actionInvocation.getAction(); if(myAction instanceof UserAction){ System.out.println("你访问的Action是UserAction,不要校验Session,否则死循环"); //放行 return actionInvocation.invoke(); }else{ System.out.println("你访问的Action是:"+myAction); } session = ActionContext.getContext().getSession(); Object user = session.get("user"); if (user!=null){ return actionInvocation.invoke(); }else{ return "login"; }}注:该方法可以不加:<param name="excludeMethods">loginView,login</param>
--结束END--
本文标题: Struts2拦截器 关于解决登录的问题
本文链接: https://lsjlt.com/news/222621.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0