Servlet Cookie 处理学习笔记
什么是Cookie?
Cookie是一小段文本信息,由服务器发送给客户端浏览器,浏览器把它保存下来,并在每次请求同一网站时,将这些信息发送给服务器。Cookie常用于记录一些用户的偏好设置、登录状态等信息。
如何创建和发送Cookie?
在Servlet中,可以通过javax.servlet.http.Cookie
类来创建和发送Cookie。
javaCopy CodeCookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
以上代码创建了一个名为"name",值为"value"的Cookie并将其发送到客户端浏览器。
如何获取和使用Cookie?
在Servlet中,可以通过javax.servlet.http.HttpServletRequest
对象的getCookies()
方法来获取客户端发送的所有Cookie。
javaCopy CodeCookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = cookie.getName();
String value = cookie.getValue();
//...
}
}
以上代码获取了所有客户端发送的Cookie,并遍历打印了每个Cookie的名字和值。
实例
下面是一个简单的例子,展示如何使用Cookie记录用户的登录状态。
javaCopy Code@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String USERNAME = "admin";
private static final String PASSWORD = "123456";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (USERNAME.equals(username) && PASSWORD.equals(password)) {
// 登录成功,创建Cookie并发送到客户端浏览器
Cookie cookie = new Cookie("loginUser", username);
cookie.setMaxAge(60 * 60 * 24 * 7); // 有效期1周
response.addCookie(cookie);
response.sendRedirect(request.getContextPath() + "/main.jsp"); // 跳转到主页
} else {
// 登录失败,返回错误信息
request.setAttribute("error", "用户名或密码不正确");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
以上代码处理了用户登录请求,如果用户名和密码正确,则创建一个名为"loginUser",值为当前登录用户的Cookie并将其发送到客户端浏览器,有效期为1周。在主页中,可以通过获取这个Cookie来判断用户是否已经登录,从而展示不同的内容。
javaCopy Code@WebServlet("/main")
public class MainServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
boolean hasLogin = false;
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("loginUser".equals(cookie.getName())) {
// 找到了名为"loginUser"的Cookie,表示用户已经登录
String username = cookie.getValue();
request.setAttribute("username", username);
hasLogin = true;
break;
}
}
}
if (!hasLogin) {
// 用户未登录,跳转到登录页
response.sendRedirect(request.getContextPath() + "/login.jsp");
return;
}
request.getRequestDispatcher("/main.jsp").forward(request, response);
}
}
以上代码处理了用户访问主页的请求,首先通过获取所有Cookie来查找是否有名为"loginUser"的Cookie,如果找到了,则表示用户已经登录,可以展示主页的内容;否则跳转到登录页。在主页中,可以通过${username}
来获取当前登录用户的用户名并展示在页面上。
以上是Servlet Cookie处理的学习笔记和实例,希望对你有所帮助。