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就可以直接进来了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容