100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Servlet之请求转发和响应重定向

Servlet之请求转发和响应重定向

时间:2023-01-14 02:23:20

相关推荐

Servlet之请求转发和响应重定向

多个servlet之间的跳转有两种方式:

请求转发:request.getRequestDispatcher(“转发路径”).forward(request, response);

响应重定向:response.sendRedirect("转发路径 ");

请求转发:

@WebServlet("/direct/login") // @WebServlet注解相当于web.xml文件public class CheckLoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {if(1 == 1){// 请求转发request.getRequestDispatcher("/direct/index").forward(request,response);}}}

@WebServlet("/direct/index") // @WebServlet注解相当于web.xml文件public class IndexServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().println("<h1>This is index page</h1>");}}

请求转发原理:

请求转发是服务器跳转,浏览器只产生一次请求

请求转发语句:request.getRequestDispatcher().forward()

请求转发执行流程:浏览器发送一个请求到tomcat服务器,tomcat中CheckLoginServlet对请求进行处理,当CheckLoginServlet中调用了request.getRequestDispatcher().forward()方法后,就会将该请求(HttpServletRequest对象)原封不动的发送给IndexServlet,当indexServlet处理完该请求后产生的响应,将响应的结果返回给浏览器。这里我们可以看到浏览器地址栏的URL地址没有发生变化,证明浏览器只产生了一次请求。

响应重定向转发:

@WebServlet("/direct/login") // @WebServlet注解相当于web.xml文件public class CheckLoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {if(1 == 1){// 响应重定向response.sendRedirect("/direct/index");}}}

@WebServlet("/direct/index") // @WebServlet注解相当于web.xml文件public class IndexServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.getWriter().println("<h1>This is index page</h1>");}}

响应重定向原理:

响应重定向是浏览器端跳转,会产生两次请求

响应重定向语句:response.sendRedirect()

响应重定向执行流程:浏览器发送一个请求到tomcat服务器,tomcat中CheckLoginServlet对请求进行处理,当CheckLoginServlet中调用了response.sendRedirect()方法后,会马上返回一个响应给浏览器。然后浏览器会重写发送一个请求给IndexServlet,(注意这个请求和浏览器发送的第一个请求没有任何关联),当indexServlet处理完该请求后产生的响应,将响应的结果返回给浏览器。这里我们可以看到浏览器地址栏的URL地址发生了变化,证明浏览器产生了两次请求。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。