首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Servlet请求中转

2012-10-11 
Servlet请求转发? ? 请求转发是Web组件之间协作的一种方式,多个Web组件共享一个ServletResponse和ServletR

Servlet请求转发

? ? 请求转发是Web组件之间协作的一种方式,多个Web组件共享一个ServletResponse和ServletRequest对象。

? ? 1. 请求转发的实现

? ? Servlet的请求转发是通过RequestDispatcher类来实现的,我们可以通过以下方式获取RequestDispatcher对象。

ServletContext context = this.getServletContext();RequestDispatcher dispatcher = context.getRequestDispatcher("/test"); // 绝对路径dispatcher.forward(request, response);request.getRequestDispatcher("test"); // 相对路径dispatcher.forward(request, response);

? ? 2. forward方法处理流程

? ? 当调用forward方法后,会先清空用于存放响应正文的数据缓冲区,也就是说你在源组件中,可能已经写了一些数据到缓冲区了(如下代码),这时你写的数据都会被清理掉。

PrintWriter out = response.getWriter();out.println("hello");ServletContext context = this.getServletContext();RequestDispatcher dispatcher = context.getRequestDispatcher("/test"); // 绝对路径dispatcher.forward(request, response);

? ? 这时你写的输出语句并不会输出到用户端,在调用forward方法时,直接被清理掉了。

? ? 3. 注意点

? ? 如果你尝试在forward方法前向客户提交响应结果,这样是会报IllegalStateException的。

response.flushBuffer();  //会报异常out.close();        //会报异常
?

?

?

?

?

?

?

热点排行