Struts2里如何取得request,session,application

第一种:
取得MAP类型的request,session,application
在java文件里写

package com.xjtu.st;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
    private Map request;
    private Map session;
    private Map application;
    public LoginAction(){
        request = (Map)ActionContext.getContext().get("request");
        session = ActionContext.getContext().getSession();
        application = ActionContext.getContext().getApplication();
    }

    public String execute(){
        request.put("rs", "rs");
        session.put("ss", "ss");
        application.put("as", "as");

        return SUCCESS;
    }
}

ActionContext.getContext()是获得Action的上下文,然后可以获得MAP类型的request等
在输出页面可获得参数

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

    <title>My JSP ‘MyJsp.<a href="http://www.2cto.com/kf/web/jsp/" target="_blank" class="keylink">jsp</a>‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

   hello  <br>
 <s:property value="#request.rs"> <br><!--  //通过标签取值-->
   <s:property value="#session.ss"> <br>
   <s:property value="#application.as"> <br>
   <%=request.getAttribute("rs") %><br><!-- 用原始的方法取值-->
     <%=session.getAttribute("ss") %><br>
       <%=application.getAttribute("as") %><br>

<!--html>
</s:property></s:property></s:property>

第二种:
实现RequestAware,SessionAware,ApplicationAware接口,该方法成为DI(依赖注入)或者IOC(控制反转)。代码如下

package com.xjtu.st;

import java.util.Map;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
    private Map request;
    private Map session;
    private Map application;

    public String execute(){
        request.put("rs", "rrs");
        session.put("ss", "sss");
        application.put("as", "aas");

        return SUCCESS;
    }

    public void setRequest(Map<string, object=""> request) {
        // TODO Auto-generated method stub
        this.request=request;

    }

    public void setSession(Map<string, object=""> session) {
        // TODO Auto-generated method stub
        this.session= session;
    }

    public void setApplication(Map<string, object=""> application) {
        // TODO Auto-generated method stub
        this.application = application;
    }
}
</string,></string,></string,>

前面2种是取得Map类型的,后两种是取得HtteServletRequest,HttpSession,ServletContext类型的办法第三种:

代码如下

package com.xjtu.st;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;

    public LoginAction(){
        request= ServletActionContext.getRequest();
        session = request.getSession();
        application = session.getServletContext();
    }
    public String execute(){
        request.setAttribute("rs", "rrrs");
        session.setAttribute("ss", "ssss");
        application.setAttribute("as", "aaas");

        return SUCCESS;
    }

}

该方法不常用第四种:
也是ioc的方式
代码如下

package com.xjtu.st;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport implements ServletRequestAware{
    private HttpServletRequest request;
    private HttpSession session;
    private ServletContext application;

    public String execute(){
        request.setAttribute("rs", "rrrrs");
        session.setAttribute("ss", "sssss");
        application.setAttribute("as", "aaaas");

        return SUCCESS;
    }
    public void setServletRequest(HttpServletRequest request) {
        // TODO Auto-generated method stub
        this.request = request;
        session = request.getSession();
        application = session.getServletContext();

    }

}
时间: 2024-08-05 07:05:04

Struts2里如何取得request,session,application的相关文章

struts2 action中获取request session application的方法

共四种方式: 其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象 而Map就是把request对象中的属性取出做成了键值对而已. [方法一] public class LoginAction { private Map request; private Map session; private Map application; public String execute() { request = (Map)ActionContext.getCo

struts2 访问或添加request/session/application属性

第一种方法: ActionContext ctx = ActionContext.getContext(); ctx.put("r1", list);//向request中添加属性 ctx.getSession().put("s1",list);//向session中添加属性 ctx.getApplication().put("a1", list);//向application中添加属性 HttpSession session =null; se

page,request,session,application四个域对象的使用及区别

转自:page,request,session,application四个域对象的使用及区别 1.page指当前页面.只在一个jsp页面里有效 .2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以使用这个变量. 3.Session 有效范围当前会话,从浏览器打开到浏览器关闭这个过程. 4.application它的有效范围是整个应用. 作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一

暑期项目经验(九) -- request session application

request.session.application 一.基础知识 可以看看  浅谈:request,session,application(http://blog.csdn.net/hzc543806053/article/details/7416007) 要点: 作用域: request<session<application 共同方法:都可以使用 setAttribute(String name , Object o ) ,getAttribute(String name) 二.在ja

Strut2 ognl取出存放在request,session,application和对象栈的中的值

1.取出request,session,applicaiton中的值 a.往里面加入request,session,application中加入值 public String testServlet(){ ServletActionContext.getRequest().setAttribute("request_username", "username"); ActionContext.getContext().getSession().put("se

request, session, application辨析(待更新)

作用域 request < session < application 分析 1. request 只在一次请求中有效,当请求发送变化时,信息将失效. 2. session 在当前一次会话中有效,即当同一个浏览器多次访问时,在这多次访问中传递信息,就是session的作用. session失效: session过期 服务器调用invalidate() 通过<%@ page session="false" %>(不推荐使用) 3. application 在一次服

struct2访问或添加request/session/application

访问或添加request/session/application1 通过ActionContext//这样放置public String execute(){ActionContext ctx = ActionContext.getContext();ctx.getApplication().put("app","lll");ctx.getSession().put("ses","session范围");ctx.put(&qu

struts2_9_访问或添加request/session/application属性

web.xml文件1中相同. 1)HelloAction类中的代码: public class HelloAction { public String execute() { ActionContext ctx = ActionContext.getContext(); // 仅仅只是访问和添加三个范围属性使用该方法 // ctx.getApplication().put("app", "application"); // ServletContext里放入app

page request session application 范围

在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内, 在哪一个JSP页面中可以访问这些对象.例如,session对象在会话期间内,可以在多个页面中被访问.application对象在整个Web应 用程序的生命周期中都可以被访问.在JSP中,有4种范围,如下所示. 1. page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中.在这个范围内的对象,只能在创建对象的页面