成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

登錄的頁(yè)面布局以及js的驗(yàn)證,ajax的驗(yàn)證碼驗(yàn)證

RichardXG / 1761人閱讀

摘要:頁(yè)面向傳遞一個(gè)參數(shù),其值表示調(diào)用那個(gè)方法用戶名密碼驗(yàn)證碼換一張登錄重置代碼得到所有的錯(cuò)誤信息,循環(huán)遍歷之。

jsp頁(yè)面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



">

My JSP "login.jsp" starting page



    



 










" method="post" id="formLogin">

用戶名
密碼
驗(yàn)證碼
換一張
????





js代碼:
$(function(){

  //得到所有的錯(cuò)誤信息,循環(huán)遍歷之。調(diào)用一個(gè)方法來(lái)確定是否顯示錯(cuò)誤信息!
    $(".errorClass").each(function() {
        showError($(this));//遍歷每個(gè)元素,使用每個(gè)元素來(lái)調(diào)用showError方法
    });
     // 輸入框得到焦點(diǎn)隱藏錯(cuò)誤信息
     $(".inputClass").focus(function() {
         var labelId = $(this).attr("id") + "Error";//通過(guò)輸入框找到對(duì)應(yīng)的label的id
         $("#" + labelId).text("");//把label的內(nèi)容清空!
         showError($("#" + labelId));//隱藏沒(méi)有信息的label
     });
     //輸入框失去焦點(diǎn)進(jìn)行校驗(yàn)
     $(".inputClass").blur(function() {
         var id = $(this).attr("id");//獲取當(dāng)前輸入框的id
         var funName = "validate" + id.substring(0,1).toUpperCase() + id.substring(1) + "()";//得到對(duì)應(yīng)的校驗(yàn)函數(shù)名
         eval(funName);//執(zhí)行函數(shù)調(diào)用,把字符串當(dāng)成js代碼執(zhí)行
     });         
 });

function login(){

var bool = true;//表示校驗(yàn)通過(guò)
if(!validateLoginname()) {
    bool = false;
}
if(!validateLoginpass()) {
    bool = false;
}
if(!validateVerifyCode()){
    bool = false;
}
if(bool) {
    var loginname=$("#loginname").val();
    var loginpass=$("#loginpass").val();
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        dataType: "json",
        data: {method: "loginValidate", login: loginname,password:loginpass},
        url: "/onlineexam/LoginStudentServlet",
        success: function(data) {
              if(data.success){
                  if(data.successExam){
                      window.location.href="/onlineexam/demo.jsp";
                  }else{
                      window.location.href="/onlineexam/exam.jsp";
                  }
                  
              }else{
                  $.messager.alert("警告",data.msg);
              }
        }
    });    
}

}

// 校驗(yàn)登錄名
function validateLoginname() {

var bool = true;
$("#loginnameError").css("display", "none");
var value = $("#loginname").val();
if(!value) {// 非空校驗(yàn)
    $("#loginnameError").css("display", "");
    $("#loginnameError").text("用戶名不能為空!");
    bool = false;
} else if(value.length < 3 || value.length > 20) {//長(zhǎng)度校驗(yàn)
    $("#loginnameError").css("display", "");
    $("#loginnameError").text("用戶名長(zhǎng)度必須在3 ~ 20之間!");
    bool = false;
}
return bool;

}
function validateLoginpass() {

var bool = true;
$("#loginpassError").css("display", "none");
var value = $("#loginpass").val();
if(!value) {// 非空校驗(yàn)
    $("#loginpassError").css("display", "");
    $("#loginpassError").text("密碼不能為空!");
    bool = false;
} else if(value.length < 3 || value.length > 20) {//長(zhǎng)度校驗(yàn)
    $("#loginpassError").css("display", "");
    $("#loginpassError").text("密碼長(zhǎng)度必須在3 ~ 20之間!");
    bool = false;
}
return bool;

}

// 校驗(yàn)驗(yàn)證碼
function validateVerifyCode() {

var bool = true;
$("#verifyCodeError").css("display", "none");
var value = $("#verifyCode").val();
if(!value) {//非空校驗(yàn)
    $("#verifyCodeError").css("display", "");
    $("#verifyCodeError").text("驗(yàn)證碼不能為空!");
    bool = false;
} else if(value.length != 4) {//長(zhǎng)度不為4就是錯(cuò)誤的
    $("#verifyCodeError").css("display", "");
    $("#verifyCodeError").text("錯(cuò)誤的驗(yàn)證碼!");
    bool = false;
} else {//驗(yàn)證碼是否正確
    $.ajax({
        cache: false,
        async: false,
        type: "POST",
        dataType: "json",
        data: {method: "ajaxValidateVerifyCode", verifyCode: value},
        url: "/onlineexam/LoginStudentServlet",
        success: function(flag) {
            if(!flag) {
                $("#verifyCodeError").css("display", "");
                $("#verifyCodeError").text("錯(cuò)誤的驗(yàn)證碼!");
                bool = false;                    
            }
        }
    });
}
return bool;

}

// 判斷當(dāng)前元素是否存在內(nèi)容,如果存在顯示,不存在不顯示!
function showError(ele) {

var text = ele.text();//獲取元素的內(nèi)容
if(!text) {//如果沒(méi)有內(nèi)容
    ele.css("display", "none");//隱藏元素
} else {//如果有內(nèi)容
    ele.css("display", "");//顯示元素
}

}
// 換一張驗(yàn)證碼
function _hyz(){
var img=document.getElementById("imgVcode");
//需要給出一個(gè)參數(shù),這個(gè)參數(shù)每次都不同,這樣才不會(huì)因?yàn)闉g覽器的緩存,使得不能進(jìn)行換一張
img.src="/onlineexam/VerifyCodeServlet?a="+new Date().getTime();

  } 

后臺(tái)web.servlet層:
service層dao層就不一一寫(xiě)出了。

public class LoginStudentServlet extends BaseServlet {

StudentService studentService = new StudentService();
ExamService examService=new ExamService();
public String ajaxValidateLoginname(HttpServletRequest req,
        HttpServletResponse resp) throws ServletException, IOException {
    // 1. 獲取用戶名
    String loginname = req.getParameter("loginname");
    //2. 通過(guò)service得到校驗(yàn)結(jié)果
    boolean b = studentService.ajaxValidateLoginname(loginname);
    resp.getWriter().print(b);
    return null;
}

public String ajaxValidateVerifyCode(HttpServletRequest req,
        HttpServletResponse resp) throws ServletException, IOException {
    //1. 獲取輸入框中的驗(yàn)證碼
    String verifyCode = req.getParameter("verifyCode");
    // 2. 獲取圖片上真實(shí)的校驗(yàn)碼
    String vcode = (String) req.getSession().getAttribute("vCode");
    boolean b = verifyCode.equalsIgnoreCase(vcode);
    resp.getWriter().print(b);
    return null;
}

// 登錄功能

public void loginValidate(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException, SQLException {
    String name = req.getParameter("login");
    String password = req.getParameter("password");
    Student student = studentService.login(name, password);
    Score score=examService.findStudent(name);
    Json json = new Json();
    if (student == null) {
        json.setSuccess(false);
        json.setMsg("用戶名或密碼錯(cuò)誤");
        resp.getWriter().print(json.toString());
        resp.getWriter().close();
        //return "r:/loginStudent.jsp";
    } else {
        if(score!=null){
            json.setSuccessExam(true);
        }
        HttpSession session = req.getSession();
        session.setAttribute("sessionStudent",student);
        session.setAttribute("sessionScore",score);
        //String string=(String) session.getAttribute("sessionName");
        //System.out.println(string);
        json.setSuccess(true);
        json.setMsg("登錄成功");
        json.setStudent(student);        
        resp.getWriter().print(json);
        resp.getWriter().close();
        //return "r:/exam.jsp";//重定向到主頁(yè)
    }
}

}
注意:這里我自己編寫(xiě)了一個(gè)BaseServlet繼承了HttpServlet然后通過(guò)獲得method參數(shù),然后通過(guò)反射調(diào)用對(duì)應(yīng)的方法。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65651.html

相關(guān)文章

  • 登錄頁(yè)面布局以及js驗(yàn)證,ajax驗(yàn)證驗(yàn)證

    摘要:頁(yè)面向傳遞一個(gè)參數(shù),其值表示調(diào)用那個(gè)方法用戶名密碼驗(yàn)證碼換一張登錄重置代碼得到所有的錯(cuò)誤信息,循環(huán)遍歷之。 jsp頁(yè)面: My JSP login.jsp starting page body{ background-image:url(image/bg.jpg); background-repeat: repeat-x;...

    hedzr 評(píng)論0 收藏0
  • PHP 實(shí)現(xiàn)用戶注冊(cè)登錄功能

    摘要:本項(xiàng)目發(fā)布在實(shí)驗(yàn)樓,分為四部分內(nèi)容前端頁(yè)面制作,驗(yàn)證碼制作,實(shí)現(xiàn)注冊(cè)登陸,功能完善。全部章節(jié)及代碼詳解可以在實(shí)驗(yàn)樓中在線完成實(shí)現(xiàn)用戶注冊(cè)登錄功能驗(yàn)證碼制作一實(shí)驗(yàn)簡(jiǎn)介本次實(shí)驗(yàn)將會(huì)帶領(lǐng)大家使用面向?qū)ο蟮乃枷敕庋b一個(gè)驗(yàn)證碼類。 項(xiàng)目簡(jiǎn)介:本課程通過(guò)使用 PHP 及 Web 前端技術(shù)實(shí)現(xiàn)一個(gè)網(wǎng)站注冊(cè)登錄入口頁(yè)面,學(xué)習(xí)并實(shí)踐 PHP 編程,GD庫(kù),MySQL 擴(kuò)展,Bootstrap 響應(yīng)式布局...

    crelaber 評(píng)論0 收藏0
  • 前端框架快速開(kāi)發(fā)靜態(tài)頁(yè)面

    摘要:框架開(kāi)發(fā)解放了生產(chǎn)力,讓一個(gè)靜態(tài)頁(yè)面效果更逼真,也讓用戶體驗(yàn)逐漸上去,但是目前對(duì)網(wǎng)站的需求主要還是為了展示和宣傳一些東西,反觀教育機(jī)構(gòu)和政府部門(mén)的網(wǎng)站都是偏動(dòng)畫(huà)少,體現(xiàn)了公關(guān)的嚴(yán)肅性。 showImg(https://segmentfault.com/img/remote/1460000009262879?w=1183&h=522); 前言 最近很久沒(méi)有寫(xiě)文章,不忙也忙的生活節(jié)奏,博客...

    李世贊 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<