原创


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="确认"/>&nbsp;<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输入验证的更多相关文章

  1. Struts2入门(四)——数据输入验证

    一.前言 1.1.什么是输入验证?为什么需要输入验证? 在上一篇文章中,我们学习了数据类型转换,我们提到了表示层数据处理的两个方法,也提到了用户输入数据需要进行类型转换才能得到我们想要的数据,那么,我 ...

  2. struts2输入验证

    1.方法     ① 基于Annotations的验证       ②基于XML配置的验证 http://blog.csdn.net/furongkang/article/details/692204 ...

  3. Struts2的输入验证

    一.概述: ① Struts2的输入验证 –基于 XWorkValidation Framework的声明式验证:Struts2提供了一些基于 XWork Validation Framework的内 ...

  4. [原创]java WEB学习笔记70:Struts2 学习之路-- 输入验证,声明式验证,声明是验证原理

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. struts2 validate手动验证

    我们前面学习struts2知道,struts2通过拦截器实现了一些验证操作. 比如,如果是不能转换的类型在action中接受的话会跳转到错误页面,错误信息中会包含对应的错误信息,例如: 首先我们了解一 ...

  6. Struts2(十二)使用验证框架验证数据较验

    一.数据验证 1.1.为什么要进行数据验证 对数据的合法性进行检查,只允许合法的数据进入应用程序 1.2.在哪里实现数据验证 客户端验证: 数据提交前在客户端验证 可使用JavaScript或者JQu ...

  7. Struts2的手工自定义验证--完整实例代码

    ActionSupport类实现了Validateable.ValidationAware接口, 其中Validateable接口就是验证器接口,该接口有一个validate()方法, validat ...

  8. jq.validate 自定义验证两个日期

    jq.validate 自定义验证两个日期 首先定义有一个表单,date1和date2是属于表单的元素,若date1大于date2,返回false:若date1<date2,返回true.使用j ...

  9. 封装jQuery Validate扩展验证方法

    一.封装自定义验证方法-validate-methods.js /***************************************************************** j ...

随机推荐

  1. Python,OpenGL生命游戏

    初学Python和OpenGL,练手的第一个小程序life.py,这个小程序在日后会不断调整,增加类.优化判断及操作 执行效果: 按正规生命游戏的规则: 1.周围生命等于3时产生生命 2.周围生命等于 ...

  2. Webstorm2018破解笔记

    参考链接: (1)https://www.jb51.net/softs/598714.html   过程步骤 (2)http://idea.lanyus.com/   IntelliJ IDEA 注册 ...

  3. Configuring Transitive IPMP on Solaris 11

    http://www.tokiwinter.com/configuring-transitive-ipmp-on-solaris-11/ We all know the pain of configu ...

  4. Java--神奇的hashcode

    一.Object的HashCode定义 public native int hashCode(); Object类的hashCode方式使用了native修饰也就意味着真正的实现调用的其他语言编写的方 ...

  5. leetcode830

    public class Solution { public IList<IList<int>> LargeGroupPositions(string S) { //" ...

  6. Android真机调试手动添加程序包的LogCat

    android真机调试有时候看LogCat 时,有时候那个跑的本程序的LogCat 没有出现而是 出现的是" All messages (no filters) " .此时 的Lo ...

  7. Py小技巧一:在列表,字典,集合中根据条件筛选数据

    1.过滤掉列表中的某些项---列表解析 data=[1,4,2,8,5,-1] res=[] a.依次迭代列表中每一个项 for x in data: if >=0: res.append(x) ...

  8. 前端开发之HTML篇二

    主要内容: 一.表格标签 -- table 二.表单标签 -- form 三.常用标签属性和分类 四.标签嵌套规则 1️⃣  表格标签 -- table 表格由<table> 标签来定义. ...

  9. Logging模块总结 2018/5/30

    日志的级别 Level 用处 数字级别 DEBUG 详细的信息,在调试过程中用于诊断错误 10 INFO 用于确认事件正在运行 20 WARNING 意外发生时予以提醒,或者预测一些未来可能发生的一些 ...

  10. 201671010140. 2016-2017-2 《Java程序设计》java学习第十四周

      java学习第十四周       本周,主要精力放在了第十二章swing用户界面组件知识的学习,swing是一个用于开发Java应用程序用户界面的开发工具包.它以抽象窗口工具包(AWT)为基础使跨 ...