• 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>


  • 相关阅读:
    Oracle通过最小分区增加分区的SQL
    Oracle获取时间段内的各月底日期
    GET_MAPPING_DQL based on columns
    Oracle 分析问题sql的历史执行情况
    Oracle v$sql,v$sqlarea,v$sqltext区别
    Oracle修改表及分区表的表空间
    Oracle tablespace size sql
    ORACLE alter table storage
    Emmet的HTML语法(快速生成代码)
    Js中replace替换所有.
  • 原文地址:https://www.cnblogs.com/vvch/p/4027594.html
Copyright © 2020-2023  润新知