转发与重定向

请求转发

图片示例

在这里插入图片描述

代码示例

//第一个Servlet
@WebServlet(value = "/first")
public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setAttribute("first","first");
        //实现请求转发的代码
        req.getRequestDispatcher("/second").forward(req,resp);
    }
}
//第二个Servlet
@WebServlet(value = "/second")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setAttribute("second","second");
        //实现请求转发的代码
        req.getRequestDispatcher("/third").forward(req,resp);
    }
}
//第三个Servlet
@WebServlet(value = "/third")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		req.setAttribute("third","third");
        //实现请求转发的代码
        req.getRequestDispatcher("/inner.jsp").forward(req,resp);
    }
}
//inner.jsp
<body>
	first = <%=request.getAttribute("first")%> <br >
	second = <%=request.getAttribute("second")%> <br >
	third = <%=request.getAttribute("third")%> <br >
</body>

结果:
first = first
second = second
third = third

注释:
客户端向服务连接器1发起一个请求,服务器1转发请求到服务器2,服务器2再转发到服务器3.服务连接器3再转发到inner.jsp.JSP会返回一个response给客户端。

重定向

图片示例

在这里插入图片描述

代码示例

@WebServlet(value = "/redirect")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //实现重定向的代码
        resp.sendRedirect("inner.jsp");

    }
}
//通过setHeader定向地址
@WebServlet(value = "/redirection")
public class UserServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //实现重定向的代码
		resp.setStatus(302);
        resp.setHeader("location","https://www.baidu.com/");

    }
}

//inner.jsp
<body>
	redirect
</body>

结果
redirect

在这里插入图片描述
注释
客户端发起一个请求,服务端返回一个response,此时客户端重新打开一个新的地址(新地址可以使系统内的也可以是系统外的地址)

区别

转发:一次请求、在服务端进行转发、地址不变
重定向:两次请求、客户端方重定向、地址改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值