struts2框架中的IoC详解

在struts2的Action中如何取得request ,session,application呢!


(一)取得Map类型的request,session,application


实现RequestAware,SessionAware,Application接口,通过IoC取得Map类型。示例如下:



package
com.bjsxt.action;
 
import java.util.Map;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
 
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class LoginAction1 extends ActionSupport implements RequestAware,
         SessionAware, ApplicationAware {
     // 声明username属性
     private String username;
     // 声明request属性
     private Map<String, Object> request;
     // 声明session属性
     private Map<String, Object> session;
     // 声明 application属性
     private Map<String, Object> application;
 
     // 重写execute方法,这里并没有使用ServletActionContext.getRequest()来获得request对象,这是因为实现了ServletRequestAware
     public String execute() throws Exception {
         request.put( "req" , "i am request arrt!!" );
         session.put( "session" , "i am session attr" );
         application.put( "application" , "i am application" );
         return SUCCESS;
     }
 
     // Username的get方法
     public String getUsername() {
         return username;
     }
 
     // Username的set方法
     public void setUsername(String username) {
         this .username = username;
     }
 
     // 重写 RequestAware中的方法
     @Override
     public void setRequest(Map<String, Object> request) {
         // TODO Auto-generated method stub
         this .request = request;
 
     }
 
     // 重写 SessionAware中的方法
     @Override
     public void setSession(Map<String, Object> session) {
         // TODO Auto-generated method stub
         this .session = session;
 
     }
 
     // 重写 ApplicationAware中的方法
     @Override
     public void setApplication(Map<String, Object> application) {
         // TODO Auto-generated method stub
         this .application = application;
     }
 




(二)取得真实类型的HttpServletRequest,HttpSession,ServletContext


    实现ServletRequestAware,ServletContextAware接口,通过IoC取得真实类型。示例如下:


package com.bjsxt.action;
 
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction1 extends ActionSupport implements ServletRequestAware,ServletContextAware {
     //声明username属性
     private String username;
     //声明request属性
     HttpServletRequest request;
     //声明session属性
     HttpSession session;
     //声明 application属性
     ServletContext application;
 
     // 重写execute方法,这里并没有使用ServletActionContext.getRequest()来获得request对象,这是因为实现了ServletRequestAware
     public String execute() throws Exception {
         request.setAttribute( "req" , "i am request arrt!!" );
         request.getSession().setAttribute( "session" , "i am session attr" );
         application.setAttribute( "application" , "i am application" );
         return SUCCESS;
     }
     //Username的get方法
     public String getUsername() {
         return username;
     }
     //Username的set方法
     public void setUsername(String username) {
         this .username = username;
     }
     //重写ServletContext中的方法
     @Override
     public void setServletContext(ServletContext application) {
         // TODO Auto-generated method stub
         this .application = application;
     }
     //重写ServletRequest中的方法
     @Override
     public void setServletRequest(HttpServletRequest request) {
         // TODO Auto-generated method stub
         this .request = request;
     }

此文章转载于:http://my.oschina.net/dph/blog/80546


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值