struts2的validate输入验证
原创
struts2的输入验证有两种方式:
- 使用validate()方法实现验证
 - 使用验证文件实现验证
 
下面通过一个例子介绍validate()方法验证——实现客户注册输入验证
设计的JSP页面代码:
<%@ 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="确认"/> <input type="reset" value="取消"/></td></tr>
</table>
</s:form>
</body>
</html>
页面

设计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用来检验用户输入的信息,成功跳转输入用户输入的信息,否则返回注册页面并且输入错误信息。
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";
}
}
}
编写一个类来获取数据库的连接
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:01
2018-11-15
struts2的validate输入验证的更多相关文章
- Struts2入门(四)——数据输入验证
		
一.前言 1.1.什么是输入验证?为什么需要输入验证? 在上一篇文章中,我们学习了数据类型转换,我们提到了表示层数据处理的两个方法,也提到了用户输入数据需要进行类型转换才能得到我们想要的数据,那么,我 ...
 - struts2输入验证
		
1.方法 ① 基于Annotations的验证 ②基于XML配置的验证 http://blog.csdn.net/furongkang/article/details/692204 ...
 - Struts2的输入验证
		
一.概述: ① Struts2的输入验证 –基于 XWorkValidation Framework的声明式验证:Struts2提供了一些基于 XWork Validation Framework的内 ...
 - [原创]java WEB学习笔记70:Struts2 学习之路-- 输入验证,声明式验证,声明是验证原理
		
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
 - struts2 validate手动验证
		
我们前面学习struts2知道,struts2通过拦截器实现了一些验证操作. 比如,如果是不能转换的类型在action中接受的话会跳转到错误页面,错误信息中会包含对应的错误信息,例如: 首先我们了解一 ...
 - Struts2(十二)使用验证框架验证数据较验
		
一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...
 - Struts2的手工自定义验证--完整实例代码
		
ActionSupport类实现了Validateable.ValidationAware接口, 其中Validateable接口就是验证器接口,该接口有一个validate()方法, validat ...
 - jq.validate 自定义验证两个日期
		
jq.validate 自定义验证两个日期 首先定义有一个表单,date1和date2是属于表单的元素,若date1大于date2,返回false:若date1<date2,返回true.使用j ...
 - 封装jQuery Validate扩展验证方法
		
一.封装自定义验证方法-validate-methods.js /***************************************************************** j ...
 
随机推荐
- mysql清理连接
			
关闭指定ip的连接: for i in $(mysql -uusername -ppassword -Bse "select * from information_schema.proces ...
 - ThinkPHP自动令牌验证(附实例)
			
一.数据表结构 user表结构如下: id username password 二.view模板部分 /view/index.html页面如下: 1 2 3 4 5 6 <form acti ...
 - IE6中PNG图片背景无法透明显示的最佳解决方案
			
我想,对于像我这样的年轻的程序员来说,做网页开发时用chrome.firefox或者ie10什么的大约是被宠坏了.所以当最近做的项目不得不在恐龙化石般的ie6上运行时,ie6种种诡异的行径简直让我发指 ...
 - mysql和php的内存问题
			
最近给一个客户把他以前的数据转换到PHPSMC里去,因为他的数据太大出现一些问题,首先出现的是php内存问题,刚导时空白,我就在该也面的头部加上 error_reporting(E_ALL);打印所有 ...
 - vue+uwsgi+nginx部署项目
			
首先先下载好前后端项目 先从前端vue搞起 要在服务器上,编译打包vue项目,必须得有node环境 下载node二进制包,此包已经包含node,不需要再编译 wget https://nodejs.o ...
 - python拷贝目录下的文件
			
#!/usr/bin/env python # Version = 3.5.2 import shutil base_dir = '/data/media/' file = '/backup/temp ...
 - properties 中文乱码问题的解决
			
在用properties处理配置信息时,发现有时出现中文乱码的问题,后经查资料得知是由于编码不一致引起的.于是解决之. [原理解释] 我们用 API操作properties文件,如果获取的属性值是中文 ...
 - 解决SDK未授权问题
			
问题描述 在启动项目的时候报错了,如下: What went wrong: A problem occurred configuring project ':app'. > You have n ...
 - mysql 查询某字段值全是数字
			
select * from x_ziyuan where zy_zhanghu regexp '^[0-9]+$'
 - java  蓝桥杯基础训练   回文数
			
public class _8回文数 { //两种方法都可以 // public static void main(String[] args) { // String zheng ="&q ...