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 + "]";
}

}

 

posted @ 2019-01-14 13:12  李大鹏的博客  阅读(420)  评论(0)    收藏  举报