struts2的Action从页面获取传递的参数的三种方法
2016-06-05 10:59
579 查看
1.直接在Action中获取页面传递的参数
UserAction.java
struts.xml
index.jsp
2.使用javaEeen进行封装之后获取页面传递的参数
User.java
Action.java
setUser创建一个User的实例,会导致参数丢失;如果没有初始化user,并且有getUser方法方法,则传递第一个参数时会通过setUser创建一个User实例,之后传递的参数时getUser会获取传递第一个参数时创建的User实例。
有初始化,有getUser方法
无初始化,有getUser方法
无初始化,无getUser方法
struts.xml
index.jsp
注意:input的name的属性名一定要是"在Action中User的变量名.User中相应的变量名"
3.在第二种方法的基础上使用ModelDriven接口
User.java和struts.xml与第二种方法的一样
Action.java
index.jsp
注意:input的name的属性名直接是"User中相应的变量名"就行,因为ModelDriven接口会通过getModel()方法把页面中传递的参数赋给user中,但是必须在getModel()方法中实例化user
UserAction.java
<span style="font-size:18px;">import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private String username; private String password; private int age; private Date birthday; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String register(){ System.out.println("UserAction register......"); System.out.println("username "+username); System.out.println("password "+password); System.out.println("age "+age); System.out.println("birthday "+birthday); return SUCCESS; } }</span>
struts.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="user_*" class="com.zucc.action.UserAction" method="{1}"> <result>index.jsp</result> </action> </package> </struts></span>
index.jsp
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>获取表单</title> <style type="text/css"> input { font-family: Arial; } </style> </head> <body> <h1>获取页面参数</h1> <form action="user_register" method="post"> 帐号:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> 年龄:<input type="text" name="age"/><br/> 生日:<input type="text" name="birthday"/><br/> <input type="submit" value="提交"/> </form> </body> </html></span>
2.使用javaEeen进行封装之后获取页面传递的参数
User.java
<span style="font-size:18px;">import java.util.Date; public class User { private String username; private String password; private int age; private Date birthday; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } } </span>
Action.java
<span style="font-size:18px;">import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String register(){ System.out.println("username "+user.getUsername()); System.out.println("password "+user.getPassword()); System.out.println("age "+user.getAge()); System.out.println("birthday "+user.getBirthday()); return SUCCESS; } }</span>注意:不管有没有初始化user,都必须要getUser方法。因为初始化user后会创建一个User的实例,会把页面传递的参数通过getUser方法放到这个实例中;如果没有初始化user,并没有getUser方法方法,则每传递一个参数都会通过
setUser创建一个User的实例,会导致参数丢失;如果没有初始化user,并且有getUser方法方法,则传递第一个参数时会通过setUser创建一个User实例,之后传递的参数时getUser会获取传递第一个参数时创建的User实例。
有初始化,有getUser方法
无初始化,有getUser方法
无初始化,无getUser方法
struts.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="user_*" class="com.zucc.action.UserAction" method="{1}"> <result>index.jsp</result> </action> </package> </struts></span>
index.jsp
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>获取表单</title> <style type="text/css"> input { font-family: Arial; } </style> </head> <body> <h1>获取页面参数</h1> <form action="user_register" method="post"> 帐号:<input type="text" name="user.username"/><br/> 密码:<input type="password" name="user.password"/><br/> 年龄:<input type="text" name="user.age"/><br/> 生日:<input type="text" name="user.birthday"/><br/> <input type="submit" value="提交"/> </form> </body> </html></span>
注意:input的name的属性名一定要是"在Action中User的变量名.User中相应的变量名"
3.在第二种方法的基础上使用ModelDriven接口
User.java和struts.xml与第二种方法的一样
Action.java
<span style="font-size:18px;">import java.util.Date; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user; @Override public User getModel() { // TODO Auto-generated method stub this.user = new User(); return this.user; } public String register(){ System.out.println("username "+user.getUsername()); System.out.println("password "+user.getPassword()); System.out.println("age "+user.getAge()); System.out.println("birthday "+user.getBirthday()); return SUCCESS; } }</span>
index.jsp
<span style="font-size:18px;"><%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>获取表单</title> <style type="text/css"> input { font-family: Arial; } </style> </head> <body> <h1>获取页面参数</h1> <form action="user_register" method="post"> 帐号:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> 年龄:<input type="text" name="age"/><br/> 生日:<input type="text" name="birthday"/><br/> <input type="submit" value="提交"/> </form> </body> </html></span>
注意:input的name的属性名直接是"User中相应的变量名"就行,因为ModelDriven接口会通过getModel()方法把页面中传递的参数赋给user中,但是必须在getModel()方法中实例化user
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- ActionScript 3.0 编程体验
- 再谈Jquery Ajax方法传递到action(补充)
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- 详解Webwork中Action 调用的方法
- ASP.NET MVC:Filter和Action的执行介绍
- jQuery中设置form表单中action值的实现方法
- NopCommerce架构分析之(五)Model绑定Action参数
- jQuery改变form表单的action,并进行提交的实现代码
- 使用jquery提交form表单并自定义action的实现代码
- JSP学习经验小结分享
- JSP 多条SQL语句同时执行的方法
- 在jsp页面中响应速度提高的7种方法分享
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- Ajax in action 英文版配书源码 下载
- 使用JSP制作一个超简单的网页计算器的实例分享