Struts2封装获取表单数据方式:
Posted java学习过程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2封装获取表单数据方式:相关的知识,希望对你有一定的参考价值。
(1)原始的封装方法
封装到实体类中:
form.jsp重要代码
<form action="${pageContext.request.contextPath }/form.action" method="post">
用户名:<input type="text" name="username"/><br/>
密 码 :<input type="password" name="password"/><br/>
地 址 :<input type="text" name="address"/><br/>
<input type="submit" value="提交">
</form>
</body>
实体类User重要代码
package com.limuzi.entity;
public class User {
private String username;
private String password;
private String addresss;
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 String getAddresss() {
return addresss;
}
public void setAddresss(String addresss) {
this.addresss = addresss;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password
+ ", addresss=" + addresss + "]";
}
}
FormAction类的代码:
package com.limuzi.action;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.limuzi.entity.User;
import com.opensymphony.xwork2.ActionSupport;
//使用ServletActionContext获取表单数据封装到实体类的对象里面
public class FormAction extends ActionSupport {
@Override
public String execute() throws Exception {
//获取表单数据
HttpServletRequest request = ServletActionContext.getRequest();
String username = request.getParameter("username");
String password = request.getParameter("password");
String address = request.getParameter("address");
//封装到实体类User中
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setAddresss(address);
System.out.println(user);
return null;
}
}
Struts.xml配置
<?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>
<package name="demo2" extends="struts-default" namespace="/">
<action name="form" class="com.limuzi.action.FormAction">
<result>/form.jsp</result>
</package>
</struts>
Web.xml配置与之前的一样。
浏览器结果:
控制台显示:
User [username=李木子, password=11111, addresss=河北省]
(2)属性封装:把表单提交属性封装到action里面
步骤:
① 在action变量位置定义变量,变量名称和表单输入项的name属性值相同。
② 生成变量的set、get方法。
(3)模型驱动封装:表单输入项的名称和实体类属性必须相同。
操作步骤:
① Action实现接口ModelDriven
② 实现接口的方法getModel,将创建的对象返回
③ 在action里面创建实体类对象
eg:
User实体类,jsp页面、struts.xml配置和之前相同。
DemoAction代码:
package com.limuzi.struts;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class DemoAction extends ActionSupport implements ModelDriven<User> {
//创建对象
private User user = new User();
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
System.out.println(user);
return NONE;
}
}
利用debug断点来查看传值是否成功。
使用模型驱动和属性封装需注意:
在一个action中,获取表单数据可以通过属性封装,使用模型驱动封装,不能同时使用属性封装和模型驱动封装获取同一个表单数据。若两个同时使用,只执行模型驱动封装,不执行属性封装。
以上是关于Struts2封装获取表单数据方式:的主要内容,如果未能解决你的问题,请参考以下文章
struts2获取表单数据之 属性封装 模型驱动 表达式封装 对象封装到list集合 对象封装到map集合 五种方便的封装方式