package com.hanqi.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

public class TestAction {

    //解耦方式
//封装了WEB资源
//使用ActionContext
@SuppressWarnings("unchecked")
public String testweb()
{
//访问web资源
System.out.println("经过了action类");
//单例模式
//Action实例的上下文对象
ActionContext ac= ActionContext.getContext();
//1、获取application
Map<String, Object>mapApp = ac.getApplication(); System.out.println("app1="+mapApp.get("app1"));
//放入新的键值对
mapApp.put("app2", "新放入的application");
//2、获取session资源
Map<String, Object>mapSes=ac.getSession();
System.out.println("ses1="+mapSes.get("ses1"));
//放入新的值
mapSes.put("ses2","放入的新的session");
mapSes.remove("ses1");
//3、获取request资源
Map<String, Object>mapReq= (Map<String, Object>) ac.get("request");
//不能直接获取之前的request属性
System.out.println("req1="+mapReq.get("req1"));
//可以放入新的request的属性
mapReq.put("req2", "放入新的request");
//4、直接获取传递的参数
Map<String, Object>mapPar=ac.getParameters();
//参数值被封装成String数组
String[] str=(String[])mapPar.get("user");
for(String t:str)
{
System.out.println("user="+t);
}
//放入新的参数不能被获取到
mapPar.put("pw", new String[]{""});
return "success"; } }
package com.hanqi.action;
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware; public class TestActionAware implements ApplicationAware,SessionAware,RequestAware,ParameterAware{
private Map<String, Object>mapApp;
private Map<String, Object>mapSes;
private Map<String, Object>mapReq;
private Map<String, String[]>mapPar;
//实现ApplicationAware的方法
//提供给struts2,放入application的数据集合
@Override
public void setApplication(Map<String, Object> arg0) { //接受
mapApp=arg0; }
public String testAware()
{
//访问application
System.out.println("app1="+mapApp.get("app1")); mapApp.put("app2", "以Aware放入的application"); //访问session
System.out.println("ses1="+mapSes.get("ses1"));
mapSes.put("ses2", "以Aware放入的Session");
//访问 request
System.out.println("req="+mapReq.get("req1"));
mapReq.put("req2", "以Aware放入的request");
//访问Parameter
String[]str=mapPar.get("user");
for(String t:str)
{
System.out.println("user"+t);
}
mapPar.put("pw", new String[]{""});
return "success";
} @Override
public void setSession(Map<String, Object> arg0) { mapSes=arg0;
} @Override
public void setRequest(Map<String, Object> arg0) { mapReq=arg0;
} @Override
public void setParameters(Map<String, String[]> arg0) { mapPar=arg0;
} }
package com.hanqi.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; public class TestServletAction { public String testServletAction()
{
//访问原生的web资源
//得到ServletContext,相当于application
ServletContext sc=ServletActionContext.getServletContext();
System.out.println("app1="+sc.getAttribute("app1"));
sc.setAttribute("app2", "原生方式放入的内容");
//2、访问session
HttpServletRequest hsr=ServletActionContext.getRequest();
HttpSession hs=hsr.getSession();
System.out.println("ses1="+hs.getAttribute("ses1"));
hs.setAttribute("ses2", "原生方式放入的内容"); //3、访问request
System.out.println("req1="+hsr.getAttribute("req1")); hsr.setAttribute("req2", "原生方式放入的request");
//4、访问parameter
System.out.println("user1="+hsr.getParameter("user"));
System.out.println("user2="+hsr.getParameter("user"));
return "success";
} }
package com.hanqi.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware; public class TestServletActionAware implements ServletRequestAware, ServletContextAware { private ServletContext sc;
private HttpServletRequest hsr;
private HttpSession hs;
@Override
public void setServletContext(ServletContext arg0) {
sc=arg0; } @Override
public void setServletRequest(HttpServletRequest arg0) {
hsr=arg0;
hs=arg0.getSession(); }
public String testServletAware()
{
System.out.println("app1= "+sc.getAttribute("app1"));
sc.setAttribute("app2", "新的app2");
System.out.println("ses1= "+hs.getAttribute("ses1"));
hs.setAttribute("ses2", "新的ses2");
System.out.println("user= "+hsr.getParameter("user")); return "success";
} }

用struts2获取session、request、parmeter的方法的更多相关文章

  1. Spring MVC 中获取session的几种方法

    Spring MVC 中使用session是一种常见的操作,但是大家上网搜索一下可以看到获取session的方式方法五花八门,最近,自己终结了一下,将获取session的方法记录下来,以便大家共同学习 ...

  2. Struts2获取Session方法

    Struts2里面有三种方法可以获取request,最好使用ServletRequestAware接口通过IOC机制注入Request对象. 方法1:IOC方式action类实现SessionAwar ...

  3. 【Struts2】Struts2获取session的三种方式

    1.Map<String,Object> map =  ActionContext.getContext().getSession(); 2.HttpSession session = S ...

  4. Struts2获取Session的三种方式

    1.Map<String,Object> session =  ActionContext.getContext().getSession(); session.put("cod ...

  5. CakePHP Model中( 获取Session)使用Component的方法

    有时候我们需要在Model中使用Session,大家知道CakePHP把操作Session的方法封装为了一个Component, 在Model中正常读取Session的方法: 在 "app_ ...

  6. views获取数据 -- request包含的方法

    request.GET request.POST request.FILES request.path_info request.xxx.getlist request.method request. ...

  7. spring的普通类中获取session和request对像

    在使用spring时,经常需要在普通类中获取session,request等对像. 1.第一钟方式,针对Spring和Struts2集成的项目: 在有使用struts2时,因为struts2有一个接口 ...

  8. spring在普通类中获取session和request

    在使用spring时,经常需要在普通类中获取session,request等对像.比如一些AOP拦截器类,在有使用struts2时,因为struts2有一个接口使用org.apache.struts2 ...

  9. 获取session、request、parmeter的方法

    package com.hanqi.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public ...

随机推荐

  1. WinForms 2015V2版本Reports支持更多种条形码!

    Winforms版Reports的条形码引擎从未如此强大.除了支持38种新旧条形码以外,还增添了很多您一定会喜欢的新属性.如果您因此就担心已经在使用的条形码,那么请您放宽心,因为已有的条形码会继续使用 ...

  2. Python中的编码

    http://liguangming.com/how-to-use-utf-8-with-python http://www.lijiejie.com/python-sys-setdefaultenc ...

  3. Scalaz(47)- scalaz-stream: 深入了解-Source

    scalaz-stream库的主要设计目标是实现函数式的I/O编程(functional I/O).这样用户就能使用功能单一的基础I/O函数组合成为功能完整的I/O程序.还有一个目标就是保证资源的安全 ...

  4. [moka同学笔记]Yii2.0 modal的使用

    第一次使用,时候不明白什么原理,大概用了几次后,才模模糊糊搞清楚原来是怎么一回事,现在就把写过的代码,贴在下边. 1.在视图文件中, 第一步首先在index.php文件中 做了一个a链接的按钮 调用了 ...

  5. 使用maven profile实现多环境可移植构建(转自CSDN)

    使用maven profile实现多环境可移植构建 标签: maven profilemaven自动构建maven自动部署maven可移植构建持续集成 2014-04-25 23:37 26905人阅 ...

  6. 什么时候加上android.intent.category.DEFAULT

    什么时候加上android.intent.category.DEFAULT 1.要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent ...

  7. C# Excel处理工具

    需求:选择一个Excel文件,然后对该Excel文件进行处理,再导出一个处理后的Excel文件. 效果图 声明:我对winform开发不熟,但是我看到许多开发人员做东西只管交差,从不考虑用户体验,也不 ...

  8. java集合-HashTable

    概述 和 HashMap 一样,Hashtable 也是一个散列表,它存储的内容是键值对. Hashtable 在 Java 中的定义为: public class Hashtable<K,V& ...

  9. jQuery Wheel 环形菜单插件5种效果演示

    很酷的菜单-jQuery Wheel 环形菜单插件5种效果演示在线预览 下载地址 实例代码 <div class="container"> <!-- Top Na ...

  10. SharePoint Online 创建门户网站系列之图片滚动

    前 言 创建SharePoint Online栏目我们之前已经介绍过了,具体就是内容编辑器方式.自带WebPart方式和JavaScript读取后台数据前台做展示的三种: 但是,对于复杂的展示来说,这 ...