Struts2输入校验的两种实现方式
一、手动编程实现输入校验
一、手动编程实现输入校验
二、校验框架XML实现输入校验
下面来分别实现
一、手动编程实现输入验证
1、建立validate.jsp页面代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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>Insert title here</title>
</head>
<body>
<form action="validate" method="post">
用户名:<input type="text" name="uid"/>
<br/>
手机号码:<input type="text" name="telephone"/>
<br/>
<!-- 输入:<input type="text" name="input"/> -->
<br/>
<input type="submit" value="提交" />
</form>
<s:fielderror/>
<br/>
${message }
</body>
</body>
</html>
注意:不要忘记在页面内引入struts2标签库 <%@ taglib uri="/struts-tags" prefix="s" %>
2、配置struts-demo.xml文件
插入
<action name="validate" class="action.ValidateAction" >
<result name="input">/validate.jsp</result>
<result name="ok">/validate.jsp</result>
</action>
详细:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="demo" namespace="" extends="base"> <!-- 声明拦截器 --> <interceptors> <interceptor name="mytime" class="interceptor.MyTimeInterceptor"></interceptor> <!-- 定义拦拦截器栈 --> <interceptor-stack name="myinterceptorstack"> <interceptor-ref name="defaultStack"></interceptor-ref> <interceptor-ref name="mytime"></interceptor-ref> </interceptor-stack> </interceptors> <action name="date" class="action.DataTypeConvertAction" > <result name="ok">/dateType.jsp</result> </action> <action name="fileup" class="action.FileupAction" > <interceptor-ref name="myinterceptorstack"></interceptor-ref> <result name="ok">/fileup.jsp</result> </action> <action name="down" class="action.DownAction" > <result name="ok" type="stream"> <!--有输出中文的时使用 param name="contentType">application/octet-stream;charset=utf-8</param --> <param name="contentType">application/x-msdownload</param> <param name="inputName">tagFile</param> <param name="contentDisposition">filename=${filename}</param> </result> </action> <action name="validate" class="action.ValidateAction" > <result name="input">/validate.jsp</result> <result name="ok">/validate.jsp</result> </action> </package> </struts>
3、根据配置文件所配建立ValidateAction.java文件 该文件记得继承ActionSupport类详细代码如下
package action;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;
public class ValidateAction extends ActionSupport {
private String uid;
private String telephone;
private String message;
private String input;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
public String execute(){
this.message="验证通过!";
return "ok";
}
@Override
public void validate() {
if(uid.equals("")){
this.addFieldError("uid", "用户名不能为空!");
}
if(telephone.equals("")){
this.addFieldError("teltphone", "电话号码不能为空!");
}
if(!Pattern.compile("^1[358][0-9]{9}$").matcher(this.telephone).matches()){
this.addFieldError("teltphone", "电话号码不正确!");
}
}
public String add(){
return "ok";
}
/**
* 为add的方法进行输入检验
*/
public void validateAdd(){
}
}
完成!
二、校验框架XML实现输入校验实现
在ValidateAction.java相同目录下建ValidateAction-validation.xml文件 文件取名规则为:action名称-validation.xml固定格式文件内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name="uid"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空!</message> </field-validator> </field> <field name="telephone"> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>用户名不能为空!</message> </field-validator> </field> </validators>