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>
  
    <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>name</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="password" name="user.pass" placeholder="密码"/>
    		<s:fielderror><s:param>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>
    
    <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>name</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="password" name="user.pass" placeholder="密码"/>
    		<s:fielderror><s:param>pass</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="text" name="user.age" placeholder="年龄"/>
    		<s:fielderror><s:param>age</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="text" name="user.birth" placeholder="出生日期"/>
    		<s:fielderror><s:param>birth</s:param></s:fielderror>
    	</p>
    	<p>
    		<input type="submit" value="submit"/>
    	</p>
    </form>
    
  </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>

User.java

package top.k10000;
import java.util.Date;
public class User {
    private String name;
    private String pass;
    private String 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(String str_age) {
		this.age = str_age;
	}
	public String getAge() {
		return age;
	}
	
	public void setBirth(Date str_birth) {
		this.birth = str_birth;
	}
	public Date getBirth() {
		return birth;
	}
	
}

RegAndLoginAction.java

package top.k10000;
import java.util.regex.Pattern;
import com.opensymphony.xwork2.ActionSupport;

public class RegAndLoginAction extends ActionSupport {
	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
	// 注册
	public void validateReg(){
		if(user.getName()==null||user.getName().equals("")){
        	this.addFieldError("name","用户名不能为空");
        }
        else if(!Pattern.matches("^[a-zA-Z][a-zA-Z0-9_]{3,14}$", user.getName())){
        	this.addFieldError("name","用户名必须字母开头,3-14位,由数字字母下划线组合");
        }
        else if(user.getPass()==null||user.getPass().equals("")){
            this.addFieldError("pass","密码不能为空");
        }
        else if(!Pattern.matches("^[a-zA-Z][a-zA-Z0-9_]{3,14}$", user.getPass())){
            this.addFieldError("pass","密码3-14位,字母,下划线");
        }
        else if(user.getAge()==null||user.getAge().equals("")){
            this.addFieldError("age","年龄不能为空");
        }
        else if(!Pattern.matches("^(?:[1-9][0-9]?|1[01][0-9]|120)$", user.getAge())){
            this.addFieldError("age","年龄必须在1-120岁之内");
        }
        else if(user.getBirth()==null||user.getBirth().equals("")){
            this.addFieldError("birth","出生日期不能为空");
        }
        else if(Pattern.matches("^\\d{4}-([1-9]|1[0-2])-([1-9]|[1-2][0-9]|3[0-1])$", user.getAge())){
            this.addFieldError("birth","格式错误,需为yyyy-MM-dd");
        }
	}
	public String reg() throws Exception {
		if(this.hasFieldErrors()){
			return INPUT;
		}else{
			System.out.println("reg ok!!!");
			return SUCCESS;
		}
    }
	
	// 登录
	public void validateLogin(){
		if(user.getName()==null||user.getName().equals("")){
        	this.addFieldError("name","用户名不能为空");
        }
        else if(!Pattern.matches("^[a-zA-Z][a-zA-Z0-9_]{3,14}$", user.getName())){
        	this.addFieldError("name","用户名必须字母开头,3-14位,由数字字母下划线组合");
        }
        else if(user.getPass()==null||user.getPass().equals("")){
            this.addFieldError("pass","密码不能为空");
        }
        else if(!Pattern.matches("^[a-zA-Z][a-zA-Z0-9_]{3,14}$", user.getPass())){
            this.addFieldError("pass","密码3-14位,字母,下划线");
        }
	}
	public String login() throws Exception {
		if(this.hasFieldErrors()){
			return INPUT;
		}else{
			System.out.println("login ok!!!");
			return SUCCESS;
		}
    }
}

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.RegAndLoginAction" method="login">
			<result name="success">/result.jsp</result>
			<result name="input">/login.jsp</result>
		</action>
		
		<action name="reg" class="top.k10000.RegAndLoginAction" method="reg">
			<result name="success">/result.jsp</result>
			<result name="input">/reg.jsp</result>
		</action>
	</package>
</struts> 

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>



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值