新建名为validationApp的web project,该应用允许用户输入一本图书的相关信息,要求对表单中的每个文件输入框进行输入校验。
(1)创建input.jsp页面,该页面用于输入图书的以下信息:
字段名 | 字段类型 | 校验规则 |
书名 | String | 必须输入;长度在4-80之间 |
作者 | String | 必须输入;长度在4-40之间 |
书号(13位ISBN) | String | 必须输入;长度必须是13位;根据参考资料中的ISBN校验码的计算方法对书号的有效性进行校验。 |
出版社 | String | 文本中必须包含“出版社”一词 |
出版日期 | Date | 日期范围为1900年1月1日到当前日期 |
价格 | Double | 最小值为0.0 |
库存数量 | Integer | 最小值为0 |
input.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="s"%>
图书录入页面
书名
作者
书号
出版社
出版日期
价格
库存数量
(2)创建show.jsp页面,该页面用于显示用户输入的图书的所有信息。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
图书详情页面
书名 : ${request.B_book} 作者 : ${request.B_author} 书号 : ${request.B_number} 出版社 : ${request.B_public} 出版日期 : ${request.B_pub_date} 价格 : ${request.B_price} 库存数量 : ${request.B_inventory}
(3)创建名为Book的Action类对日期和出版社进行手动校验,用以对请求参数进行处理。
package org.action.cheakout;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Book extends ActionSupport {
/**
* hh.todd@qq.com
*/
private static final long serialVersionUID = 1L;
private String B_book;
private String B_author;
private String B_number;
private String B_public;
private Date B_pub_date;
private Double B_price;
private Integer B_inventory;
public String getB_book() {
return B_book;
}
public void setB_book(String b_book) {
B_book = b_book;
}
public String getB_author() {
return B_author;
}
public void setB_author(String b_author) {
B_author = b_author;
}
public String getB_number() {
return B_number;
}
public void setB_number(String b_number) {
B_number = b_number;
}
public String getB_public() {
return B_public;
}
public void setB_public(String b_public) {
B_public = b_public;
}
public Date getB_pub_date() {
return B_pub_date;
}
public void setB_pub_date(Date b_pub_date) {
B_pub_date = b_pub_date;
}
public Double getB_price() {
return B_price;
}
public void setB_price(Double b_price) {
B_price = b_price;
}
public Integer getB_inventory() {
return B_inventory;
}
public void setB_inventory(Integer b_inventory) {
B_inventory = b_inventory;
}
public String execute() throws Exception {
ActionContext ac = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest) ac
.get(ServletActionContext.HTTP_REQUEST);
String date=new SimpleDateFormat("YYYY-mm-dd").format(B_pub_date);
request.setAttribute("B_pub_date", date);
return SUCCESS;
}
public void validate() {
if (getB_public() == null || "".equals(getB_public().trim())) {
} else {
String B_public1 = getB_public();
String str = "出版社";
if (B_public1 != null && !B_public1.contains(str)) {
this.addFieldError("B_public", "文本中必须包含“出版社”一词!");
}
}
if (getB_number() == null || "".equals(getB_number().trim())) {
this.addFieldError("B_number", "书号不能为空!");
} else if (!ISBN.checkISBN(getB_number())) {
this.addFieldError("B_number", "请正确填写13位书号!");
}
}
}
(4)创建名为ISBN的Action类对书号进行手动校验。
(5)要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;
true
请填写书名
4
80
长度在4-80之间
true
请填写本书作者
4
40
长度在4-40之间
1900-01-01
2014-05-30
日期范围为1900-01-01到2014-05-30
0.0
最小值为0.0
0
最小值为0
(6)Struts配置
/show.jsp
/input.jsp
源码下载地址:http://download.csdn.net/detail/u012612399/7556159点击打开链接