java web實現(xiàn)自動登錄功能
本文實例為大家分享了java web實現(xiàn)自動登錄功能的具體代碼,供大家參考,具體內(nèi)容如下
主要思路就是:當用戶訪問網(wǎng)站的首頁時,瀏覽器端會先檢擦瀏覽器中存在的cookie中是否又登錄的用戶的用戶名,如果有,則直接跳轉(zhuǎn)至用戶登錄好的界面,如果沒有,則重定向至登錄界面,在服務器端創(chuàng)建該用戶登錄的cookie,響應時,將創(chuàng)建的cookie返回至瀏覽器端保存。
一、用戶訪問首頁時檢查cookie是否存在。
package ahpudong.com; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/index.do") public class index extends HttpServlet { public index() { super(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Cookie[] cookies=request.getCookies(); if(cookies!=null){ for(Cookie cookie:cookies){ String name=cookie.getName(); String value=cookie.getValue(); if("name".equals(name) && "chendong".equals(value)){ request.setAttribute(name, value); request.getRequestDispatcher("user.view").forward(request, response); return; } } } response.sendRedirect("login.jsp"); } }
二、確定用戶登錄的cookie不存在,在手動登錄的過程中創(chuàng)建用戶登錄cookie。
package ahpudong.com; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/login.do") public class login extends HttpServlet { public login() { super(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); String login=request.getParameter("auto"); if("chendong".equals(name) && "123456".equals(pwd)){ if("on".equals(login)){ Cookie cookie=new Cookie("name","chendong"); cookie.setMaxAge(7*24*60*60);//有效期為一個星期 response.addCookie(cookie); request.setAttribute("name",name); request.getRequestDispatcher("user.view").forward(request, response); } }else{ response.sendRedirect("login.jsp"); } } }
三、登錄成功時的視圖層
package ahpudong.com; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/user.view") public class User extends HttpServlet { public User() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request,response); } public void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ response.setCharacterEncoding("utf-8"); PrintWriter out=response.getWriter(); String name=(String) request.getAttribute("name"); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.println("<h1>"+"welcome "+name+" login"+"</h1>"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java實現(xiàn)紀元秒和本地日期時間互換的方法【經(jīng)典實例】
這篇文章主要介紹了Java實現(xiàn)紀元秒和本地日期時間互換的方法,結(jié)合具體實例形式分析了Java日期時間相關(guān)操作技巧,需要的朋友可以參考下2017-04-04非常全面的Java?SpringBoot點贊功能實現(xiàn)
但是這些功能再項目中是高頻出現(xiàn)的,如果直接操作數(shù)據(jù)庫的話,對數(shù)據(jù)庫壓力太大。那遇到這個問題怎么解決?這篇文章主要給大家介紹了關(guān)于Java?SpringBoot點贊功能實現(xiàn)?的相關(guān)資料,需要的朋友可以參考下2022-01-01SpringBoot中創(chuàng)建的AOP不生效的原因及解決
這篇文章主要介紹了SpringBoot中創(chuàng)建的AOP不生效的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11深入了解Java中Synchronized關(guān)鍵字的實現(xiàn)原理
synchronized是JVM的內(nèi)置鎖,基于Monitor機制實現(xiàn),每一個對象都有一個與之關(guān)聯(lián)的監(jiān)視器?(Monitor),這個監(jiān)視器充當了一種互斥鎖的角色,本文就詳細聊一聊Synchronized關(guān)鍵字的實現(xiàn)原理,需要的朋友可以參考下2023-06-06IDEA?Error:java:無效的源發(fā)行版:13的解決過程
之前用idea運行時,也會出現(xiàn)這種情況,后面通過網(wǎng)上的資料解決了這個問題,下面這篇文章主要給大家介紹了關(guān)于IDEA?Error:java:無效的源發(fā)行版:13的解決過程,需要的朋友可以參考下2023-01-01SpringBoot可視化接口開發(fā)工具magic-api的簡單使用教程
作為Java后端開發(fā),平時開發(fā)API接口的時候經(jīng)常需要定義Controller、Service、Dao、Mapper、XML、VO等Java對象。有沒有什么辦法可以讓我們不寫這些代碼,直接操作數(shù)據(jù)庫生成API接口呢?今天給大家推薦一款工具magic-api,來幫我們實現(xiàn)這個小目標!2021-06-06Java后臺接收數(shù)據(jù)的三種方式(url、form-data與application/json)
本文主要介紹了Java后臺接收數(shù)據(jù)的三種方式(url、form-data與application/json),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07