Java Struts2配置文件校验器

struts2配置文件检验,想要实现校验,action必须继承自ActionSupport类,如下为简单登录注册校验。

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML>
<html>
  <head> 
    <title>login</title>
    <meta charset="utf-8">
  </head>
  <body>
  	<!-- <s:fielderror></s:fielderror> -->
    <form action="login" methor="get">
    	<input type="hidden" name="user.type" value="login"/>
    	<p>
    		<input type="text" name="user.name" placeholder="用户名"/>
    		<s:fielderror><s:param>user.name</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="password" name="user.pass" placeholder="密码"/>
    		<s:fielderror><s:param>user.pass</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="submit" value="submit"/>
    	</p>
    </form>
    <a href="reg.jsp">reg.jsp</a>
  </body>
</html>

reg.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>reg</title>
    <meta charset="utf-8">
   </head>
    <body>
    
    <!-- <s:fielderror></s:fielderror> -->
    <form action="reg" method="get">
    	<input type="hidden" name="user.type" value="reg"/>
    	<p>
    		<input type="text" name="user.name" placeholder="用户名"/>
    		<s:fielderror><s:param>user.name</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="password" name="user.pass" placeholder="密码"/>
    		<s:fielderror><s:param>user.pass</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="text" name="user.age" placeholder="年龄"/>
    		<s:fielderror><s:param>user.age</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="text" name="user.birth" placeholder="出生日期"/>
    		<s:fielderror><s:param>user.birth</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="submit" value="submit"/>
    	</p>
    </form>
    <a href="login.jsp">login.jsp</a>
  </body>
</html>

result.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>RegAndLogin_result</title>
	<meta charset="utf-8">
  </head>
  
  <body>
  <% 
  	String form_action = request.getParameter("user.type"); 
	if(form_action=="login"||form_action.equals("login")){
  %>
    <p>用户:<s:property value="user.name"/></p>
    <p>密码:<s:property value="user.pass"/></p>
  <%
  	}else if(form_action=="reg"||form_action.equals("reg")){
  %>
  	<p>用户:<s:property value="user.name"/></p>
    <p>密码:<s:property value="user.pass"/></p>
    <p>年龄:<s:property value="user.age"/></p>
    <p>出生日期:<s:property value="user.birth"/></p>
  <% 
	}else{
		out.print("hello world");
		out.print(form_action);
	}
  %>
  </body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>	
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>  
	<package name="reg_package" extends="struts-default">
		<action name="login" class="top.k10000.LoginAction" method="login">
			<result name="success">/result.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
		
		<action name="reg" class="top.k10000.RegestAction" method="reg">
			<result name="success">/result.jsp</result>
			<result name="input">/reg.jsp</result>
		</action>
	</package>
</struts>    

User.java

package top.k10000;
import java.util.Date;
public class User {
    private String name;
    private String pass;
    private int age;
    private Date birth;
    private String type;
    
    public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public void setName(String str_name){
		this.name = str_name;
	}
	public String getName(){
		return name;
	}
	
	public void setPass(String str_pass) {
		this.pass = str_pass;
	}
	public String getPass() {
		return pass;
	}
	
	public void setAge(int str_age) {
		this.age = str_age;
	}
	public int getAge() {
		return age;
	}
	
	public void setBirth(Date str_birth) {
		this.birth = str_birth;
	}
	public Date getBirth() {
		return birth;
	}
	
}

LoginAction.java

package top.k10000;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	// 登录
	public String login() throws Exception {
		if(this.hasFieldErrors()){
			return INPUT;
		}else{
			System.out.println("login ok!!!");
			return SUCCESS;
		}
    }
}

RegestAction.java

package top.k10000;
import com.opensymphony.xwork2.ActionSupport;

public class RegestAction extends ActionSupport {
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	// 注册
	public String reg() throws Exception {
		if(this.hasFieldErrors()){
			return INPUT;
		}else{
			System.out.println("reg ok!!!");
			return SUCCESS;
		}
    }
}

在Action所在的包下创建一个对此Action进行校验的xml文件,文件名为XXXAction-validation.xml,如下

LoginAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
	"-//Apache Struts//XWork Validator 1.0.2//EN" 
	"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
	<field name="user.name">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>用户名不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
			<message>用户名必须字母开头,3-14位,由数字字母下划线组合</message>
        </field-validator>
	</field>
	
	<field name="user.pass">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>密码不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
			<message>密码必须字母开头,3-14位,由数字字母下划线组合</message>
		</field-validator>
	</field>
</validators>

RegestAction-validation.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
	"-//Apache Struts//XWork Validator 1.0.2//EN" 
	"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
	<field name="user.name">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>用户名不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
			<message>用户名必须字母开头,3-14位,由数字字母下划线组合</message>
        </field-validator>
	</field>
	
	<field name="user.pass">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>密码不能为空</message>
		</field-validator>
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[(^[a-zA-Z][a-zA-Z0-9_]{3,14}$)]]></param>
			<message>密码必须字母开头,3-14位,由数字字母下划线组合</message>
		</field-validator>
	</field>
	
	<field name="user.age">
		<field-validator type="required">
            <param name="trim">true</param>
            <message>年龄不能为空!</message>
        </field-validator>
		<field-validator type="int">
			<param name="min">1</param>
			<param name="max">150</param>
			<message>年龄取值范围在${min}到${max}之间</message>  
		</field-validator>
	</field>
	
	<field name="user.birth">
		<field-validator type="required">
            <param name="trim">true</param>
            <message>出生日期不能为空!</message>
        </field-validator>
		<field-validator type="date">
			<param name="min">1900-01-01</param>
			<param name="max">2050-02-21</param>
			<message>格式不正确yyyy-MM-dd</message>  
		</field-validator>
	</field>
</validators>

运行:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值