登陸頁面示例2(Cookie、Session的使用)

案例需求描述

在這裏插入圖片描述

案例準備

《登陸頁面示例(包含請求轉發、重定向解析及MVC應用)》文章中相關資源引入,並修改相應配置,微調。

代碼實現——登陸頁面完善

  • 登錄頁,登陸成功後添加保存用戶信息步驟
//4.頁面展示
if(existUser == null) {
	//登錄失敗
	//向request域中保存一個錯誤信息
	request.setAttribute("msg", "用戶名或密碼錯誤!");
	//使用請求轉發進行頁面跳轉
	request.getRequestDispatcher("/login.jsp").forward(request, response);
}else {
	//登陸成功  重定向
	//保存用戶登陸數據:保存到會話當中。
	HttpSession session = request.getSession();
	session.setAttribute("existUser", existUser);
	
	response.sendRedirect("/web_cookie/success.jsp");
}
  • 登陸成功頁面,登陸判斷
<% 
	if(request.getSession().getAttribute("existUser") == null){
%>
	<h1>您還未登錄,請先<a href = "/web_cookie/login.jsp">點擊登錄</a></h1>
<%
	}else{
	User existUser = (User)request.getSession().getAttribute("existUser");
%>	
	<h1>用戶登錄成功頁面</h1>
	<h3>歡迎您,<%= existUser.getNickname() %></h3>
<%	
	}
%>

代碼實現——一次性驗證碼

在這裏插入圖片描述

  • 百度一個生成一次性驗證碼圖片的servlet文件,做微調,目的是取得生成驗證碼的字符串,用來校驗登錄。

在這裏插入圖片描述

  • 校驗一次性驗證碼(在loginServlet中)
//一次性驗證碼的校驗
//接收驗證碼
String checkcode1 = request.getParameter("checkcode");
//從Session中獲取一次性驗證碼的值
String checkcode2 = (String) request.getSession().getAttribute("checkCode");
//爲了保證驗證碼只使用一次,應該將session中的驗證碼值清空
request.getSession().removeAttribute("checkCode");
//校驗一次性驗證碼
if(!checkcode1.equalsIgnoreCase(checkcode2)) {
	request.setAttribute("msg", "驗證碼輸入錯誤");
	request.getRequestDispatcher("/login.jsp").forward(request, response);
	return;
}
  • 一次性驗證碼的點擊切換

首先在登錄頁面添加點擊事件
在這裏插入圖片描述

其次,利用js函數修改生成圖片的src即可,time爲了改變提交的參數,防止瀏覽器讀取相同路徑的緩存,這樣驗證碼就不會改變了。
在這裏插入圖片描述

代碼實現——記住用戶名

如果在登陸的過程中,將記住登錄名的複選框勾選了,並且在登陸成功的情況下,需要記住用戶名,在關閉瀏覽器下次訪問的時候,會在用戶名文本框中自動呈現出用戶名。

  • 後臺代碼(LoginServlet文件)
//記住用戶名的後臺代碼:
//判斷複選框是否已經勾選
String remember = request.getParameter("remember");
if("true".equals(remember)) {  
	//說明勾選了
	Cookie cookie = new Cookie("username", existUser.getUsername());
	//設置有效路徑:
	cookie.setPath("/web_cookie");
	//設置有效時長:
	cookie.setMaxAge(60*60*24*7); //7天
	//cookie回寫到瀏覽器
	response.addCookie(cookie); 
}
  • 在頁面的文本框中回顯用戶名(login.jsp文件,使用EL表達式,添加了value屬性)
<tr>
	<td>用戶名</td>
	<td><input type="text" name="username" value="${cookie.username.value}"></td>
</tr>

代碼實現——系統退出

  • 提供一個退出的鏈接(success.jsp文件下)
<h1>用戶登錄成功頁面</h1>
<h3>歡迎您,<%= existUser.getNickname() %><a href="/web_cookie/logoutServlet">退出</a></h3>
  • 新建logoutServlet文件
//銷燬session
request.getSession().invalidate();
//頁面跳轉
response.sendRedirect("/web_cookie/success.jsp");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章