重定向的疑问

各位好,我简单描述下这段代码思路;
思路:
客户端浏览器访问登录页面,提交给servlet后,该servlet生成cookie对象响应给浏览器(cookie生存周期10s);
Cookie cookie=new Cookie("msg","cookiecookie");
cookie.setMaxAge(10);
resp.addCookie(cookie);
展现给用户一个jsp页面,页面上有个"添加数据"的按钮,该按钮的servlet这么写的:
public class TurnServlet extends HttpServlet{

private static final long serialVersionUID = 1L;

@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //设置请求编码格式
    //设置相应编码格式
    resp.setContentType("text/html;charset=utf-8");
    //获取cookie数组
    Cookie[] cookies=req.getCookies();
    if(cookies != null) {
        for(Cookie c:cookies) {
            String name=c.getName();
            String value=c.getValue();
            if("msg".equals(name) && "cookiecookie".equals(value)) {
                System.out.println("cookie::"+name+":"+value);
                //重定向
                resp.sendRedirect("addCar.jsp");
            }
        }
    }
    if(cookies == null || cookies.length == 0){
        //重定向
        System.out.println("我要重定向");
        resp.sendRedirect("login.jsp");
    }
}
}

但是这个servlet在10s后cookie到期后,却不能重定向到login.jsp页面,求解?

阅读 1.9k
2 个回答

那你把 for (Cookie c : cookies) 里其他 cookie 打出来看看都是些啥呗.

我记得应该会有一个 TomcatjsessionId 之类的东西.

msg这个cookie是你添加的,但一般Tomcat会自动添加一个jsessionid的东西,用来实现浏览器和服务端之间的session机制,可以去了解一下。
所以cookies一般不为空,你这种判断方式也不合理。你要做的应该是:遍历完整个cookies,若找不到名为msg的cookie,说明msg这个cookie过期了,需要重定向。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题