您的位置:首页 > 其它

Action 获取请求参数

2016-02-26 17:24 274 查看
摘自:http://blog.163.com/ppy2790@126/blog/static/1032422412012101213255272/

试图是想在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提供的封装的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: