十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
拦截器的工作原理如图 拦截器是由每一个action请求(request)都包装在一系列的拦截器的内部,通过redirectAction再一次发送请求。
拦截器可以在Action执行直线做相似的操作也可以在Action执行直后做回收操作。
我们可以让每一个Action既可以将操作转交给下面的拦截器,Action也可以直接退出操作返回客户既定的画面。
接下来我们该如何定义一个拦截器:
自定义一个拦截器如下:
1、实现Interceptor接口或者继承AbstractInterceptor抽象类。
2、创建一个Struts.xml文件进行定义拦截器。
3、在需要使用的Action中引用上述定义的拦截器,为了方便也可将拦截器定义为默认的拦截器(
这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截loginView,login。
①Interceptor接口声明三个方法:
public class LoginInterceptor implements Interceptor { private Mapsession = 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"; } } 注:该方法可以不加:loginView,login