Struts2学习打卡
Struts2学习笔记—第三天
Struts2笔记 第三天
一.拦截器(interceptor)
1. 概念:
将action程序中的冗余代码(通用功能)提取出来,放在拦截器里完成(在请求到达action程序之前或者响应离开框架之前执行),等价于servlet里的过滤器。
注意:拦截器是双向拦截(拦截request , 拦截response) 拦截器属于struts框架,只会拦截action请求,不会考虑jsp
2. 代码
1)写程序 : 实现Interceptor接口
2)配置文件 struts.xml
注意:
1)如果希望代码在action运行之后执行,可以将代码放置在invoke调用之后。
2)如果自定义了拦截器,并且在action中引用了自定义拦截器,则struts框架不
再为程序提供默认拦截器(Params)
3. 拦截器栈
当一个action程序需要通过多个拦截器时,为了简化声明,可以将多个拦截器做成拦截
器栈,在action中引用
4. 默认拦截器栈
如果一个package标签中的所有action都需要使用同一个拦截器栈,可以将这个拦截器
栈设置为默认拦截器栈,一旦设置,会对本包中的所有action生效
5. Struts框架下的拦截器体系(系统默认拦截器 用户自定义拦截器)
问题:一旦用户自定义拦截器,则系统默认的不再生效(Params)
解决:在自定义的拦截器栈里引入系统默认拦截器栈
延伸:
1)在struts框架里添加拦截器的步骤
第一步:自定义拦截器,并在配置文件中声明
第二步:自定义拦截器栈,将自定义拦截器,以及系统默认拦截器栈绑定到
当前栈里
第三步:将自定义拦截器栈在配置文件中声明为 “默认拦截器栈”
2)package的继承关系带来的启发
第一步:在配置文件中先定义一个package标签,在package里定义一些
拦截器栈
第二步:在功能性package标签里,继承father
二.对于jsp文件的安全问题
- 拦截器只会拦截action请求,不考虑jsp,所以为了jsp的安全,可以将jsp由webroot
下转移到WEB-INF目录里。 - WEB-INF里的文件不能在地址栏直接访问(不能在程序里重定向,只能forward跳转)
- 定义一个action程序继承自ActionSupport(不用给定任何代码)
- 在配置文件下做如下声明: