day04:struct2拦截器

struts2拦截器

当需要使用某个拦截器时,只需在配置文件struts.xml中配置就可以使用;如果不需要使用该拦截器,只需在struts.xml配置文件中取消配置即可

自定义拦截器

自定义拦截器需要实现Struts2提供的Interceptor接口。通过实现该接口可以开发一个拦截器类。

下面描述自定义拦截器的例子:当用户请求相应页面时,拦截,并注入一个时间序列

v1 自定义一个实现Interceptor接口(或者继承AbstractInterceptor抽象类)的类。

AbstractInterceptor.java

public abstract class AbstractInterceptor implements Interceptor {
   public void init()   //用于初始化系统资源
     { }
   public void destroy()   //用于销毁资源
     { }
   public abstract String intercept(ActionInvocation invocation) throws Exception;    
       //拦截器的核心方法,实现具体拦截操作
}

例:

public class DateInterceptor extends AbstractInterceptor{
@Override
public String intercept(ActionInvocation invocation) throws Exception{
BookAction action =(BookAction)invocation.getAction();
action.setDate(new Date());
return invocation.invoke();
}
}

v2 在struts.xml中注册上一步中定义的拦截器。

例:

<interceptors>
<interceptor name="dateInterceptor" class="com.strut.interceptor.DateInterceptor"></interceptor>
</interceptors>

v3在需要使用的Action中引用上述定义的拦截器。

(为了方便也可将拦截器定义为默认的拦截器,这样在不加特殊声明的情况下所有的Action都被这个拦截器拦截。 )

例:

在struts.xml里

show.jsp

list.jsp

在com.strut.action.BookAction里

public class BookAction {
private Date date;
public Date getDate() {...}
public void setDate(Date date) {...}
}

在list.jsp里

${date}

运行结果的部分截图(主要看拦截器的实现部分):

struts内置拦截器

params拦截器将HTTP请求中的参数解析出来,将这些解析出来参数设置为Action的属性;

servlet-config拦截器直接将HTTP请求中的HttpServletRequest实例和HttpServletResponse实例传给Action;

国际化拦截器i18n将国际化资源进行操作;

文件上传拦截器fileUpload将文件信息传给Action。

另外还有数据校验拦截器对数据校验信息进行拦截。

v在项目开发中,Struts2内置的拦截器可以完成项目的大部分功能,但有些与系统逻辑相关的通用功能则需要通过自定义拦截器来实现,如权限控制和用户输入内容的控制等等。

Struts2数据验证

在实际项目开发中我们应该对所有的外部输入进行校验。而表单是应用程序最简单的入口,对其传进来的数据,我们必须进行校验。校验可以通过客户端的JavaScript技术来完成,也可以使用Struts的数据验证方案。

实现方法:

  1. 用action继承ActionSupport类,重写validate方法
    2.用基于xml文件的验证框架
    文件命名的格式必须是形如 ActionName-validation.xml(-前必须与action名称一致)
    https://www.cnblogs.com/ningvsban/p/3734427.html


上一篇:WBE前端笔记2:CSS中一些不熟悉的标签


下一篇:WBE前端笔记1:HTML中一些不熟悉的标签