JavaWeb————利用Cookies和Session實現用戶登錄操作

首先讓我們來編寫實現登錄的頁面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
<form action="http://localhost:8080/ServletDemo/session" method="get">
    用戶名:<input type="text" name="username"><br>
<!--    當然這裏可以有密碼和許多東西,我只是懶~(ૢ˃ꌂ˂ૢ)     -->
    <input type="submit" value="提交">
</form>
</body>
</html>

接下來我們來保存數據

public class SessionServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html; charset=UTF-8");  
        PrintWriter out=response.getWriter();
        Cookie[] cookies=request.getCookies();
        
        //獲取session,將前端提交的用戶名保存入session中
        HttpSession session=request.getSession();
        String username=request.getParameter("username");
        session.setAttribute("user",username);
        
        //跳轉到登錄Servlet
        response.sendRedirect("/ServletDemo/login");

    }
}

登錄成功跳轉到LoginServlet類

public class LoginServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html;charset=utf-8");   //解決亂碼問題
        
        //獲取session
        HttpSession session=request.getSession();
        String username= (String) session.getAttribute("user");  //獲取用戶名信息

        if (username==null){
            response.getWriter().write("您還未登陸,請<a href='/ServletDemo/a.html'>登陸</a>");
        }else {
            response.getWriter().print("您已登陸,歡迎您 "+username);
            response.getWriter().print("<a href='/ServletDemo/logout'>退出</a>");
            //創建Cookie對象用來保存Session的id
            Cookie cookie=new Cookie("JSESSIONID",session.getId());
            cookie.setMaxAge(30*60);
            cookie.setPath("/ServletDemo");
            response.addCookie(cookie);
        }
    }
}

實現註銷Servlet,刪除session即可

public class LogoutServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.getSession().removeAttribute("user");
        response.sendRedirect("/ServletDemo/login");

    }
}

 

結果如下:

1:登錄

2:登陸成功

3:註銷登錄

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章