Struts2数据封装的三种方式
数据封装会自动转型,但有些转不了,比如年龄填写"aaa"字符串。此时报错信息应在控制台输出
下载
加到lib目录下
编写log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts SYSTEM "http://struts.apache.org/dtds/struts-2.5.dtd" >
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.opensymphony.xwork2" level="info"/>
<Logger name="org.apache.struts2" level="info"/>
<Logger name="org.demo.rest" level="debug"/>
<Root level="warn">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
如在页面就输出简略错误信息需要标签库<%@ taglib uri="/struts-tags" prefix="s" %>
并在输出西南西的位置写<s:fielderror />
---------------------------------------以下是实例代码-------------------------
webContent目录

src目录

struts.xml把下面代码引入

以下是demo1.jsp的代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Struts2数据封装</h1><br>
<h3>方式一:属性驱动--提供set方法</h3><br>
<s:fielderror />
<form action="${ pageContext.request.contextPath }/userAction1.action" 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="text" name="salary"><br>
<input type="submit" value="提交"><br>
</form>
<h3>方式二:属性驱动--在页面中提供表达式</h3><br>
<form action="${ pageContext.request.contextPath }/userAction2.action" 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="text" name="user.salary"><br>
<input type="submit" value="提交"><br>
</form>
<h3>方式三:模型驱动--模型驱动方式</h3><br>
<form action="${ pageContext.request.contextPath }/userAction3.action" 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="text" name="salary"><br>
<input type="submit" value="提交"><br>
</form>
</body>
</html>
以下是struts_demo02.xml的代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts SYSTEM "http://struts.apache.org/dtds/struts-2.5.dtd" >
<struts>
<package name="demo2" extends="struts-default" namespace="/">
<global-results>
<result name="success">/demo1/demo2.jsp</result>
<result name="input">/demo2/demo1.jsp</result>
</global-results>
<action name="userAction1" class="demo2.UserAction1">
</action>
<action name="userAction2" class="demo2.UserAction2">
</action>
<action name="userAction3" class="demo2.UserAction3">
</action>
</package>
</struts>
以下是UserAction1 的代码
package demo2;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
import domin.User;
public class UserAction1 extends ActionSupport {
private static final long serialVersionUID = -7560633747979064488L;
private String userName;
private String password;
private Integer age;
private Date birthday;
private Double salary;
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public void setSalary(Double salary) {
this.salary = salary;
}
@Override
public String execute() throws Exception {
System.out.println(userName);
System.out.println(password);
System.out.println(age);
System.out.println(birthday);
System.out.println(salary);
User user = new User();
user.setUserName(userName);
user.setPassword(password);
user.setAge(age);
user.setBirthday(birthday);
user.setSalary(salary);
return super.execute();
}
}
以下是UserAction2 的代码
package demo2;
import com.opensymphony.xwork2.ActionSupport;
import domin.User;
public class UserAction2 extends ActionSupport {
private static final long serialVersionUID = -7560633747979064488L;
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
System.out.println(user);
return super.execute();
}
}
以下是UserAction3 的代码
package demo2;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import domin.User;
public class UserAction3 extends ActionSupport implements ModelDriven<User>{
private static final long serialVersionUID = -7560633747979064488L;
private User user = new User();
@Override
public String execute() throws Exception {
System.out.println(user);
return super.execute();
}
@Override
public User getModel() {
return user;
}
}
以下是User类的代码
package domin;
import java.util.Date;
public class User {
private String userName;
private String password;
private Integer age;
private Date birthday;
private Double salary;
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
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 Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "User [userName=" + userName + ", password=" + password + ", age=" + age + ", birthday=" + birthday
+ ", salary=" + salary + "]";
}
}
浙公网安备 33010602011771号