java struts2拦截器,Struts2拦截器

本文详细介绍了Struts2拦截器的工作流程、关键拦截器如params、static-params、workflow和validation的作用,以及如何在struts.xml中配置拦截器。涵盖了身份验证、参数传递、验证和Action交互等内容。

Struts2拦截器

拦截器可以在动作执行之前或之后执行附加的动作。常见的应用有身份验证、日志记录等。

默认拦截器定义在struts-default包中。其中有几个重要的拦截器:

params。它的作用是将请求中的数据映射到动作JavaBean中。static-params。它的作用是将action配置中的参数传递给Action。它比ParametersInterceptor优先执行,因此可以用于实现参数的默认值。workflow。作用是验证。它的作用是调用action中的validate等方法,如果验证失败,就停止执行。validation。作用是验证。与workflow不同的是,它通过Annotation的方式进行验证,无须编写验证代码。prepare。用来调用prepareInput、prepareUpdate等方法。token。用于防止表单重复提交。它是一个表单的隐藏域,用实现。servletConfig。将servlet中的session、request、application等传递给Action。Action需要实现SessionAware、RequestAware等接口才能接收到Servlet对象。

对于每个拦截器,每次请求intercept只会被调用一次。intercept一般都会调用invoke方法,它的作用是执行下一个拦截器,如果没有下一个拦截器,那么会执行Action中的代码。下面是一个拦截器的例子,注意它在动作执行前和执行后都增加了额外的操作。

public String intercept(ActionInvocation invoker) throws Exception {

System.out.println("Before invoke");

String result = invoker.invoke();

System.out.println("After invoke");

}

所以拦截器的工作流程是这样的:首先框架调用第一个拦截器,第一个拦截器通过invoke方法调用第二个拦截器,第二个拦截器也是通过同一个invoke方法调用第三个拦截器,这样一条很长的调用链下来,直到拦截器调用完成为止,最后执行Action中的代码。

invoke方法,第一次调用的时候会执行第一个拦截器,第二次调用执行第二个拦截器……最后一次调用执行Action中的代码。它的返回值含义是视图名称,所以在拦截器中可以代替Action提前返回视图名称。

拦截器的配置。在struts.xml文件中,拦截器的配置应该包括两个部分,声明拦截器、定义拦截器栈。

声明拦截器的代码示例如下。一个包中只能有一个interceptors标签。

这样拦截器就声明好了,接下来定义拦截器栈。在引用拦截器的时候可以传入参数。

给动作指定拦截器。需要注意的是,只要指定了任何一个拦截器,那么默认的拦截器就不会执行。

success.jsp

http://www.dengb.com/Javabc/874202.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/874202.htmlTechArticleStruts2拦截器 拦截器可以在动作执行之前或之后执行附加的动作。常见的应用有身份验证、日志记录等。 默认拦截器定义在struts-default包中...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值