2012-04-24 14:34 struts2监听器首先要实现com.opensymphony.xwork2.interceptor.PreResultListener类

来源:互联网 发布:手机数据是什么 编辑:程序博客网 时间:2024/04/30 12:52
2012-04-24 14:34

struts2监听器

首先要实现com.opensymphony.xwork2.interceptor.PreResultListener类
并重写里面的方法beforeResult

Java代码
  1. public class MyListener implements PreResultListener { 
  2.  
  3.     public void beforeResult(ActionInvocation invocation, String resultCode) { 
  4.         System.out.println(resultCode); 
  5.     } 
  6.  



然后再在拦截器里面调用

Java代码
  1. invocation.addPreResultListener(new MyListener()); 


监听器是在这个拦截器完成别的拦截器之后调用的


struts2 Action获得HttpSession,HttpServletRequest,HttpSevletResponse的方法
非IOC方式
这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类

Java代码
  1. ActionContext ctx = ActionContext.getContext();         
  2.         
  3.   HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);         
  4.         
  5.   HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);         
  6.           
  7.   //ServletActionContext.APPLICATION;         
  8.   //ServletActionContext.SESSION;         
  9.   //ServletActionContext.PAGE_CONTEXT;    
  10. //或者 
  11. HttpServletRequest request = ServletActionContext.getRequest ();  


主要是这两个类com.opensymphony.xwork2.ActionContext和org.apache.struts2.ServletActionContext都对request等进行了大量的封装,直接调用方法就可以获和

更好一点的IOC方式
action类实现ServletRequestAware接口,并新建一个HttpServletRequest request

Java代码
  1. public class UserLoginAction extends ActionSupport implements ServletRequestAware{ 
  2.    public void setServletRequest(HttpServletRequest request) { 
  3.      this.request=request; 
  4.   } 
  5. 然后可以生成的request得到对象,如request.getRemoteAddr() 
  6. action类实现SessionAware接口,并创建一个MAP对象session 
  7. public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{ 
  8.    public void setServletRequest(HttpServletRequest request) { 
  9.      this.request=request; 
  10.   } 
  11. public void setSession(Map session) { 
  12.   this.session=session;   


}

这些获得HttpServletRequest等对象需要implments的接口都在
org.apache.struts2.interceptor下面
如Apllication的是ApplicationAware
如HttpSession的是SessionAware(struts2的Session都被封装成Map了)
如HttpServletRequest的是ServletRequestAware
如HttpServletResponse的是ServletResponseAware

原创粉丝点击