持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
问题
如何实现有状态的会话
Cookie机制
使用Cookie
Cookie的发送
会话Cookie和持久Cookie的区别
案例:
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String username = req.getParameter("username");
Cookie cookie = null;
System.out.println(username);
if(null != username)
{
cookie = new Cookie("name", username);
cookie.setMaxAge(60);
cookie.setPath("/");
resp.addCookie(cookie);
req.getRequestDispatcher("shouye.jsp").forward(req,resp);
}else
{
Cookie[] cookies = req.getCookies();
if(null != cookies)
{
for (Cookie c:cookies) {
if("name".equals(c.getName()))
{
req.getRequestDispatcher("shouye.jsp").forward(req,resp);
username = c.getValue();
}
}
}
}
if(null != username)
{
req.getRequestDispatcher("shouye.jsp").forward(req,resp);
}else
{
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
记录上次登录时间
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss");
String format = sdf.format(date);
Cookie cookie = new Cookie("time", format);
resp.addCookie(cookie);
Cookie[] cookies = req.getCookies();
String time = null;
if(null != cookies)
{
for (Cookie c: cookies) {
if("time".equals(c.getName()))
{
time = c.getValue();
}
}
}
if(null != time)
{
resp.getWriter().write("您上次登录时间为:"+time);
}else
{
resp.getWriter().write("欢迎您第一次登录....");
}
}