struts2中jsp页面传值到action方式总结

jsp页面跟通常的html传值一样 通常有两种方式

1.form表单传值

2.url方式传值

通常后台接受前端传值 都是用的 request.getParameter("username")

但是在struts框架下 可以用set方法让action自动接收 也更方便

所以 action接收值也有两种方式

1.request.getParameter("username")

2.set 



下面记录多种组合方式,大家可以根据相应的情况选择使用:

方式一 jsp中form传值username,password, action中set方法接收

  1. <%@taglib prefix="s" uri="/struts-tags" %>  
  1. <form action="getIp/login" method="post" name="form1">  
  2.         用户名:  
  3.         <s:textfield name="username" />  
  4.         <br />   
  5.         密 码:  
  6.         <s:password name="password" />  
  7.         <br />  
  8.         <s:submit value="提交" />  
  9.     </form>  



login.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8. <%@taglib prefix="s" uri="/struts-tags" %>  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11. <head>  
  12. <base href="<%=basePath%>">  
  13.   
  14. <title>login page</title>  
  15.   
  16. </head>  
  17. <body>  
  18.     <form action="getIp/login" method="post" name="form1">  
  19.         用户名:  
  20.         <s:textfield name="username" />  
  21.         <br />   
  22.         密 码:  
  23.         <s:password name="password" />  
  24.         <br />  
  25.         <s:submit value="提交" />  
  26.     </form>  
  27. </body>  
  28. </html>  

loginAction.java

  1. package action;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class loginAction extends ActionSupport {  
  6.     /** 
  7.      * 登录 
  8.      */  
  9.     private static final long serialVersionUID = -6797327769546503535L;  
  10.     private String username;  
  11.     private String password;  
  12.   
  13.     public String getUsername() {  
  14.         return username;  
  15.     }  
  16.   
  17.     public void setUsername(String username) {  
  18.         this.username = username;  
  19.     }  
  20.   
  21.     public String getPassword() {  
  22.         return password;  
  23.     }  
  24.   
  25.     public void setPassword(String password) {  
  26.         this.password = password;  
  27.     }  
  28.   
  29.     public String execute() {  
  30.         System.out.println("username:" + username);  
  31.         System.out.println("password:" + password);  
  32.         return SUCCESS;  
  33.     }  
  34.   
  35. }  


spring文件
action.xml

  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <!-- 指定Spring配置文件的Schema信息 -->    
  3. <beans xmlns="http://www.springframework.org/schema/beans"    
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"    
  5.     xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"    
  6.     xmlns:mongo="http://www.springframework.org/schema/data/mongo"    
  7.     xmlns:context="http://www.springframework.org/schema/context"    
  8.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  9.     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
  10.     http://www.springframework.org/schema/tx    
  11.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd    
  12.     http://www.springframework.org/schema/context    
  13.     http://www.springframework.org/schema/context/spring-context-3.1.xsd    
  14.     http://www.springframework.org/schema/aop    
  15.     http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">    
  16.     
  17.    <!--  <bean id="testAction" class="action.TestAction">  
  18.     </bean>   -->  
  19.    <bean id="login" class="action.loginAction">  
  20.     </bean>  
  21. </beans>    

struts文件

action.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
  5. <struts>  
  6.     <package name="getIp" extends="json-default" namespace="/getIp">  
  7.     <!--     <action name="testJson" class="testAction">  
  8.             <result type="json"></result>  
  9.         </action>       
  10.         <action name="testJsp"  class="testAction">  
  11.             <result name="success">/index.jsp</result>  
  12.         </action>  -->  
  13.         <action name="login"  class="login">  
  14.             <result type="json"></result>  
  15.         </action>   
  16.     </package>  
  17.       
  18.       
  19. </struts>  
结果

成功传值






方式二 jsp中a标签url传值username,password, action中set方法接收

  1. <a href="getIp/login?username=123&password=123">点击传值</a>  

其它部分与方式一一样 

完整jsp页面代码

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8. <%@taglib prefix="s" uri="/struts-tags" %>  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11. <head>  
  12. <base href="<%=basePath%>">  
  13.   
  14. <title>login page</title>  
  15.   
  16. </head>  
  17. <body>  
  18.     <form action="getIp/login" method="post" name="form1">  
  19.         用户名:  
  20.         <s:textfield name="username" />  
  21.         <br />   
  22.         密 码:  
  23.         <s:password name="password" />  
  24.         <br />  
  25.         <s:submit value="提交" />  
  26.     </form>  
  27.     <a href="getIp/login?username=123&password=123">点击传值</a>  
  28. </body>  
  29. </html>  


方式三  jsp中js的ajax或者jquery用url传值username,password, action中set方法接收

添加jQuery框架


  1. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>  
  1.     <script>  
  2. $(function() {  
  3. <span style="white-space:pre">    </span>bindLogin();  
  4. });  
  5. function bindLogin() {  
  6. <span style="white-space:pre">    </span>$("#btnSubmit").bind("click",  
  7. <span style="white-space:pre">    </span>function() {<span style="white-space:pre">       </span>  
  8. <span style="white-space:pre">        </span>var txtUserName = $("#username3").val();  
  9. <span style="white-space:pre">        </span>var txtPwd = $("#password3").val();  
  10. <span style="white-space:pre">        </span>if (! (txtUserName && txtPwd)) {  
  11. <span style="white-space:pre">            </span>alert("请输入帐号和密码;");  
  12. <span style="white-space:pre">            </span>return;  
  13. <span style="white-space:pre">        </span>}  
  14. <span style="white-space:pre">        </span>$.getJSON("<%=basePath%>getIp/login?username=" + txtUserName + "&password=" + txtPwd,  
  15. <span style="white-space:pre">        </span>function(data) {<span style="white-space:pre">   </span>  
  16. <span style="white-space:pre">        </span>alert(data);<span style="white-space:pre">   </span>  
  17. <span style="white-space:pre">            </span>if (data.aaa == "fail") {  
  18. <span style="white-space:pre">                </span>alert("很抱歉,用户名不存在或者密码错误。---请确认密码");  
  19. <span style="white-space:pre">            </span>}else {  
  20. <span style="white-space:pre">                </span>window.location.href = "<%=basePath%>index.jsp";  
  21. <span style="white-space:pre">                </span>sessionValuesTemp = data.userId;  
  22. <span style="white-space:pre">            </span>}   
  23. <span style="white-space:pre">        </span>});  
  24. <span style="white-space:pre">    </span>});  
  25.   
  26.   
  27. }  
  28. <span style="white-space:pre">    </span></script>  
  1. <div class="login_box_wrapper">  
  2. <span style="white-space:pre">        </span><div class="login_box">  
  3. <span style="white-space:pre">            </span><ul>  
  4. <span style="white-space:pre">            </span><li class="devideLine"><span>用户名</span><input type="text" class="userName" id="username3" /></li>  
  5. <span style="white-space:pre">            </span><li><span>密码</span><input type="password" class="passWord" id="password3" /></li>  
  6. <span style="white-space:pre">            </span></ul>  
  7. <span style="white-space:pre">            </span><button type="button"  id="btnSubmit">方式三提交</button>  
  8. <span style="white-space:pre">        </span></div>  
  9. <span style="white-space:pre">    </span></div>  

其它部分与方式一一样 

完整jsp页面代码

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8. <%@taglib prefix="s" uri="/struts-tags" %>  
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <html>  
  11. <head>  
  12.   
  13. <base href="<%=basePath%>">  
  14.   
  15. <title>login page</title>  
  16. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>  
  17.   
  18.     <script>  
  19. $(function() {  
  20.     bindLogin();  
  21. });  
  22. function bindLogin() {  
  23.     $("#btnSubmit").bind("click",  
  24.     function() {          
  25.         var txtUserName = $("#username3").val();  
  26.         var txtPwd = $("#password3").val();  
  27.         if (! (txtUserName && txtPwd)) {  
  28.             alert("请输入帐号和密码;");  
  29.             return;  
  30.         }  
  31.         $.getJSON("<%=basePath%>getIp/login?username=" + txtUserName + "&password=" + txtPwd,  
  32.         function(data) {      
  33.         alert(data);      
  34.             if (data.aaa == "fail") {  
  35.                 alert("很抱歉,用户名不存在或者密码错误。---请确认密码");  
  36.             }else {  
  37.                 window.location.href = "<%=basePath%>index.jsp";  
  38.                 sessionValuesTemp = data.userId;  
  39.             }   
  40.         });  
  41.     });  
  42.   
  43. }  
  44.     </script>  
  45. </head>  
  46. <body>  
  47.     <form action="getIp/login" method="post" name="form1">  
  48.         用户名:  
  49.         <s:textfield name="username" />  
  50.         <br />   
  51.         密 码:  
  52.         <s:password name="password" />  
  53.         <br />  
  54.         <s:submit value="提交" />  
  55.     </form>  
  56.     <a href="getIp/login?username=123&password=123">点击传值</a>  
  57.     <div class="login_box_wrapper">  
  58.         <div class="login_box">  
  59.             <ul>  
  60.             <li class="devideLine"><span>用户名</span><input type="text" class="userName" id="username3" /></li>  
  61.             <li><span>密码</span><input type="password" class="passWord" id="password3" /></li>  
  62.             </ul>  
  63.             <button type="button"  id="btnSubmit">方式三提交</button>  
  64.         </div>  
  65.     </div>  
  66. </body>  
  67. </html>  



传值为封装类

例如我们把用户名密码封装成用户 User

User.Java

  1. package entity;  
  2.   
  3. public class User {  
  4.   
  5.     private String username;  
  6.     private String password;  
  7.   
  8.     public String getUsername() {  
  9.         return username;  
  10.     }  
  11.   
  12.     public void setUsername(String username) {  
  13.         this.username = username;  
  14.     }  
  15.   
  16.     public String getPassword() {  
  17.         return password;  
  18.     }  
  19.   
  20.     public void setPassword(String password) {  
  21.         this.password = password;  
  22.     }  
  23.   
  24. }  


方式一

LoginAction.java中 
  1. public class loginAction extends ActionSupport{  
  2. private User user;   
  3. public  User getUser()  
  4. return user; }   
  5. public void setUser(User user)  
  6. this.user=user; } }  
jsp页面中
  1. <form action="login" method="post"name="form1">   
  2. 用户名:<s:textfield name="user.username"/><br/>  
  3. 密 码:<s:password  name="user.password"/><br/>  
  4. <s:submit value="提交"/>  
  5. </form>   



方式二

Action类必须实现ModelDriven接口,同样把表单传来的数据封装起来,Action类中必须实例化该对象,并且要重写getModel()方法

  1. public class loginAction extends ActionSupport implements ModelDriven<User>{  
  2. private User user =new User();  
  3. public User getModel(){  
  4.  return user;  
  5.  }  
  6.  } 


举个例子你就好明白了。
例如,首先,你写了一个ExampleBean里面有属性userName和password都是String类型,然后别忘了写他们的setter和getter方法,public void setUserName(String userName)等等。
然后,写Action,在Action类中加入成员变量private String uName;private String uPwd;
一定要再写上他们的Setter和Getter方法。public void setUName(String s)等等。
然后你在execute方法中创建一个bean对象。如:
ExampleBean b = new ExampleBean(this.getUName(),this.getUPwd());
就可以创建这个bean对象了。

具体传值流程是:首先你访问jsp页面,然后比如jsp页面上有一个登录框,你可以输入用户密码。
<s:form action="你设的Actiong名字">
<s:textfield name="uName" label="用户名"/>
<s:password name="uPwd" label="密码"/>
<s:submit value="Go"/>
</s:form>
这里注意的是标签中name属性对应的就是Action里面的值.name叫uName,提交表单后在Action里就会自动调用setUName("你输入的值");然后就执行execute方法,你就可以创建bean了。
明白过程了吗?如果不会还可以追问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值