2018.11.29 Struts2中拦截器的学习&项目的实际运用

原文链接: http://www.cnblogs.com/qichunlin/p/10037614.html

struts2官方架构

1231979-20181129124956576-1907613984.png

拦截器的创建

第一种方式

1231979-20181129125303701-36258151.png

第二种方式

1231979-20181129125343723-1157940954.png

看源码AbstractInterceptor 底层已经帮我们写过这些方法了

1231979-20181129112140301-736853444.png

第三种方式(推荐)

1231979-20181129125519461-281924624.png

拦截器API学习

放行

1231979-20181129125708273-209620473.png

前后处理

1231979-20181129125736810-1775814041.png

不放行,直接跳转到一个结果页面

不执行后续的拦截器以及Action,直接交给Result处理结果.进行页面跳转
1231979-20181129125814277-1135959719.png

拦截器配置

三个步骤:(1)注册拦截器 (2)注册拦截器栈 (3)指定默认拦截器栈
1231979-20181129142449319-439079916.png

觉得难懂的可以看源码(struts-default.xml),只要按照顺序来都是一样的
1231979-20181129142909870-1058557664.png

1231979-20181129142932470-1425533520.png

1231979-20181129142952410-1005182714.png


随便定义一个Action
1231979-20181129143344396-646558401.png

特殊情况下的处理
1231979-20181129142618383-828794263.png

测试

1231979-20181129142753385-100784667.png

1231979-20181129142342552-1921711274.png

拦截器拦截方法的指定(定制方法)

查看struts2中是如何实现的
1231979-20181129234223548-1122652065.png

excludeMethod是不包含的方法的意思,在指定那些方法是拦截的那些是不拦截的。

找到validate的拦截器具体实现类
1231979-20181129234457752-142530232.png

1231979-20181129234630989-577492574.png

指定不包含拦截器的类就是在这里
1231979-20181129234658969-737267339.png

继续往下看父类
1231979-20181130001627132-2090904967.png

之所以能直接指定参数是因为调用了get/set方法 (快速打开当前类中有哪些方法ctrl+o 黑苹果下是 win+o)
1231979-20181130001503239-35248822.png


struts.xml主配置文件中配置
不拦截的方法
1231979-20181130101134739-1306364765.png

拦截的方法
1231979-20181130000525504-1688794821.png


给Action添加几个方法测试
1231979-20181130000711395-412046585.png

1231979-20181130000730833-1022432718.png

地址栏输入 http://localhost:8080/Struts2Day04/demo1Action_find
1231979-20181130000451293-1884053266.png

测试拦截的方法 http://localhost:8080/Struts2Day04/demo1Action_update
1231979-20181130000855775-2070509653.png

1231979-20181130000941860-1538890299.png

第二种:修改
1231979-20181130002142347-1978234683.png

两种方式只能存在一种

http://localhost:8080/Struts2Day04/demo1Action_add
1231979-20181130002211995-1679396053.png

http://localhost:8080/Struts2Day04/demo1Action_delete
1231979-20181130002241114-1145543659.png


项目应用

登陆拦截器的实现步骤

1.编写一个登陆拦截器类

1231979-20181130113014280-747414590.png

2.在配置文件中配置 拦截器

1231979-20181130113123352-628740978.png

3.配置结果集变量不需要每一个Action都写一遍result节点

1231979-20181130130934083-1236406186.png

4.当点击页面的时候出现页面嵌套的情况,

1231979-20181130130355800-715181582.png

5.解决办法

1231979-20181130130722263-340684761.png

测试:成功解决

1231979-20181130130814020-1314363719.png

测试登陆

密码错误的情况
1231979-20181130131151849-1337852684.png

用户名不存在的情况
1231979-20181130131342981-1077874840.png

登陆成功,获取客户列表
1231979-20181130131310500-1245497031.png

转载于:https://www.cnblogs.com/qichunlin/p/10037614.html

猜你喜欢

转载自blog.csdn.net/weixin_30498921/article/details/94928571