struts2的validate輸入驗證

原創javascript


struts2的輸入驗證有兩種方式:css

  • 使用validate()方法實現驗證
  • 使用驗證文件實現驗證

下面經過一個例子介紹validate()方法驗證——實現客戶註冊輸入驗證html

設計的JSP頁面代碼:java

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>註冊頁面</title>
    <style type="text/css">
        body{font-size:12px;}
        #title{color:#FF7B0B;font-size:20px;font-weight:bold;}
        .td{height:30px;}
        .info{color:#BBBBBB;}
    </style>
    <script language="javascript">
        function check(frm){
            if(frm.accept.checked==false){
                alert("您須要仔細閱讀用戶使用協議,並贊成接受協議!");
                return false;
            }
            return true;
        }
    </script>
  </head>
  
  <body>
    <s:fielderror cssStyle="color:red"></s:fielderror>
    <s:form action="register" method="post" theme="simple" onsubmit="return check(this)" namespace="/">
        <table border="0" align="center" width="1000">
            <tr><td colspan="3" align="center" height="40" id="title">填寫註冊信息<br/></td></tr>
            <tr><td align="right">用戶名:*</td><td><s:textfield name="user.userName"/></td><td class="info">用戶名由字母開頭,後跟字母、數字或下劃線!</td></tr>
            <tr><td align="right">密碼:*</td><td><s:password name="user.userPwd"/></td><td class="info">設置登陸密碼,至少6位!</td></tr>
            <tr><td align="right">確認密碼:*</td><td><s:password name="userPwd"/></td><td class="info">請再輸入一次你的密碼!</td></tr>
            <tr><td align="right">性別:*</td><td><s:radio name="user.userSex" list="{'男','女'}"/></td><td class="info">請選擇你的性別!</td></tr>
            <tr><td align="right">郵箱地址:*</td><td><s:textfield name="user.userEmail"/></td><td class="info">請填寫您的經常使用郵箱,能夠用此郵箱找回密碼!</td></tr>
            <tr><td align="right" valign="top">基本狀況:*</td><td colspan="2"><s:textarea name="user.userBasicInfo" rows="5" cols="50"/></td></tr>
            <tr><td colspan="3" align="center" height="40"><s:checkbox name="accept" value="false"/>我已經仔細閱讀並贊成接受用戶使用協議</td></tr>
            <tr><td colspan="3" align="center" height="40"><input type="submit" value="確認"/>&nbsp;<input type="reset" value="取消"/></td></tr>
        </table>
    </s:form>
  </body>
</html>

頁面sql

設計User.java的JavaBean存放用戶信息數據庫

public class User {
    private String userName;
    private String userPwd;
    private String userSex;
    private String userEmail;
    private String userBasicInfo;
    public User(){};
    public String getUserName() {
        return userName;
    }
    public void setUserName(String usreName) {
        this.userName = usreName;
    }
    public String getUserPwd() {
        return userPwd;
    }
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
    public String getUserSex() {
        return userSex;
    }
    public void setUserSex(String userSex) {
        this.userSex = userSex;
    }
    public String getUserEmail() {
        return userEmail;
    }
    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }
    public String getUserBasicInfo() {
        return userBasicInfo;
    }
    public void setUserBasicInfo(String userBasicInfo) {
        this.userBasicInfo = userBasicInfo;
    }
    
}

設計帶validate()方法的Action用來檢驗用戶輸入的信息,成功跳轉輸入用戶輸入的信息,不然返回註冊頁面而且輸入錯誤信息。sqlserver

import JavaBean.User;  
import java.sql.*;
import com.opensymphony.xwork2.ActionSupport;
import java.util.regex.*;
import DBase.connection;
public class register extends ActionSupport{
    private User user;
    private String userPwd;
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public String getUserPwd() {
        return userPwd;
    }
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
    
    public void validate(){
        if(user.getUserName()==null || user.getUserName().length()<=0){
            addFieldError("user.userName","用戶名不能爲空!");
        }else{
            String f1="[a-zA-Z]\\w*";
            if(!Pattern.matches(f1, user.getUserName())){
                addFieldError("user.userName","用戶名格式不正確");
            }
        }
        if(user.getUserPwd()==null || user.getUserPwd().length()<=0){
            addFieldError("user.userPwd","密碼不能爲空!");
        }else{
            if(user.getUserPwd().length()<6){
                addFieldError("user.userPwd","密碼長度不能小於6!");
            }
        }
        if(userPwd==null || userPwd.length()<=0){
            addFieldError("userPwd","確認密碼不能爲空!");
        }else{
            if(!userPwd.equals(user.getUserPwd())){
                addFieldError("userPwd","密碼不一致!");
            }
        }
        if(user.getUserEmail()==null || user.getUserEmail().length()<=0){
            addFieldError("user.userEmail","郵件地址不能爲空!");
        }else{
            String f2="\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*.\\w+([-.]\\w+)*";
            if(!Pattern.matches(f2, user.getUserEmail())){
                addFieldError("user.userEmail","郵箱格式不正確!");
            }
        }
        
    }
    public boolean add(){
        Connection con=connection.getConnection();    //獲取數據庫鏈接
        String sql="insert into Users(username,userpwd,usersex,useremail,userbasicinfo) values(?,?,?,?,?)";
        try {
            PreparedStatement pre=con.prepareStatement(sql);
            pre.setString(1,user.getUserName());
            pre.setString(2, user.getUserPwd());
            pre.setString(3, user.getUserSex());
            pre.setString(4, user.getUserEmail());
            pre.setString(5, user.getUserBasicInfo());
            int n=pre.executeUpdate();
            if(n==1){
                return true;
            }
        } catch (SQLException e) {
            System.out.println("error");
            return false;
        }
        return false;
    }
    public String regist() throws Exception{
        if(add()==true){
            return "success";
        }else{
            return "error";
        }
    }
}

編寫一個類來獲取數據庫的鏈接post

import java.sql.*;
public class connection {
    public static Connection getConnection() {
        String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
        String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=********"; 
        String userName = "sa";
        String userPwd = "*******";
        Connection dbConn=null;
        try{
            Class.forName(driverName);
            dbConn=DriverManager.getConnection(dbURL,userName,userPwd);
            return dbConn;
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }
    public static void closeDB(Connection con,PreparedStatement pstm,ResultSet rs){
        try{
            if(rs!=null){
                rs.close();
            }
            if(pstm!=null){
                pstm.close();
            }
            if(con!=null){
                con.close();
            }
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
}

23:14:01this

2018-11-15spa

相關文章
相關標籤/搜索