被Servlet重定向的JSP如何获取对应的request与response对象?
关于请求转发中JSP获取request/response对象的说明
首先要明确:你代码里用的是请求转发(forward),不是HTTP重定向(redirect)——这俩是完全不同的机制,你提到的“重定向”其实是请求转发,先理清这个概念。
当Servlet调用request.getRequestDispatcher("login.jsp").forward(request, response)时,整个过程是在同一个HTTP请求上下文里完成的:
- Web容器(比如Tomcat)会把当前Servlet正在处理的
HttpServletRequest和HttpServletResponse对象,直接传递给目标JSP。 - JSP本质上是被容器编译成Servlet的,编译后的JSP Servlet的
service()方法,参数就是容器传入的这两个对象,和原Servlet里的是同一个实例。
简单说,请求转发相当于“把当前请求的处理接力棒传给JSP”,整个请求的上下文(包括request里的属性、会话信息等)都不会丢失,JSP拿到的就是原Servlet用过的那一套request和response对象。
如果是真正的HTTP重定向(response.sendRedirect()),那才会发起新的HTTP请求,此时JSP拿到的是全新的request/response对象,和原Servlet的无关。
内容的提问来源于stack exchange,提问作者Omin
相关产品推荐
相关产品推荐

