请求转发和重定向

请求转发:

服务端的行为,地址栏不会发生改变,只有一个请求,request当中的数据在servlet程序中共享
转发的地址只能是网站内的资源,不能转到百度等页面

  	//请求跳转到servlets02
    request.getRequestDispatcher("s02").forward(request, response);
    //请求跳转到页面
    request.getRequestDispatcher("web/user.html").forward(request, response);
    //跳转到WEB-INF的页面
    request.getRequestDispatcher("WEB-INF/test.html").forward(request, response);

重定向:

客户端的行为,地址栏发生改变,有两个请求,重定向可以转发到任意地址(可以跨越),request中的数据不共享
不能重定向到WEB-INF中的页面
可以重定向到百度等页面

	response.sendRedirect("s02");
    response.sendRedirect("https://wap.baidu.com");
    //客户端行为,不能重定向到WEB-INF中的页面

在session中,当cookie在网页中被禁用之后,可以在网址栏中添加cookie中存的session的id即可访问,通过重定向方法转到另一个servlet:

   HttpSession session=request.getSession();
        
    //session设置数据
    session.setAttribute("username","admin");
    session.setAttribute("password","123456");
    System.out.println(session.getId());
    
    //重写url,追加sessionID
    String newUrl=response.encodeRedirectUrl("getSession");
    System.out.println(newUrl);
    //重定向到要跳转的servlet
    response.sendRedirect(newUrl);

你可能感兴趣的:(java,http)