写在开头 : 我在前面就说过 拦截器就是struts的核心
拦截器:
所谓的拦截器就是指在Action之前和Action之后执行的程序代码 要是记不起来了
可以去慕课上面查 哪里理论比较全面。
我们在struts.xml中是用的系统自带的拦截器 定义了超级多的功能名字是defalutStack
接下来我重点写的是登录时拦截的程序
我们知道 如果一般网站只有登录后才会允许你使用部分功能 。
但是在我们的程序里 我们可以直接通过访问网页地址来访问 不用登录的情况下也可以
这个时候我们就需要拦截器的作用了
为了更好的看出效果 我们先写能够直接访问的action 然后再来写加了拦截器之后的情况
1.定义一个action 并在struts.xml中配置 我们发现在浏览器中可以之间键入这个action 可以直接访问 键入的url的格式是 项目名/包名/在action的name.action
![](http://ww1.sinaimg.cn/mw690/df81ff00jw1f6gw6xx1s6j20hl07qac8.jpg)
![](http://ww3.sinaimg.cn/mw690/df81ff00jw1f6gw6zv6brj20ho02emxt.jpg)
2.下面我们来写登录的情况
登录的action (我这里就写了两个参数 一个用户名 一个密码)
需要注意的地方就是 这里是吧用户名和密码写图在session中 然后通过map来保存session的内容 我们会在后面的拦截器中判断是否有用户名 这里就是从map中取出的
在struts.xml中配置的action为
![](http://ww4.sinaimg.cn/mw690/df81ff00jw1f6gw7f1xnsj20jq047ju2.jpg)
下面来重点写拦截器的配置
首先先是配置自定义拦截器的类
这里继承的包如上 由于我们进行判断的结果如下 如果正确就不拦截 如果不正确就拦截 所以需要在struts.xml中定义全局变量 用于响应这个login
然后需要在struts.xml中继续配置
1.首先 需要配置自定义拦截器
![](http://ww2.sinaimg.cn/mw690/df81ff00jw1f6gw77k2j0j20p801zdgg.jpg)
2.然后 需要配置拦截器栈 配置的原因就是: 如果配置了自定义的拦截器之后 那么自带的拦截器将不起作用 。而我们需要的大多数的功能在自带的拦截器中实现,所以我们需要将他们写在一起。
![](http://ww1.sinaimg.cn/mw690/df81ff00jw1f6gw79xagwj20k904stam.jpg)