Struts2拦截器
自定义拦截器:
从struts2的apps中拷贝相应jar包 然后建struts2项目
加入到buildpath
从它的示例项目中 拷贝 struts.xml文件
其它内容都删掉,只用留下这个
struts.xml文件必须在src目录下。
然后在web-inf目录下的web.xml文件中 对struts2进行配置
新建一个Action继承ActionSupport,并重写它的execute方法
然后要对该Action在struts.xml中进行配置:
访问这个路径可以访问到其首页:
点击该文字:
success.jsp页面:
定义一个拦截器:
该拦截器下的intercept方法是自动调用的,进行拦截操作
其中 invocation.invoke方法是执行下一个拦截器(如果是最后一个拦截器,就执行目标Action),它会返回一个字符串,也就是结果视图,也就是Action中的方法返回的字符串。
然后需要在struts.xml文件中对该拦截器进行配置。
首先先要注册该拦截器:
然后还要引用这个拦截器:
在Action里面引用了这个拦截器
拦截器的顺序是按照从上到下的顺序进行执行的。
显示引用拦截器以后,只有手动添加才能够引用defaultStack
建javaweb项目,然后进行struts(此处省略)配置
禁用动态化的调用,它的开发模式
在struts.xml文件中可以加上这些内容:
因为web-inf目录下的文件外部无法直接访问到,所以要在struts.xml文件中进行配置。
在web-inf目录下的page目录下的:manager.jsp
通过路径(项目名)到主页:
访问配置的Action,来访问到manager页面。
login.jsp页面:
建LoginAction类,实现SessionAware接口
对username和password字段添加get和set方法。将用户的信息保存的session里面。获得一个封装了servlet的session的集合。通过实现这个接口来拿到(实现它的setSession方法)。
然后写一个处理登录请求的方法:
然后在struts.xml中配置这个LoginAction
然后在login.jsp中显示用户登录失败的信息:
新建一个拦截器来处理:如果用户已经登录,就可以通过auth来访问界面,如果用户没有登录,就不能够通过auth来访问界面。
核心:
然后要在struts.xml里面的Action进行拦截,1.先要注册拦截器
2.然后要为Action引用拦截器
上面已经定义了拦截器栈,所以下下面进行引用的时候只需要引用拦截器栈就行了。
完成了以后 看效果:
如果没有登录,直接按照这个路径去访问,它就返回到了登录页面。
但是如果正确的登录了以后,会跳转到:
这个时候Session保存着用户的登录信息。
这次再次访问auth就可以直接进来了。