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. android listview 异步加载图片并防止错位

    网上找了一张图, listview 异步加载图片之所以错位的根本原因是重用了 convertView 且有异步操作. 如果不重用 convertView 不会出现错位现象, 重用 convertVie ...

  2. 点击页面任何位置隐藏div

    <include file="Public:header" /> <style type="text/css"> table{width ...

  3. Java递归列出所有文件和文件夹

    package file_op; import java.io.File; public class file_list { static int n =0; /** * @param args */ ...

  4. 实现在Android 下log的使用总结

    一:在源码开发模式下 1:包含头文件: #include <cutils/log.h>   2:定义宏LOG_TAG #define LOG_TAG "MY LOG TAG&qu ...

  5. Verilog学习笔记简单功能实现(五)...............序列检测设计

    这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output ...

  6. 软件代码生成之Codesmith模板.netTiers

              .netTiers模板到2006年就诞生了, 到今天最后一次更新是12/17/2013, 支持.NET 4.5 and Visual Studio 2012 and 2013. n ...

  7. get/post时中文乱码问题的解决办法

    1.文章1 最近遇到一个问题:用get方法传递中文有问题,用post没有问题. 问题简单的描述是这样的: <a href="userGroup.jsp?userGroupName=&l ...

  8. 【背景建模】SACON

    SACON(SAmple CONsensus)算法是基于样本一致性的运动目标检测算法.该算法通过对每个像素进行样本一致性判断来判定像素是否为背景. 算法框架图 由上图可知,该算法主要分为四个主要部分, ...

  9. POS机刷卡跨行交易的清算方式

    POS机刷卡的参与方比较多.以你在星巴克刷卡为例: 持卡人--你 发卡行--你办这张卡的银行,我们假设是工行 商户--星巴克,我们假设星巴克的账户开在建行 收单行--星巴克的刷卡机的归属银行,假设也是 ...

  10. 前端mvc框架backbone.js入门

    关于backbone.js的优缺点,这里就不详谈了,网上关于这方面的讨论很多了,而且各种框架之所以长久生存,通常都是有其特定优势和擅长点的. 使用backbone.js作为前端框架的应用通常都是htm ...