,发现有两种方法可以实现服务端输出重定向,一种是通过 forward 方法(例如 JSP 中的
xml:namespace prefix = jsp />
) ,另一种则是通过运用 javax.servlet.http.HttpServletResponse 接 口 的 sendRedirect 方 法 ( 例 如 response.sendRedirect(“OtherPage.jsp”);
两种方法有什么区别和联系: 前者是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区(buffer)的内容发送到客户端之前,原 来的不发送,改为发送该页面的内容,如果在
之前有很多输出,前面的输出已使缓冲区满, 将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意. 后者通过修改 HTTP 协议的 HEADER 部分,对浏览器下达重定向指令的,让浏览器对在 location 中指定 的 URL 提出请求,使浏览器显示重定向网页的内容。该方法可以接受绝对的或相对的 URLs。如果传递到 该方法的参数是一个相对的 URL, 那么 Web container 在将它发送到客户端前会把它转换成一个绝对的 URL。 如果地址是相对的,没有一个’/’,
那么 Web container 就认为它是相对于当前的请求 URI 的。
8. 如何区别 servletConfig&;ServletContext? 对于 web 容器来说,ServletContext 接口定义了一个 servlet 环境对象,这个对象定义了 一个在 servlet 引擎上的 servlet 的视图。通过使用这个对象,servlet 可以记录事件,得到资 源并得到来自 servlet 的引擎类。 servlet 容器在启动时会加载 web 应用,并为每个 web 应用创建唯一的 servlet context
对象,可以把 ServletContext 看成是一个 Web 应用的服务器端组件的共享内存,在 ServletContext 中可以存放共享数据,他提供了 4 个读取和设置共享数据的方法。具体见 api 帮助文档。 另外,ServletContext 对象只在 web 应用被关闭的时候才被销毁,不同的 web 应用, ServletContext 各自独立存在。 一个 web 应用由 jsp,servlet,javabean 等 web 组件的集合构成,每一个 web 应用,容器 都会有一个背景对象, javax.servlet.ServletContext 接口就提供了访问这个背景对象的途径。 而 你可以通过一个 servlet 实例的 getServletContext()方法得到该 servlet 运行其中的这个背景对 象,从这个背景对象中你可以访问如下信息资源: (1)初始化参数 (2)存储在背景中的对象 (3)与背景关联的资源 (4)日志 最后针对 ServletContext 我自己的总结是: ServletContext 即 servlet 容器,其内提供的方法可以在同一 web 应用