• strut2 拦截器 使用


    拦截器是strut2里一个很振奋人心的应用。通过配置拦截器可以在action执行之前进行一些初始化或者是其他的操作,但是在action执行之后,返回结果就已经确定,结果是很难改变了(目前我还不知道怎么改变结果),只能获取结果值。

    如果想改变action中属性的值,就要在invoke之前进行改变。

    package org.sh.interceptor;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.StrutsStatics;
    import org.sh.action.UserAction;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionInvocation;
    import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
    
    public class MyInterceptor extends MethodFilterInterceptor{
    
    	@Override
    	protected String doIntercept(ActionInvocation invocation) throws Exception {
    		//获取参数
    		ActionContext ac = invocation.getInvocationContext();
    		HttpServletRequest request = (HttpServletRequest)ac.get(StrutsStatics.HTTP_REQUEST);
    		String name = request.getParameter("name");
    		String pwd = "";
    		System.out.println("parm:"+name+"::"+pwd+";");
    		if(invocation.getAction() instanceof UserAction){
    			((UserAction)invocation.getAction()).getJsonResult().put("update", "error");
    		}
    		ServletActionContext.getRequest(); //同上面的request
    		String r = invocation.invoke();	
    		HttpServletResponse response = (HttpServletResponse) ac.get(StrutsStatics.HTTP_RESPONSE);
    		//注意 -----------------------------------
    		//下面的代码虽然可以改变action中属性的值,但是返回结果已经在invoke()时就已经确定了,
    		//不会再次使用action的值进行结果的生成,所以在这里改变是没有什么意义的
    		if(invocation.getAction() instanceof UserAction){ 
    			System.out.println("-------------------------------");
    			((UserAction)invocation.getAction()).setName("哈哈哈S");
    			((UserAction)invocation.getAction()).getJsonResult().put("upd", "success");
    		}
    		return r;
    	}
    
    }
    

    配置文件

    	<package name="mypackage" extends="json-default">
    	<interceptors>
    		<interceptor name="myInter" class="org.sh.interceptor.MyInterceptor"></interceptor>
    		<interceptor-stack name="mydefalut">						
    			<interceptor-ref name="defaultStack"></interceptor-ref>
    			<interceptor-ref name="myInter"></interceptor-ref>
    		</interceptor-stack>
    
    	</interceptors>
    		<action name="uact" class="org.sh.action.UserAction">
    			<result type="json" name="success" >
    				<param name="root">jsonBean</param>
    				<param name="excludeNullProperties">false</param>
    			</result>
    		<interceptor-ref name="mydefalut"></interceptor-ref>
    		</action>
    	</package>


  • 相关阅读:
    我的博客
    【git】给文件重命名的简便方法
    【git】通过几次commit来认识工作区和暂存区
    2018年2月份面试题
    【git】建git仓库
    【git】git的安装和最小配置
    selenium WebDriver的实现原理
    什么是selenium
    selenium的安装
    monkey停不下来了怎么整
  • 原文地址:https://www.cnblogs.com/vvch/p/4027594.html
Copyright © 2020-2023  润新知