在Struts2的Action中取得请求参数值的几种方法


先看GetRequestParameterAction类代码:

Java代码
  1. publicclassGetRequestParameterActionextendsActionSupport{
  2. privateStringbookName;
  3. privateStringbookPrice;
  4. publicStringgetBookName(){
  5. returnbookName;
  6. }
  7. publicvoidsetBookName(StringbookName){
  8. this.bookName=bookName;
  9. }
  10. publicStringgetBookPrice(){
  11. returnbookPrice;
  12. }
  13. publicvoidsetBookPrice(StringbookPrice){
  14. this.bookPrice=bookPrice;
  15. }
  16. publicStringexecute()throwsException{
  17. //方式一:将参数作为Action的类属性,让OGNL自动填充
  18. System.out.println("方法一,把参数作为Action的类属性,让OGNL自动填充:");
  19. System.out.println("bookName:"+this.bookName);
  20. System.out.println("bookPrice:"+this.bookPrice);
  21. //方法二:在Action中使用ActionContext得到parameterMap获取参数:
  22. ActionContextcontext=ActionContext.getContext();
  23. MapparameterMap=context.getParameters();
  24. StringbookName2[]=(String[])parameterMap.get("bookName");
  25. StringbookPrice2[]=(String[])parameterMap.get("bookPrice");
  26. System.out.println("方法二,在Action中使用ActionContext得到parameterMap获取参数:");
  27. System.out.println("bookName:"+bookName2[0]);
  28. System.out.println("bookPrice:"+bookPrice2[0]);
  29. //方法三:在Action中取得HttpServletRequest对象,使用request.getParameter获取参数
  30. HttpServletRequestrequest=(HttpServletRequest)context.get(ServletActionContext.HTTP_REQUEST);
  31. StringbookName=request.getParameter("bookName");
  32. StringbookPrice=request.getParameter("bookPrice");
  33. System.out.println("方法三,在Action中取得HttpServletRequest对象,使用request.getParameter获取参数:");
  34. System.out.println("bookName:"+bookName);
  35. System.out.println("bookPrice:"+bookPrice);
  36. returnSUCCESS;
  37. }
  38. }

总结:

方法一:当把参数作为Action的类属性,且提供属性的getter/setter方法时,xwork的OGNL会自动把request参数的值设置到类属性中,此时访问请求参数只需要访问类属性即可。 方法二:可以通过ActionContext对象Map parameterMap=context.getParameters();方法,得到请求参数Map,然后通过parameterMap来获取请求参数。需要注意的是:当通过parameterMap的键取得参数值时,取得是一个数组对象,即同名参数的值的集合。 方法三:通过ActionContext取得HttpServletRequest对象,然后使用request.getParameter("参数名")得到参数值。

Struts2中Action接收参数的方法主要有以下三种:
1.使用Action的属性接收参数:
a.定义:在Action类中定义属性,创建get和set方法;
b.接收:通过属性接收参数,如:userName;
c.发送:使用属性名传递参数,如:user1!add?userName=Magci;
2.使用DomainModel接收参数:
a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c.发送:使用对象的属性传递参数,如:user2!add?user.userName=MGC;
3.使用ModelDriven接收参数:
a.定义:Action实现ModelDriven泛型接口,定义Model类的对象(必须new),通过getModel方法返回该对象;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c.发送:直接使用属性名传递参数,如:user2!add?userName=MGC;

实例:

web.xml:

01. <?xmlversion="1.0"encoding="UTF-8"?>
02. <web-appversion="2.5"
05. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee;
07. <welcome-file-list>
08. <welcome-file>hello.jsp</welcome-file>
09. </welcome-file-list>
10. <filter>
11. <filter-name>struts2</filter-name>
12. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
13. </filter>
14. <filter-mapping>
15. <filter-name>struts2</filter-name>
16. <url-pattern>/*</url-pattern>
17. </filter-mapping>
18. </web-app>


struts.xml:
01. <?xmlversion="1.0"encoding="UTF-8"?>
02. <!DOCTYPEstrutsPUBLIC
03. "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
05.
06. <struts>
07. <!--
08. <constantname="struts.enable.DynamicMethodInvocation"value="false"/>
09. <constantname="struts.devMode"value="false"/>
10.
11. <includefile="example.xml"/>
12.
13.
14.
15. <packagename="default"namespace="/"extends="struts-default">
16. <default-action-refname="index"/>
17. <actionname="index">
18. <resulttype="redirectAction">
19. <paramname="actionName">HelloWorld</param>
20. <paramname="namespace">/example</param>
21. </result>
22. </action>
23. </package>
24. -->
25.
26. <!--Addpackageshere-->
27. <constantname="struts.devMode"value="true"/>
28. <packagename="user"namespace="/"extends="struts-default">
29. <actionname="user*"class="cn.edu.ahau.mgc.struts2.action.UserAction{1}">
30. <result>/addSuccess.jsp</result>
31. </action>
32. </package>
33. </struts>


User.java:
01. packagecn.edu.ahau.mgc.struts2.mode;
02.
03. publicclassUser{
04.
05. privateStringuserName;
06. privateStringpassword;
07.
08. publicStringgetUserName(){
09. returnthis.userName;
10. }
11.
12. publicvoidsetUserName(StringuserName){
13. this.userName=userName;
14. }
15.
16. publicStringgetPassword(){
17. returnthis.password;
18. }
19.
20. publicvoidsetPassword(Stringpassword){
21. this.password=password;
22. }
23. }


UserAction1.java:
01. packagecn.edu.ahau.mgc.struts2.action;
02.
03. importcom.opensymphony.xwork2.ActionSupport;
04.
05. publicclassUserAction1extendsActionSupport{
06.
07. privateStringuserName;
08. privateStringpassword;
09.
10. publicStringadd(){
11. System.out.println("userName:"+userName);
12. System.out.println("password:"+password);
13. returnSUCCESS;
14. }
15.
16. publicStringgetUserName(){
17. returnthis.userName;
18. }
19.
20. publicvoidsetUserName(StringuserName){
21. this.userName=userName;
22. }
23.
24. publicStringgetPassword(){
25. returnthis.password;
26. }
27.
28. publicvoidsetPassword(Stringpassword){
29. this.password=password;
30. }
31. }



UserAction2.java:
01. packagecn.edu.ahau.mgc.struts2.action;
02.
03. importcom.opensymphony.xwork2.ActionSupport;
04.
05. importcn.edu.ahau.mgc.struts2.mode.User;
06.
07. publicclassUserAction2extendsActionSupport{
08.
09. privateUseruser;
10.
11. publicStringadd(){
12. System.out.println("userName:"+user.getUserName());
13. System.out.println("password:"+user.getPassword());
14. returnSUCCESS;
15. }
16.
17. publicUsergetUser(){
18. returnthis.user;
19. }
20.
21. publicvoidsetUser(Useruser){
22. this.user=user;
23. }
24.
25. }



UserAction3.java:
01. packagecn.edu.ahau.mgc.struts2.action;
02.
03. importcn.edu.ahau.mgc.struts2.mode.User;
04.
05. importcom.opensymphony.xwork2.ActionSupport;
06. importcom.opensymphony.xwork2.ModelDriven;
07.
08. publicclassUserAction3extendsActionSupportimplementsModelDriven<User>{
09.
10. privateUseruser=newUser();
11.
12. publicStringadd(){
13. System.out.println("userName:"+user.getUserName());
14. System.out.print("password:"+user.getPassword());
15. returnSUCCESS;
16. }
17.
18. publicUsergetModel(){
19. returnthis.user;
20. }
21.
22. }


index.jsp:
01. <%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
02. <%
03. Stringpath=request.getContextPath();
04. StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
05. %>
06.
07. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
08. <html>
09. <head>
10. <basehref="<%=basePath%>">
11.
12. <title>Param</title>
13. <metahttp-equiv="pragma"content="no-cache">
14. <metahttp-equiv="cache-control"content="no-cache">
15. <metahttp-equiv="expires"content="0">
16. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
17. <metahttp-equiv="description"content="Thisismypage">
18. <!--
19. <linkrel="stylesheet"type="text/css"href="styles.css">
20. -->
21. </head>
22.
23. <body>
24. <ahref="user1!add?userName=Magci&password=123456">user1!add?userName=Magci&password=123456</a>
25. <br/>
26. <br/>
27.
28. <ahref="user2!add?user.userName=MGC&user.password=abc">user2!add?user.userName=MGC&user.password=abc</a>
29. <br/>
30. <br/>
31.
32. <ahref="user3!add?userName=MaGC&password=000000">user3!add?userName=MaGC&password=000000</a>
33. </body>
34. </html>


addSuccess.jsp:
01. <%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
02. <%
03. Stringpath=request.getContextPath();
04. StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
05. %>
06.
07. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
08. <html>
09. <head>
10. <basehref="<%=basePath%>">
11.
12. <title>AddSuccess</title>
13. <metahttp-equiv="pragma"content="no-cache">
14. <metahttp-equiv="cache-control"content="no-cache">
15. <metahttp-equiv="expires"content="0">
16. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
17. <metahttp-equiv="description"content="Thisismypage">
18. <!--
19. <linkrel="stylesheet"type="text/css"href="styles.css">
20. -->
21. </head>
22.
23. <body>
24. UserAddSuccess!<br>
25. </body>
26. </html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值