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

本文介绍如何在Struts2中实现自定义监听器,并演示了通过不同方式获取HttpSession、HttpServletRequest及HttpServletResponse的方法。包括实现特定接口和使用ActionContext。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值