原创


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. Julia - 匿名函数

    Julia 中的函数可以被匿名构造,成为匿名函数,匿名函数是没有函数名的函数 julia> x -> x + 1 #3 (generic function with 1 method) 这 ...

  2. 回归问题中代价函数选择的概率解释(Probabilistic interpretation)

    在我们遇到回归问题时,例如前面提到的线性回归,我们总是选择最小而成作为代价函数,形式如下: 这个时候,我们可能就会有疑问了,我们为什么要这样来选择代价函数呢?一种解释是使我们的预测值和我们训练样本的真 ...

  3. Tkinter Checkbutton

    Python - Tkinter Checkbutton: checkbutton小部件用于显示切换按钮的用户多项选择.然后,用户可以通过点击相应的按钮每个选项中选择一个或多个选项.   checkb ...

  4. halcon 如何把一个region截取出来保存为图像

    read_image(Image,'monkey') gen_circle(region,200,200,150) reduce_domain(Image,region,Mask) crop_doma ...

  5. linux系统构架 - LB集群之LVS的NAT

    1.环境说明 三台服务器,一台叫dir,两台叫rs1和rs2 (director 和 real server) dir外网ip:192.168.192.129  内网ip:192.168.1.114 ...

  6. 通过devtools在centos系统中启用高版本的gcc

    C++11出来好久了,现在还是使用c++03的,需要在centos6.6的系统上实现gcc的升级,又不想自己编译代码. 于是选用了devtoolsset系列,安装脚本如下 安装脚本如下 functio ...

  7. Setup Apache2 in Debian 9 and enable two ports for two sites

    root@debian:~# apt-get install apache2 root@debian:~# cd /etc/apache2/ root@debian:/etc/apache2# ls ...

  8. spring4-2-bean配置-7-Spring表达式语言SpEL

  9. SuperWebSocket

    SuperWebSocket: 概述:SuperWebSocket是WebSocket服务器的.NET实现. 简介:WebSocket是通过单个传输控制协议(TCP)插座提供双向,全双工通信信道的技术 ...

  10. 软件测试流程(Test Flow)

    Bug Status Definition Bug Management Process Outline Bug Severity&Priority Criteria Definition