Struts2
拦截器的概述
什么是拦截器
拦截器是Struts2中的核心。其实就是一个类对Action的访问进行拦截。
拦截器与过滤器的区别:
- 过滤器过滤的是从客户端向服务器发送的请求。过滤器是可以过滤Html, JSP…
- 拦截器拦截的是从客户端向Action发送的请求。拦截器只能拦截Action,拦截器更细粒度的实施拦截。拦截到Action中具体的方法。
Struts2的执行流程:
- 请求访问Action,请求首先到达核心过滤器,过滤器会调用Dispather中的ServiceAction的方法
- 在这个方法内部,Struts2框架创建一个Action代理对象,执行代理对象中的execute方法,在execute内部方法调用Actioninvocatin中的invoke方法。
- 在invoke方法内部,递归调用拦截器的拦截的方法,如果没有下一个拦截器,执行目标Actioin,根据Action返回Result进行页面跳转,由Response做出响应。
自定义拦截器
- 实现Interceptor接口或者继承AbstractInterceptor类
- 配置拦截器
编写:
|
|
配置拦截器
- 配置的时候会有顺序,默认的在前面,就先执行默认的,自己定义的在前面就先执行自己的
|
|
2.还可以定义一个拦截器栈,在一块引用
|
|
案例:登陆页面
错误信息
回显错误信息:转发到登陆页面,否则actionerror用不了
这里用到了actionerror
- 把错误信息存到值栈中
this.addactionError("错误信息");
- 在jsp中回显错误信息
<s:actionerror/>
登陆权限
- 编写拦截器
注:拦截一个方法用的是MethodFilterInterceptor
|
|
- 配置拦截器
|
|
还得配一个全局的login,就拦截的信息转到login,dtd规定全局配置必须在拦截器下边
还有万一拦截之后发生错误,转到登陆页面,在登陆成功会发生嵌套效果,避免这种效果的方法是,在登陆的
form
标签上加一个target="_parent"
struts2的标签库
通用的标签库Generi Tags
帮助文档中的
Tag reference
传参数:
<s:param name="" value=""/>
- 在遍历List集合的时候,放var里取出来时,可以加
#
,也可以不加,因为,他会在context
中也放一个
|
|
- 遍历一些数,把其中3的倍数变红,每次加10
|
|
UI标签库 UI Tags
- 优势:点文字可以获得焦点,文本框会加一些基本的样式,例如换行啊。。。
- 会提供一套默认的样式样式
xhtml
- 可以不用,在表单上加一个
theme="simple"
,或者在常量上改变,这样所有的就都不能用了
- 可以不用,在表单上加一个
UI标签的数据回显:
优点:
- 将查询到的数据显示到指定文本框
- 数据校验或类型转换出错情况下
数据除了密码都会回显,并且会显示错误信息,密码也要回显添加一个showpassword=true
是在root区存着的。
Struts2的注解开发
- 引包
struts-convention-plugin
- 写好action之后加123456789@ParentPackage("struts-default")@Namespace("/")public class HelloAction extends ActionSupport{@Action(value="访问路劲相当于action中的name",results="返回值")public String execute(){syso();return ...;}}