struts2得到request response和session等对象 _Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2115 | 回复: 0   主题: struts2得到request response和session等对象         下一篇 
gunrose
注册用户
等级:新兵
经验:36
发帖:79
精华:0
注册:2011-7-21
状态:离线
发送短消息息给gunrose 加好友    发送短消息息给gunrose 发消息
发表于: IP:您无权察看 2015-9-18 17:44:44 | [全部帖] [楼主帖] 楼主

1 非IoC方式


要获得这几个对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。

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


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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
publicclass NonIocServlet extends ActionSupport {
      private String message;
      public String getMessage() {
            return message;
      }
      @Override
      public String execute() {
            ActionContext.getContext().getSession().put("msg", "Hello World from Session!");
            HttpServletRequest request = ServletActionContext.getRequest();
            HttpServletResponse response = ServletActionContext.getResponse();
            HttpSession session = request.getSession();
            // ActionContext.getContext().getSession();
            StringBuffer sb =new StringBuffer("Message from request: ");
            sb.append(request.getParameter("msg"));
            sb.append("<br>Response Buffer Size: ");
            sb.append(response.getBufferSize());
            sb.append("<br>Session ID: ");
            sb.append(session.getId());
            message = sb.toString();
            return SUCCESS;
      }
}


2 IoC方式


要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。

import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
      private String message;
      private Map att;
      private HttpServletRequest request;
      private HttpServletResponse response;
      public String getMessage() {
            return message;
      }
      publicvoid setSession(Map att) {
            this.att = att;
      }
      publicvoid setServletRequest(HttpServletRequest request) {
            this.request = request;
      }
      publicvoid setServletResponse(HttpServletResponse response) {
            this.response = response;
      }
      @Override
      public String execute() {
            att.put("msg", "Hello World from Session!");
            HttpSession session = request.getSession();
            StringBuffer sb =new StringBuffer("Message from request: ");
            sb.append(request.getParameter("msg"));
            sb.append("<br>Response Buffer Size: ");
            sb.append(response.getBufferSize());
            sb.append("<br>Session ID: ");
            sb.append(session.getId());
            message = sb.toString();
            return SUCCESS;
      }
}

--转自北京联动北方科技有限公司



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论