struts2 拦截器只能拦截action , jsp是没法拦截的 , 要拦截接jsp 的话需要用filter
接下来对struts 拦截器说名:
之前拦截
例子: 对方法拦截
需要继承MethodFilterInterceptor
public class LanJieQi extends MethodFilterInterceptor { @Override protected String doIntercept(ActionInvocation invocation) throws Exception { //得到request HttpServletRequest request = ServletActionContext.getRequest(); //设置编码 request.setCharacterEncoding("gbk"); //得到页面 name 的值 String name =request.getParameter("name"); System.out.println(name); //进入下一个拦截器 return invocation.invoke(); } }
struts.xml 配置
<interceptors> <interceptor name="lanjieqi" class="com.action.LanJieQi"> </interceptor> </interceptors> <action name="login" class="com.action.LoginAction"> <interceptor-ref name="lanjieqi"> <param name="includeMethods">login</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <result name="success">/success.jsp</result> <result name="fail">/index.jsp</result> </action>
1需要注意的是<interceptors> 必须写在<package>所以action 之前 , 不然会报错
2还有必须把 <interceptor-ref name="defaultStack"></interceptor-ref> 加上
3 .<param name="includeMethods">login</param> name 有两个参数 1. includeMethods 包含的 所以action 拦截 2. excludeMethods不包含的action 不拦截
之后拦截:
只需要修改
public class LanJieQi extends MethodFilterInterceptor { @Override protected String doIntercept(ActionInvocation invocation) throws Exception {
//拦截器之前
String s= invocation.invoke()
//拦截器之后
//得到request HttpServletRequest request = ServletActionContext.getRequest(); //设置编码 request.setCharacterEncoding("gbk"); //得到页面 name 的值 String name =request.getParameter("name"); System.out.println(name); //进入下一个拦截器 return s; } }