cookie干嘛用的
直接记录东西在浏览器
1. 用户登录界面(HTML)
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="login" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
2. 登录Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 这里简化了用户验证过程,实际应用中应该查询数据库或其他用户存储
if ("admin".equals(username) && "password123".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
// 登录成功,重定向到某个页面
response.sendRedirect("home");
} else {
// 登录失败,显示错误信息
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<script>alert('Invalid username or password');location='login.html';</script>");
}
}
}
3. 使用会话的Servlet
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HomeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute("username") != null) {
// 用户已登录
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<h1>Welcome, " + session.getAttribute("username") + "</h1>");
} else {
// 用户未登录或会话已过期
response.sendRedirect("login.html");
}
}
}
4. 配置web.xml
在你的Web应用的web.xml
文件中,你需要配置这些Servlet:
<web-app>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>HomeServlet</servlet-name>
<servlet-class>HomeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HomeServlet</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
</web-app>
注意事项
- 安全性: 这个例子非常简单,没有考虑安全性(如密码加密、SQL注入防护等)。在实际应用中,这些都是必须考虑的。
- 会话管理: 会话可以通过cookie或URL重写来维护。确保考虑到用户禁用cookie的情况。
- 会话过期: 应该处理会话过期的情况,例如重定向用户到登录页面。
- 框架支持: 在实际开发中,通常会使用Spring等框架来简化会话管理和安全性控制。
Session
session
是生成一个id
给浏览器 浏览器存id
当交互的时候id传给idea idea再将通过 session.getAttribute("指定属性")
拿到之前设置的属性