HttpServletResponse实现重定向
写在前面:
web服务器接收到客户端的http请求,针对这个请求,分别建立了一个代表请求的HttpServletResponse对象;和一个代表响应的HttpServletRequest对象。
如果要获取客户端请求过来的参数:HttpServletRequest对象。
如果要给客户端响应一些信息:找HttpServletResponse对象。
HttpServletResponse实现重定向
resp.sendRedirect("/response_war/down");
一个web资源收到客户端请求后,它会通知客户端去访问另一个web资源,这个过程叫重定向。
比如:用户登录,用户登录成功后,会跳转到另一个页面,这个过程就是重定向。
重定向的时候,一定要注意路径问题,否则会404。
正确写法:
class:
1 package com.wang.servlet; 2 3 import javax.servlet.ServletException; 4 import javax.servlet.ServletOutputStream; 5 import javax.servlet.http.HttpServlet; 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 import java.io.FileInputStream; 9 import java.io.IOException; 10 import java.net.URLEncoder; 11 12 public class RedirectServlet extends HttpServlet { 13 @Override 14 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 15 resp.sendRedirect("/response_war/down"); 16 } 17 18 @Override 19 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 20 doGet(req, resp); 21 } 22 }
注册和映射:
1 <!--注册和映射--> 2 <servlet> 3 <!--这个hello的名字是随便起的,只要和下面的mapping中的名字相同就行--> 4 <servlet-name>RedirectServlet</servlet-name> 5 <servlet-class>com.wang.servlet.RedirectServlet</servlet-class> 6 </servlet> 7 <!--一个Servlet对应一个Mapping:映射--> 8 <servlet-mapping> 9 <servlet-name>RedirectServlet</servlet-name> 10 <url-pattern>/red</url-pattern> 11 </servlet-mapping>
重定向和转发的区别
1、相同点:页面都会实现跳转
2、不同点:转发的时候,url地址栏不会发生变化;重定向的时候,url地址栏会发生变化。