【发布时间】:2013-04-15 11:21:34
【问题描述】:
在自定义标记中,我想通过 RequestDispatcher 包含其他内容:
RequestDispatcher rd = request.getRequestDispatcher(url);
rd.include(request, response);
但我不知道响应输出流的状态。我目前正在通过将响应和可用于标记的 JspWriter 包装在另一个实现 HttpServletRequest 的对象中来解决此问题。当内部调用 getWriter() 时,这工作正常。但是,如果处理请求的代码实际上想要获取原始 OutputStream(我也无法安全地在标签内获取),我会得到 IllegalStateException(因为 getOutputStream() 已经被调用)。
现在我还可以创建一个新的 OutputStream 并将其包装在我的请求包装器中,缓冲它直到 include() 返回,然后将写入其中的字节写入 JspWriter。
然而,我的问题是:我应该尝试维护字符编码吗?如:我是否应该“模拟”更多的响应对象,以便我至少可以尝试从我传递到包含和底层输出流的请求包装器中的字符编码集进行转换?这会“足够干净”吗?我应该研究任何实用程序类吗?
【问题讨论】:
标签: java jakarta-ee servlets character-encoding