ActionContext.getContext().getParameters():一个学员问题的解答

2012-11-12 15:12:05|  分类: 默认分类 |  标签:struts2   |举报 |字号大中小 订阅

 
 
这是一个学员发给我的问题,虽然有点怪,貌似明白他在思考的问题。

照图贴上,说明一下action是struts2 Action, 还没讲到struts2,他自己学的,不错。

从以上问题可以看出,他试图是想在Action中用Servlet中的request.getParament的方式来获取表单提交的值 (或URL传递的参数)。
 
那问题就是:在Action中如何获取HttpServletRequest对象:
 
1、第一种方法:
                ActionContext ctx = ActionContext.getContext();
Map request = (Map) ActionContext.getContext().get("request");
System.out.println(request.get("name"));
 
2、第二种方法:
                HttpServletRequest req1 = ServletActionContext.getRequest();
String n = req1.getParameter("name");
System.out.println("n------"+n);
 
3、第三种方法:
               HttpServletRequest req2 = (HttpServletRequest) ActionContext
.getContext()
.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
 
String sname = req2.getParameter("name");
System.out.println("req sname----" + sname);
 
以上第2、3种方法都可以获得HttpServletRequest,通过getParameter方法获取值。
 
4、方法:Map<String, Object> params = ActionContext.getContext().getParameters();
                这个方法我也没用过。在Action中获取request一般用第一种方法。
               只能先做一些测试: getParameters()可以通过map数据中key获得页面提交的参数名。理论上通过遍历key,可以获取value, (得到页面传来的值)。或者通过params.get("name")得到name参数的值。但是输出看到的却是如,[Ljava.lang.String;@1e630208 。(一个String对象!)
               通过测试我发现: param.get("name")是一个String数组(为什么要返回数组不清楚,待查。可能的考虑是value应该保存一个object, 如果是一个对象,应该是有多个值的)。
那要用这种方法输出name的值,应该这样写:     System.out.println(((String[])params.get("name"))[0]);  输出即为传过来的name对应的值。OK!
 
 ActionContext.getContext().getParameters()具体待查,欢迎大家补充!
 
要取页面提交,传过来的值,还是用struts2提供的封装的方法。

【转载】关于ActionContext.getContext().getParameters()获值问题的更多相关文章

  1. ActionContext.getContext().getSession()

    ActionContext.getContext().getSession() 获取的是session,然后用put存入相应的值,只要在session有效状态下,这个值一直可用 ActionConte ...

  2. <s:if>标签与ActionContext.getContext().getSession()

    今天在做<s:if>标签中的属性值从 ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE" ...

  3. ValueStack与ContentMap (ActionContext.getContext().getValueStack().set())

    在方法 <action name="zilei" class="dtreeAction" method="zilei">   & ...

  4. 关于ActionContext.getContext()的用法心得

    转: 为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装, ...

  5. 关于ActionContext.getContext()的用法

    为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...

  6. 关于ActionContext.getContext()的使用方法心得

    这个也是我在另外一位仁兄的博客中看到的,原博客的有点长,我把它精简了一下,算看起来比較方便吧. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSe ...

  7. 大约ActionContext.getContext()使用体验

    这是我在另一个人的博客看了,原来博客的时间长一点.我把它简化了一下,运营商,以方便它看起来. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSer ...

  8. ActionContext.getContext()用法

    为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts 2对HttpServletRequest.HttpSession和ServletContext进行了封装,构造了 ...

  9. Web版需求征集系统所得2,servlet中request.getParameter获值乱码问题解决

    servlet获值乱码问题解决 解决办法一(最简单有效) request.setCharacterEncoding("utf-8"); 解决办法二 因为乱码问题的产生是因为默认格式 ...

随机推荐

  1. android-support-xxxx.jar NoClassDefFoundError

    当你的项目出现以下红色提示的时候,要小心了,因为很可能因为这个错误而导致解释不通的异常出现. Found 2 versions of android-support-v4.jar in the dep ...

  2. js获取location.href的参数实例代码

    本文为大家介绍下js如何获取location.href的参数,需要注意的是去掉参数里最开头的?号,具体实现如下,有需要的朋友可以参考下,希望对大家有所帮助 window.location.search ...

  3. 常用ASCII 码对照表

    目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Interchange,美国标准 ...

  4. Spark菜鸟学习营Day2 分布式系统需求分析

    Spark菜鸟学习营Day2 分布式系统需求分析 本分析主要针对从原有代码向Spark的迁移.要注意的是Spark和传统开发有着截然不同的思考思路,所以我们需要首先对原有代码进行需求分析,形成改造思路 ...

  5. iblog语法高亮示例

    -------------------------------------------------------------------------------------- iblog 是一款 Sub ...

  6. c++中new分配动态数组

    变长一维数组     这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组.实现变长数组最简单的是变长一维数组,你可以这样做:  //文件名: array01.cpp ...

  7. odp.net以及oracle oledb安装

    连接Oracle数据库需要Oracle数据访问组件(ODAC). 1. 下载ODAC:http://www.oracle.com/technetwork/cn/database/windows/dow ...

  8. iOS 进阶 第九天(0408)

    0408 makekeyAndVisible解释 一个程序可以有多个Window,但只有一个窗口能够成为主窗口.如图中所示,此时的window2是主窗口.主窗口用处大了.从iOS7开始无论是主窗口还是 ...

  9. 深度分析 Java 的 ClassLoader 机制(源码级别)

    写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoa ...

  10. OC self super isa指针

    self指针: self是oc面向对象设计中的一个特殊指针,相当于java中的this,但是比this强大,this只能访问实例对象的相关方法和成员变量,或者说this只代表实例对象: self不仅可 ...