array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验 JavaWeb网上图书商城完整项目--BaseServlet - 爱码网

JavaWeb网上图书商城完整项目--day02-4.regist页面提交表单时对所有输入框进行校验
    

JavaWeb网上图书商城完整项目--BaseServlet

 

1、现在我们要将table表中的输入的参数全部提交到后台进行校验,我们提交我们是按照表单的形式提交,所以我们首先需要在table表外面添加一个表单

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>注册</title>
<link  rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/user/regist.css'/>">
<script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script>
<script type="text/javascript" src="<c:url value='/jsps/js/user/regist.js'/>"></script>
</head>
<body>
<div id="divMain">
<div id="divTitle"><span id="spanTitle">新用户注册</span></div>
<div id="divBoby">
<form action="/goods/UserServlet" method="post">
<input  type="hidden" name="method" value="regist"/>
<table id="tableForm">
<tr>
<td class="tdText">用户名:</td>
<td class="tdInput"><input class="inputClass" type="text" name ="loginname" id="loginname"/></td>
<td class="tdError"><label class="errorClass" id="loginnameError">用户名不能为空</label></td>
</tr>

<tr>
<td class="tdText">登陆密码:</td>
<td class="tdInput"><input class="inputClass" type="password" name ="loginpass" id="loginpass"/></td>
<td class="tdError"><label class="errorClass" id="loginpassError"></label></td>
</tr>

<tr>
<td class="tdText">确认密码:</td>
<td class="tdInput"><input class="inputClass" type="password" name ="reloginrepass" id="reloginrepass"/></td>
<td class="tdError"><label class="errorClass" id="reloginrepassError"></label></td>
</tr>

<tr>
<td class="tdText">Email:</td>
<td class="tdInput"><input class="inputClass" type="text" name ="email" id="email"/></td>
<td class="tdError"><label class="errorClass" id="emailError"></label></td>
</tr>

<tr>
<td class="tdText">图形验证码:</td>
<td class="tdInput"><input class="inputClass" type="text" name ="verifyCode" id="verifyCode"/></td>
<td class="tdError"><label class="errorClass" id="verifyCodeError"></label></td>
</tr>

<tr>
<td class="tdText"></td>
<td class="tdInput"><div id="divVerifyCode"><img id="imgVerifyCode" src="<c:url value='/VerifyCodeServlet'/>"></div></td>
<td class="tdError"><label ><a href="javascript:changeVerifyCode()">换一张</a></label></td>
</tr>


<tr>
<td class="tdText"></td>
<td class="tdInput"><input  type="image"  src="<c:url value='/images/regist1.jpg'/>" id="submitBtn"/></td>
<td class="tdError"><label></label></td>
</tr>


</table>
</form>
</div>
</div>
</body>
</html>

我们添加了一个表单,将表单中的内容传递给UserServlet进行处理,因为UserServlet继承了BaseServlet,访问的时候需要指定参数是method,调用的UserServlet中的regist方法

<input  type="hidden" name="method" value="regist"/>不清楚的看博客

JavaWeb网上图书商城完整项目--BaseServlet

接下来我们在UserServlet中注册regist方法

package com.weiyuan.goods.user.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.itcast.servlet.BaseServlet;

/**
 * Servlet implementation class UserServlet
 */
@WebServlet("/UserServlet")
public class UserServlet extends BaseServlet{
    private static final long serialVersionUID = 1L;

    
    
    public String regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("regist is called");
        return null;
    }


}

当我们点击注册页面的立即注册的时候,就会调用UserServlet的regist方法

这里我们点击立即注册的时候,我们还需要对输入框中的内容进行检验,只有全部满足条件,我们才提交到UserServlet的regist方法中进行处理

当提交表单时,会发生 submit 事件。

该事件只适用于表单元素。

submit() 方法触发 submit 事件,或规定当发生 submit 事件时运行的函数。

我们来看下程序的代码:

首先给表单添加一个id

<form action="/goods/UserServlet" method="post" >

我们来看regist.js中的代码

 

//该函数在html文档加载完成之后会调用
$(function() {
    /*
     * 变量所有的错误信息,调用一个方法来决定是否显示错误信息
     * */
    $(".errorClass").each(function() {
        showError($(this));//$(this)表示当前遍历的对象
    });
    
    
    //切换注册按钮的图片
    $("#submitBtn").hover(function () {
        //获得光标焦点
        $("#submitBtn").attr("src","/goods/images/regist2.jpg");
    },function(){
        //失去光标的焦点
        $("#submitBtn").attr("src","/goods/images/regist1.jpg");
        
        
    });
    
    //当输入框获得焦点的时候,隐藏label标签的内容
    $(".inputClass").focus(function() {
        //首先获得label标签的id
        var inputId = $(this).attr("id");
        var labelId = inputId+"Error";//label的id
        //清楚该标签的内容
        $("#"+labelId).text("");
        //让该标签不显示
        showError($("#"+labelId));
    });
    //当输入框失去焦点的时候,我们需要对输入的数据进行有效的校验,比如输入的电话号码是否合法,邮箱是否合法
    $(".inputClass").blur(function() {
        //首先判断当前是那个input输入框被调用了
        var inputId = $(this).attr("id");
        //;
        //调用对应的校验方法
        var functionName = "validate"+inputId;//获得需要调用的验证函数,如果是id为loginname,就调用validateloginname()函数进行验证
        switch(functionName){
        case "validateloginname":
            validateloginname();
            break;
        case "validateloginpass":
            validateloginpass();
            break;    
        case "validatereloginrepass":
            validatereloginrepass();
            break;    
        case "validateemail":
            validateemail();
            break;    
        case "validateverifyCode":
            validateverifyCode();
            break;
        default:
            break;
        }
    });
    
    //对表单的提交进行校验
    $("#registForm").submit(function() {
        if(! validateloginname()){
            return false;
        }
        if(! validateloginpass()){
            return false;
        }
        if(! validatereloginrepass()){
            return false;
        }
        if(! validateemail()){
            return false;
        }
        if(! validateverifyCode()){
            return false;
        }
        
        return true;
    });
    
    
});

//  对输入的用户名进行合法性校验
function validateloginname(){
    //获得输入框中的内容
    var content = $("#loginname").val();
    // 非空校验
    if(!content){
        //内容为空,将后面的label显示出来
        $("#loginnameError").text("用户名不能为空!");
        //显示标签
        showError($("#loginnameError"));
        return false ;//不再执行后面的语句
    }
    //长度校验
    if(content.length <3 || content.length>20){
        //内容为空,将后面的label显示出来
        $("#loginnameError").text("用户名的长度必须在3-20之间!");
        //显示标签
        showError($("#loginnameError"));
        return false ;//不再执行后面的语句
    }
    //是否已经注册的校验
    return true;
}

//对输入的密码进行校验
function validateloginpass(){
    //获得输入框中的内容
    var content = $("#loginpass").val();
    // 非空校验
    if(!content){
        //内容为空,将后面的label显示出来
        $("#loginpassError").text("密码不能为空!");
        //显示标签
        showError($("#loginpassError"));
        return false ;//不再执行后面的语句
    }
    //长度校验
    if(content.length <3 || content.length>20){
        //内容为空,将后面的label显示出来
        $("#loginpassError").text("密码的长度必须在3-20之间!");
        //显示标签
        showError($("#loginpassError"));
        return false ;//不再执行后面的语句
    }
    return true;
}

//对输入的确认密码进行校验
function validatereloginrepass(){
    //获得输入框中的内容
    var content = $("#reloginrepass").val();
    // 非空校验
    if(!content){
        //内容为空,将后面的label显示出来
        $("#reloginrepassError").text("密码不能为空!");
        //显示标签
        showError($("#reloginrepassError"));
        return false ;//不再执行后面的语句
    }
    //判断两次输入的内容是否一致
    if(content !=  $("#loginpass").val()){
        //内容为空,将后面的label显示出来
        $("#reloginrepassError").text("两次输入的密码不一致!");
        //显示标签
        showError($("#reloginrepassError"));
        return false ;//不再执行后面的语句
    }
    return true;
    
}

// 对输入的邮箱地址进行校验
function validateemail(){
    //获得输入框中的内容
    var content = $("#email").val();
    // 非空校验
    if(!content){
        //内容为空,将后面的label显示出来
        $("#emailError").text("邮箱不能为空!");
        //显示标签
        showError($("#emailError"));
        return false ;//不再执行后面的语句
    }
    //判断输入的邮箱格式是否正确
    if(!/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(content)){
        //内容为空,将后面的label显示出来
        $("#emailError").text("邮箱格式不正确!");
        //显示标签
        showError($("#emailError"));
        return false ;//不再执行后面的语句
    }
    return true;
}

//对输入的地址进行校验
function validateverifyCode(){
    //获得输入框中的内容
    var content = $("#verifyCode").val();
    // 非空校验
    if(!content){
        //内容为空,将后面的label显示出来
        $("#verifyCodeError").text("验证码不能为空!");
        //显示标签
        showError($("#verifyCodeError"));
        return false ;//不再执行后面的语句
    }
    //验证码的长度必须是4
    if(content.length != 4){
        //内容为空,将后面的label显示出来
        $("#verifyCodeError").text("验证码不正确!");
        //显示标签
        showError($("#verifyCodeError"));
        return false ;//不再执行后面的语句
    }
    return true;
}


//判断当前元素是否存在内容,存在显示,不存在不显示
function showError( ele ){
    var text = ele.text();//获得该对象的文本值
    if(!text){
        ele.css("display","none");//让该对象消息
    }else{
        ele.css("display","");//显示对象
    }

}

//实现验证码图片的切换功能
function changeVerifyCode() {
    $("#imgVerifyCode").attr("src","/goods/VerifyCodeServlet?a="+new Date().getTime());
}

 

相关文章: