首先讓我們來編寫實現登錄的頁面
<!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:註銷登錄