欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

转发(Request)和重定向(Response)的区别(图片详解)

程序员文章站 2022-04-20 22:21:11
...

1.转发(Request)

转发(Request)和重定向(Response)的区别(图片详解)

1.一种在服务器内部的资源跳转一个方式
2.浏览器发送请求到服务器的A资源,A资解决一部分后转发到B资源再进行处理

2.重定向(Response)

转发(Request)和重定向(Response)的区别(图片详解)

1.浏览器发送请求到A资源,但A资源处解决不了请求的信息数据
2.A资源会响应消息给浏览器,告诉浏览器重定向到另一个资源,也就是B资源
3.A资源会响应给浏览器一个状态码:302 和响应头localtion:B资源的路径

3.转发(Request)和重定向(Response)的区别

转发用forword 重定向用redirect

1.请求次数

	转发:只请求一次      重定向:请求两次

2.地址栏变化:

	转发:地址栏不发生变化     重定向:地址栏发生变化

3.发生位置:

	转发:发生在服务器而浏览器全然不知    重定向:发生在浏览器

4.访问资源:

	转发:只能访问当前服务器的资源     重定向:可以访问其他服务器的资源

5.资源共享:

	转发:可以使用request对象来共享资源     重定向:不能使用request对象共享资源

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //request对象存值
        req.setAttribute("msg","123");
        //重定向
        resp.sendRedirect("/web_Response/demo01");
    }



@WebServlet("/demo01")
public class AServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object msg = request.getAttribute("msg");
        System.out.println(msg);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request,response);
    }
}

转发(Request)和重定向(Response)的区别(图片详解)

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //存值
        req.setAttribute("msg","123");
        //转发
        req.getRequestDispatcher("/demo01").forward(req,resp);
    }

@WebServlet("/demo01")
public class AServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object msg = request.getAttribute("msg");
        System.out.println(msg);
    }

转发(Request)和重定向(Response)的区别(图片详解)

路径分类

		1.相对路径:通过相对路径不可以确定唯一资源
		
					1.如:以./index.html开头
					
					2.不以/开头,以./开头的路径
					
					规则:找到当前资源和目标资源之间的相对位置关系
					
							1.  ./:当前目录
							
							2. ../:后退一级目录
							
		2.绝对路径	
					1.:如:http://localhost/day15/response          /day15/response    
					
					2.:以/开头的路径
					
					3:规则:判断定义的路径时给谁用的?判断请求将来从哪里出发
							
							1.给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
										
										建议虚拟目录动态获取:request.getContextPath();
										
										<a>  ,  <form>  ,  重定向...
							
							2.给服务器使用:需要加虚拟目录
										
										转发路径