首先让我们来编写实现登录的页面
<!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:注销登录