Struts 2获得request,response,session对象

本文介绍在Struts2.0中如何通过非IoC和IoC两种方式获取Servlet API中的关键对象,如request、response和session,并提供代码示例。

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

很多时候我的同事会问我:“如果我要取得Servlet API中的一些对象,如request、response或session等,应该怎么做?这里的execute不像Struts 1.x的那样在参数中引入。”开发Web应用程序当然免不了跟这些对象打交道。在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式。

  1. 非IoC方式

    要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

    • HttpServletRequest request = ServletActionContext.getRequest();
    • HttpServletResponse response = ServletActionContext.getResponse();
    • HttpSession session = request.getSession();

    如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。

  2. IoC方式

    要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现,请参考例6 IocServlet.java。
Struts <wbr>2获得request,response,session对象 package tutorial;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpServletRequest;
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpServletResponse;
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpSession;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import org.apache.struts2.ServletActionContext;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import com.opensymphony.xwork2.ActionContext;
Struts <wbr>2获得request,response,session对象
import com.opensymphony.xwork2.ActionSupport;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象
public class NonIoCServlet extends ActionSupport {
Struts <wbr>2获得request,response,session对象    
privateString message;
Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
public String getMessage() {
Struts <wbr>2获得request,response,session对象        
returnmessage;        
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象    @Override
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
public String execute() {    
Struts <wbr>2获得request,response,session对象        ActionContext.getContext().getSession().put(
"msg","Hello World from Session!");
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        HttpServletRequest request
= ServletActionContext.getRequest();
Struts <wbr>2获得request,response,session对象        HttpServletResponse response
= ServletActionContext.getResponse();        
Struts <wbr>2获得request,response,session对象        HttpSession session
= request.getSession();
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        StringBuffer sb
=new StringBuffer("Message from request:");
Struts <wbr>2获得request,response,session对象        sb.append(request.getParameter(
"msg"));
Struts <wbr>2获得request,response,session对象        sb.append(
"<br>Response Buffer Size: ");
Struts <wbr>2获得request,response,session对象        sb.append(response.getBufferSize());
Struts <wbr>2获得request,response,session对象        sb.append(
"<br>Session ID: ");
Struts <wbr>2获得request,response,session对象        sb.append(session.getId());
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        message
= sb.toString();
Struts <wbr>2获得request,response,session对象        
returnSUCCESS;
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象}

例6 classes/tutorial/NonIoCServlet.java

Struts <wbr>2获得request,response,session对象 package tutorial;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import java.util.Map;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpServletRequest;
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpServletResponse;
Struts <wbr>2获得request,response,session对象
import javax.servlet.http.HttpSession;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import org.apache.struts2.interceptor.ServletRequestAware;
Struts <wbr>2获得request,response,session对象
import org.apache.struts2.interceptor.ServletResponseAware;
Struts <wbr>2获得request,response,session对象
import org.apache.struts2.interceptor.SessionAware;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象
import com.opensymphony.xwork2.ActionContext;
Struts <wbr>2获得request,response,session对象
import com.opensymphony.xwork2.ActionSupport;
Struts <wbr>2获得request,response,session对象
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象
public class IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
Struts <wbr>2获得request,response,session对象    
privateString message;
Struts <wbr>2获得request,response,session对象    
privateMap att;
Struts <wbr>2获得request,response,session对象    
privateHttpServletRequest request;
Struts <wbr>2获得request,response,session对象    
privateHttpServletResponse response;    
Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
public String getMessage() {
Struts <wbr>2获得request,response,session对象        
returnmessage;        
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
publicvoidsetSession(Map att) {
Struts <wbr>2获得request,response,session对象        
this.att= att;
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
publicvoidsetServletRequest(HttpServletRequest request) {
Struts <wbr>2获得request,response,session对象        
this.request= request;
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
publicvoidsetServletResponse(HttpServletResponse response){
Struts <wbr>2获得request,response,session对象        
this.response= response;
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象    
Struts <wbr>2获得request,response,session对象    @Override
Struts <wbr>2获得request,response,session对象Struts <wbr>2获得request,response,session对象    
public String execute() {        
Struts <wbr>2获得request,response,session对象        att.put(
"msg","Hello World from Session!");
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        HttpSession session
= request.getSession();
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        StringBuffer sb
=new StringBuffer("Message from request:");
Struts <wbr>2获得request,response,session对象        sb.append(request.getParameter(
"msg"));
Struts <wbr>2获得request,response,session对象        sb.append(
"<br>Response Buffer Size: ");
Struts <wbr>2获得request,response,session对象        sb.append(response.getBufferSize());
Struts <wbr>2获得request,response,session对象        sb.append(
"<br>Session ID: ");
Struts <wbr>2获得request,response,session对象        sb.append(session.getId());
Struts <wbr>2获得request,response,session对象        
Struts <wbr>2获得request,response,session对象        message
= sb.toString();
Struts <wbr>2获得request,response,session对象        
returnSUCCESS;
Struts <wbr>2获得request,response,session对象    }

Struts <wbr>2获得request,response,session对象}

例6 classes/tutorial/IoCServlet.java

转自:http://blog.sina.com.cn/s/blog_4548a53d0100kfco.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值