JavaWeb實(shí)現(xiàn)自動(dòng)登錄功能
本文實(shí)例為大家分享了JavaWeb實(shí)現(xiàn)自動(dòng)登錄功能的具體代碼,供大家參考,具體內(nèi)容如下
自動(dòng)登錄是通過(guò)存儲(chǔ)cookie值來(lái)實(shí)現(xiàn)的。
工程目錄如下:

login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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>
</head>
<body>
<form action="login" method="post">
用戶名:<input name="username" type="text"><br>
密碼:<input name="password" type="password">
<input type="checkbox" name="autoLogin" value="autoLogin">自動(dòng)登錄
<input type="submit" value="提交">
</form>
</body>
</html>
success.jsp(主要用于測(cè)試是否儲(chǔ)存成功):
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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>Insert title here</title>
</head>
<body>
${sessionScope.username }<br>
${sessionScope.password }
</body>
</html>
LoginServlet(用于登錄邏輯處理):
package servletLogin;
import java.io.IOException;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
//登錄成功,(在這應(yīng)該是和數(shù)據(jù)庫(kù)的值對(duì)比)
if(username.equals("alan呵呵") && password.equals("123")){
String autoLogin = request.getParameter("autoLogin");
if(autoLogin!=null){
//編碼是為了在cookie中存儲(chǔ)漢字
String usernameCode = URLEncoder.encode(username, "utf-8");
Cookie usernameCookie = new Cookie("username",usernameCode);
Cookie passwordCookie = new Cookie("password",password);
//設(shè)置持久化時(shí)間
usernameCookie.setMaxAge(60*60);
passwordCookie.setMaxAge(60*60);
//設(shè)置cookie攜帶路徑
usernameCookie.setPath(request.getContextPath());
passwordCookie.setPath(request.getContextPath());
//發(fā)送cookie
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
}
session.setAttribute("username", username);
session.setAttribute("password", password);
response.sendRedirect("success.jsp");
}else{
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
LoginFilter(用于自動(dòng)登錄的攔截器):
package filter;
import java.io.IOException;
import java.net.URLDecoder;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class LoginFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
// 獲得cookie中用戶名和密碼 進(jìn)行登錄的操作
// 定義cookie_username
String cookie_username = null;
// 定義cookie_password
String cookie_password = null;
// 獲得cookie
Cookie[] cookies = req.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
// 獲得名字是cookie_username和cookie_password
if ("username".equals(cookie.getName())) {
cookie_username = cookie.getValue();
// 對(duì)cookie中的值解碼
cookie_username = URLDecoder.decode(cookie_username,
"UTF-8");
}
if ("password".equals(cookie.getName())) {
cookie_password = cookie.getValue();
}
}
}
if(cookie_username != null && cookie_password != null){
if(cookie_username.equals("alan呵呵") && cookie_password.equals("123")){
session.setAttribute("username", cookie_username);
session.setAttribute("password", cookie_password);
}
}
chain.doFilter(request, response);
}
public void destroy() {
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
web.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
version="2.5">
<display-name>WEB24</display-name>
<!-- 自動(dòng)登錄的filter -->
<filter>
<filter-name>AutoLoginFilter</filter-name>
<filter-class>filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AutoLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servletLogin.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaWeb實(shí)現(xiàn)用戶登錄注冊(cè)功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)
- JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)
- javaweb登錄驗(yàn)證碼的實(shí)現(xiàn)方法
- javaWeb使用驗(yàn)證碼實(shí)現(xiàn)簡(jiǎn)單登錄
- javaweb項(xiàng)目如何實(shí)現(xiàn)手機(jī)短信登錄
- JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能(服務(wù)器)
- JavaWeb實(shí)現(xiàn)用戶登錄與注冊(cè)功能
- JavaWeb實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)登錄功能
- JavaWeb使用mvc模式實(shí)現(xiàn)登錄功能
相關(guān)文章
SpringBoot使用SensitiveWord實(shí)現(xiàn)敏感詞過(guò)濾
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何使用SensitiveWord實(shí)現(xiàn)敏感詞過(guò)濾功能,文中示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01
一文詳解Spring?Boot可以同時(shí)處理多少請(qǐng)求
SpringBoot是一個(gè)流行的Java開發(fā)框架,它被廣泛用于構(gòu)建Web應(yīng)用程序,但是,開發(fā)人員通常會(huì)擔(dān)心它的性能問(wèn)題,特別是在高負(fù)載條件下,Spring?Boot能夠同時(shí)處理多少請(qǐng)求是一個(gè)重要的問(wèn)題,在本文中,我們將討論SpringBoot的請(qǐng)求處理能力,并介紹如何提高性能2023-10-10
Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟,我們?cè)谑褂胿ue進(jìn)行前端開發(fā)時(shí)都需要登錄驗(yàn)證,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Spring框架構(gòu)造注入操作實(shí)戰(zhàn)案例
這篇文章主要介紹了Spring框架構(gòu)造注入操作,結(jié)合具體實(shí)例形式分析了spring框架構(gòu)造輸入的相關(guān)定義與使用操作技巧,需要的朋友可以參考下2019-11-11
Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解
這篇文章主要介紹了Java 常用類解析:java異常機(jī)制,異常棧,異常處理方式,異常鏈,異常丟失詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
Java讀取properties文件連接數(shù)據(jù)庫(kù)的方法示例
這篇文章主要介紹了Java讀取properties文件連接數(shù)據(jù)庫(kù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04

