Struts2拦截器

Struts2拦截器_第1张图片

自定义拦截器:


Struts2拦截器_第2张图片


Struts2拦截器_第3张图片




Struts2拦截器_第4张图片


从struts2的apps中拷贝相应jar包 然后建struts2项目


Struts2拦截器_第5张图片

加入到buildpath


Struts2拦截器_第6张图片

从它的示例项目中 拷贝 struts.xml文件


Struts2拦截器_第7张图片

其它内容都删掉,只用留下这个


Struts2拦截器_第8张图片

struts.xml文件必须在src目录下。

然后在web-inf目录下的web.xml文件中 对struts2进行配置



新建一个Action继承ActionSupport,并重写它的execute方法

Struts2拦截器_第9张图片

然后要对该Action在struts.xml中进行配置:


Struts2拦截器_第10张图片

访问这个路径可以访问到其首页:


Struts2拦截器_第11张图片

点击该文字:


success.jsp页面:


Struts2拦截器_第12张图片



定义一个拦截器:

该拦截器下的intercept方法是自动调用的,进行拦截操作

Struts2拦截器_第13张图片

其中  invocation.invoke方法是执行下一个拦截器(如果是最后一个拦截器,就执行目标Action),它会返回一个字符串,也就是结果视图,也就是Action中的方法返回的字符串。

然后需要在struts.xml文件中对该拦截器进行配置。

首先先要注册该拦截器:

Struts2拦截器_第14张图片

然后还要引用这个拦截器:

在Action里面引用了这个拦截器

Struts2拦截器_第15张图片



Struts2拦截器_第16张图片


Struts2拦截器_第17张图片


Struts2拦截器_第18张图片


Struts2拦截器_第19张图片

拦截器的顺序是按照从上到下的顺序进行执行的。

显示引用拦截器以后,只有手动添加才能够引用defaultStack

Struts2拦截器_第20张图片


Struts2拦截器_第21张图片

建javaweb项目,然后进行struts(此处省略)配置

禁用动态化的调用,它的开发模式

在struts.xml文件中可以加上这些内容:

Struts2拦截器_第22张图片

因为web-inf目录下的文件外部无法直接访问到,所以要在struts.xml文件中进行配置。

Struts2拦截器_第23张图片

在web-inf目录下的page目录下的:manager.jsp

Struts2拦截器_第24张图片

通过路径(项目名)到主页:

Struts2拦截器_第25张图片


访问配置的Action,来访问到manager页面。

Struts2拦截器_第26张图片

login.jsp页面:

Struts2拦截器_第27张图片

建LoginAction类,实现SessionAware接口


Struts2拦截器_第28张图片

对username和password字段添加get和set方法。将用户的信息保存的session里面。获得一个封装了servlet的session的集合。通过实现这个接口来拿到(实现它的setSession方法)。


Struts2拦截器_第29张图片

然后写一个处理登录请求的方法:


Struts2拦截器_第30张图片

然后在struts.xml中配置这个LoginAction


Struts2拦截器_第31张图片

然后在login.jsp中显示用户登录失败的信息:


Struts2拦截器_第32张图片


新建一个拦截器来处理:如果用户已经登录,就可以通过auth来访问界面,如果用户没有登录,就不能够通过auth来访问界面。

Struts2拦截器_第33张图片


核心:

Struts2拦截器_第34张图片

然后要在struts.xml里面的Action进行拦截,1.先要注册拦截器

2.然后要为Action引用拦截器


Struts2拦截器_第35张图片

上面已经定义了拦截器栈,所以下下面进行引用的时候只需要引用拦截器栈就行了。


Struts2拦截器_第36张图片

完成了以后 看效果:


Struts2拦截器_第37张图片

如果没有登录,直接按照这个路径去访问,它就返回到了登录页面。

但是如果正确的登录了以后,会跳转到:


Struts2拦截器_第38张图片

这个时候Session保存着用户的登录信息。

这次再次访问auth就可以直接进来了。

Struts2拦截器_第39张图片

你可能感兴趣的:(Struts2拦截器)