转发
转发是在服务器进行操作的,在前端客户端页面是看不到什么变化的,
通俗理解: 客户端跟服务端要资源,但是服务端没有这个资源,那么服务器端就会去请求别的接口来获取客户机想要的资源,然后在返回给客户端;
转发内部原理如下:
重定向
重定向可以理解为重新定向资源,当服务器进行转发时,客户端会进行2次请求,资源地址也会跟着变化,
通俗点理解:客户机想服务器请求资源,但是服务器没有这个资源,这时候服务器会返回一个302的状态给客户端,并给出重定向的地址,放在响应头的Location中,如图:
重定向底层执行原理如下图:
通过上面的流程,那我们在代码中手动返回302的状态码,并且在响应头加上 Location 字符,其实也是可以实现重定向功能的;代码如下:
- package com;
-
- import javax.jws.WebService;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- // servlet 3.0之后推出的新功能,使用注解配置接口路径,有这个注解,就不需要在web.xml中配置 servlet-name和servlet-class了
- @WebServlet("/IndexController")
- public class IndexController extends HttpServlet {
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
- resp.setStatus(302);
- resp.setHeader("Location","/UserCOntroller");
-
- }
- }