response.sendRedirect 与 request.getRequestDispatcher(url).forward(request,response)区别
服务器端进行转向的4种方法:
1. ServletContext的getRequestDispatcher()
2. ServletContext的getNamedDispatcher()
3. ServletRequest的getRequestDispatcher()
4. ServletResponse的sendRedirect()进行转向。
1.2.3 功能大于等于 forward() 重导功能
4. sendRedirect()
使用forward方法,因为这些这样比较高效。只有在forward方法不能使用时(比如要转向到一个非本web应用),再使用ServletResponse的sendRedirect()方法。
<jsp:fordward>与 sendRedirect 方法的比较
虽然 <jsp:fordward>与 sendRedirect 方法,都可以将浏览器浏览的网页,重导至另一个网页,但是两者在原理上是不太相同。
a. <jsp:fordward> : 动作是利用伺服端,将资料输出至缓冲区的机制,在前一个网页尚未输出到客户端前,取消资料的输出,然后输出另一个网页的资料,达到重导浏览器的效果。
优点: 两网页间可以分享 request 对象内的变量。
b. sendRedirect : 动作是透过 HTTP 协议的 Header , 对浏览器下达重导指令,因此,不牵涉到服务器端缓冲区的问题。
不过由于 sendRedirect 方法作用于客户端,所以重导前后网页无法分享存在于 request 对象内的变量。
Solution: response.sendRedirect(“test.jsp?key=view”)
今天才搞清楚这个原理,ServletResponse就是在客户端响应返回数据,在这里ServletResponse不保留,request.setAttribute()的属性,如果用response.sendRedirect重导话,一些数据最好绑定到session里,数据一多,服务器吃不消,建议用ServletRequest来重导。
分享到:
相关推荐
Servlet 线程安全问题 Servlet 线程安全问题是指在使用 Servlet 编程时,如果不注意多线程安全性问题,可能会导致难以发现的错误。Servlet/JSP 技术由于其多线程运行而具有很高的执行效率,但这也意味着需要非常...
当你遇到“找不到javax.servlet.*”这样的错误时,通常是因为你的项目缺少了这个库,所以需要引入`javax.servlet.jar`来解决问题。 1. **Java Servlet简介** Java Servlet是Java平台上的一个标准,用于扩展服务器...
本教程将详述Servlet的基本概念以及如何在IntelliJ IDEA 2018中导入所需的jar包。 Servlet的核心功能是扩展Web服务器的能力,使得开发者能够创建动态、交互式的Web应用。Servlet通过实现 javax.servlet.Servlet 或 ...
知识点:Servlet输出JS乱码问题解析与解决方案 一、Servlet与JS输出背景 Servlet是Java Web应用中的核心组件,主要用于处理客户端发送的HTTP请求,并生成响应。在Web开发中,Servlet经常被用来处理业务逻辑,然后...
Servlet是一个Java类,遵循javax.servlet.Servlet接口,它允许开发者扩展服务器的功能。当用户向Web服务器发送一个请求时,Servlet会接收到这个请求,处理数据,然后返回响应。Servlet的主要生命周期方法包括:`init...
这对于优化性能、调试问题以及自定义Servlet行为都非常有帮助。 在实际开发中,我们通常不会直接实现`Servlet`接口,而是继承`HttpServlet`类,因为它已经为我们提供了一些基础的HTTP方法实现。例如,`doGet()`和`...
刚刚接触java时做的日志管理系统,做的很简单,适合初学着 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet日志管理系统 servlet servlet servlet servlet servlet...
解决找不到javax.servlet.*等问题servlet jar包,放在项目里直接Build Path即可使用。
Servlet是Java平台上的一个核心组件,它允许开发者创建动态web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端程序如何与HTTP协议交互以及如何处理来自web客户端的请求并返回响应。`servlet.jar...
5. javax.servlet.RequestDispatcher:用于转发请求和包含资源,支持请求的定向。 6. javax.servlet.ServletRequest和ServletResponse:分别表示HTTP请求和响应,提供了获取请求数据和设置响应内容的方法。 此外,...
在开发过程中,理解Servlet API和源码对于提高代码质量、优化性能以及解决问题都至关重要。通过对Servlet API的深入学习,开发者可以更好地掌握Web应用程序的架构设计和实现,从而提升开发效率和应用性能。
使用完这些资源后,应及时关闭或释放,以避免资源泄露和性能问题。合理管理资源对于保持服务器稳定运行至关重要。 #### 十、结论 Servlet作为Java Web开发的基础技术之一,提供了强大的功能来处理HTTP请求和生成...
Servlet API还提供了Filter的概念,允许开发者在请求到达Servlet之前和响应离开Servlet之后对其进行拦截和处理。`javax.servlet.Filter`接口定义了`doFilter()`方法,这使得我们可以实现如认证、日志记录、数据过滤...
Servlet是Java平台上的一个核心技术,用于构建动态Web应用程序。Servlet API是Java Servlet规范的一部分,它定义了服务器端Java程序如何与HTTP协议交互,以及如何处理来自Web客户端的请求并生成响应。这份"Servlet...
<servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservice </servlet...
### Servlet基础知识及应用详解 #### 一、Servlet概述 Servlet是一种服务器端的Java技术,用于扩展应用程序的功能。它主要用于Web应用程序开发,可以处理客户端发送到Web服务器的各种请求,并且能够生成动态网页。...
Files contained in javax.servlet.jar: META-INF/MANIFEST.MF javax/servlet/http/LocalStrings.properties javax.servlet.http.HttpSessionBindingListener.class javax.servlet....
容器负责Servlet的加载、初始化、服务和销毁过程,以及线程安全问题。开发者无需关心这些细节,只需关注业务逻辑。 四、Servlet配置 在Web应用的`web.xml`配置文件中,可以声明Servlet,指定Servlet类、URL映射、...
《深入理解Jakarta Servlet API 4.0源码》 Servlet技术是Java Web开发的核心,它为Web应用程序提供了服务器端的编程接口。Jakarta Servlet API 4.0是Servlet规范的最新版本,它包含了对HTTP协议处理、生命周期管理...