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 ...
随机推荐
- OSPF理论介绍
OSPF协议Open Shortest Path First是链路状态协议.RIP和EIGRP是距离矢量协议只知道邻居,但链路状态可知道全网信息,因此天然免疫环路.距离矢量协议和链路状态协议最大的区别 ...
- 【转】Android Eclipse调试技巧
原文地址:https://www.cnblogs.com/tianchunming/p/5423942.html Android Eclipse调试技巧 在Android 应用程序开发中我们经常需 ...
- idea展现目录清晰方式
- C#接口的三种实现方式
转自原文C#接口的三种实现方式 public interface MyInterface { /// 下面三个方法的签名都是 /// .method public hidebysig newslot ...
- Python基础补充(二) 多核CPU上python多线程并行的一个假象【转】
在python上开启多个线程,由于GIL的存在,每个单独线程都会在竞争到GIL后才运行,这样就干预OS内部的进程(线程)调度,结果在多核CPU上: python的多线程实际是串行执行的,并不会同一时间 ...
- LUA 环境
LUA中环境是指一个函数执行的表,即一个函数在什么表中执行. 这里的函数是特殊的,是loadfile("x.lua")的返回值. loadfile("x.lua" ...
- 【转】Unity3d:读取FBX中的动画
从模型中获得切割好的动画clip,并且对其中设置好的动画事件进行修改方法: 1.动画模型后缀为.FBX.在Unity3d中,能够显示FBX中的动画.要加载模型中的AnimationClip,只要Ass ...
- Echarts在java中使用
index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- 转 sql注入
1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0<>(selec ...
- json和jsonp的区别(转)
原文链接:http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.html 前言: 说到AJAX就会不可避免的面临 ...