摘要:頁面向傳遞一個參數,其值表示調用那個方法用戶名密碼驗證碼換一張登錄重置代碼得到所有的錯誤信息,循環遍歷之。
jsp頁面:
<%@ 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
用戶名 | ||
密碼 | ||
驗證碼 | ||
換一張 | ||
???? |
js代碼:
$(function(){
//得到所有的錯誤信息,循環遍歷之。調用一個方法來確定是否顯示錯誤信息! $(".errorClass").each(function() { showError($(this));//遍歷每個元素,使用每個元素來調用showError方法 }); // 輸入框得到焦點隱藏錯誤信息 $(".inputClass").focus(function() { var labelId = $(this).attr("id") + "Error";//通過輸入框找到對應的label的id $("#" + labelId).text("");//把label的內容清空! showError($("#" + labelId));//隱藏沒有信息的label }); //輸入框失去焦點進行校驗 $(".inputClass").blur(function() { var id = $(this).attr("id");//獲取當前輸入框的id var funName = "validate" + id.substring(0,1).toUpperCase() + id.substring(1) + "()";//得到對應的校驗函數名 eval(funName);//執行函數調用,把字符串當成js代碼執行 }); });
function login(){
var bool = true;//表示校驗通過 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); } } }); }
}
// 校驗登錄名
function validateLoginname() {
var bool = true; $("#loginnameError").css("display", "none"); var value = $("#loginname").val(); if(!value) {// 非空校驗 $("#loginnameError").css("display", ""); $("#loginnameError").text("用戶名不能為空!"); bool = false; } else if(value.length < 3 || value.length > 20) {//長度校驗 $("#loginnameError").css("display", ""); $("#loginnameError").text("用戶名長度必須在3 ~ 20之間!"); bool = false; } return bool;
}
function validateLoginpass() {
var bool = true; $("#loginpassError").css("display", "none"); var value = $("#loginpass").val(); if(!value) {// 非空校驗 $("#loginpassError").css("display", ""); $("#loginpassError").text("密碼不能為空!"); bool = false; } else if(value.length < 3 || value.length > 20) {//長度校驗 $("#loginpassError").css("display", ""); $("#loginpassError").text("密碼長度必須在3 ~ 20之間!"); bool = false; } return bool;
}
// 校驗驗證碼
function validateVerifyCode() {
var bool = true; $("#verifyCodeError").css("display", "none"); var value = $("#verifyCode").val(); if(!value) {//非空校驗 $("#verifyCodeError").css("display", ""); $("#verifyCodeError").text("驗證碼不能為空!"); bool = false; } else if(value.length != 4) {//長度不為4就是錯誤的 $("#verifyCodeError").css("display", ""); $("#verifyCodeError").text("錯誤的驗證碼!"); bool = false; } else {//驗證碼是否正確 $.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("錯誤的驗證碼!"); bool = false; } } }); } return bool;
}
// 判斷當前元素是否存在內容,如果存在顯示,不存在不顯示!
function showError(ele) {
var text = ele.text();//獲取元素的內容 if(!text) {//如果沒有內容 ele.css("display", "none");//隱藏元素 } else {//如果有內容 ele.css("display", "");//顯示元素 }
}
// 換一張驗證碼
function _hyz(){
var img=document.getElementById("imgVcode");
//需要給出一個參數,這個參數每次都不同,這樣才不會因為瀏覽器的緩存,使得不能進行換一張
img.src="/onlineexam/VerifyCodeServlet?a="+new Date().getTime();
}
后臺web.servlet層:
service層dao層就不一一寫出了。
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. 通過service得到校驗結果 boolean b = studentService.ajaxValidateLoginname(loginname); resp.getWriter().print(b); return null; } public String ajaxValidateVerifyCode(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 獲取輸入框中的驗證碼 String verifyCode = req.getParameter("verifyCode"); // 2. 獲取圖片上真實的校驗碼 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("用戶名或密碼錯誤"); 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";//重定向到主頁 } }
}
注意:這里我自己編寫了一個BaseServlet繼承了HttpServlet然后通過獲得method參數,然后通過反射調用對應的方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107012.html
摘要:頁面向傳遞一個參數,其值表示調用那個方法用戶名密碼驗證碼換一張登錄重置代碼得到所有的錯誤信息,循環遍歷之。 jsp頁面: My JSP login.jsp starting page body{ background-image:url(image/bg.jpg); background-repeat: repeat-x;...
摘要:本項目發布在實驗樓,分為四部分內容前端頁面制作,驗證碼制作,實現注冊登陸,功能完善。全部章節及代碼詳解可以在實驗樓中在線完成實現用戶注冊登錄功能驗證碼制作一實驗簡介本次實驗將會帶領大家使用面向對象的思想封裝一個驗證碼類。 項目簡介:本課程通過使用 PHP 及 Web 前端技術實現一個網站注冊登錄入口頁面,學習并實踐 PHP 編程,GD庫,MySQL 擴展,Bootstrap 響應式布局...
摘要:框架開發解放了生產力,讓一個靜態頁面效果更逼真,也讓用戶體驗逐漸上去,但是目前對網站的需求主要還是為了展示和宣傳一些東西,反觀教育機構和政府部門的網站都是偏動畫少,體現了公關的嚴肅性。 showImg(https://segmentfault.com/img/remote/1460000009262879?w=1183&h=522); 前言 最近很久沒有寫文章,不忙也忙的生活節奏,博客...
閱讀 3014·2021-11-16 11:42
閱讀 3651·2021-09-08 09:36
閱讀 950·2019-08-30 12:52
閱讀 2481·2019-08-29 14:12
閱讀 769·2019-08-29 13:53
閱讀 3583·2019-08-29 12:16
閱讀 644·2019-08-29 12:12
閱讀 2469·2019-08-29 11:16