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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值