2007-07-17
缓存静态页面的编码问题
关键字: CMS
在CMS系统中一个基本问题是对基于模板的动态页面结果进行缓存,如果模板采用jsp,常常使用response重定向截获输出结果。
常见的代码如下:
但是如果我的jsp中指定了字符编码呢,例如:
如何让生成的静态页面的编码与之一致呢?
查看jsp对应的servlet代码,找到与上述指令对应的一行
于是猜想是否可以response.getContentType来获得编码指定呢
即: String ct = wp.getResponse().getContentType();
但是结果为null。
查javaDoc说明
链接
The
根据此说明上述jsp对应的servlet代码中setContentType的语句被忽略了。
但是我的问题还是没有解决。
将request.getRequestDispatcher(tp).include(request, wp);
改为request.getRequestDispatcher(tp).forward(request, wp);
问题解决了:
写静态文件的代码为
常见的代码如下:
java 代码
- WrapperResponse wp = new WrapperResponse(response);
- request.getRequestDispatcher(tp).include(request, wp);
java 代码
- <%@ page contentType="text/html;charset=utf-8"...
查看jsp对应的servlet代码,找到与上述指令对应的一行
java 代码
- response.setContentType("text/html;charset=utf-8");
即: String ct = wp.getResponse().getContentType();
但是结果为null。
查javaDoc说明
链接
The
ServletResponse object has its path elements and parameters remain unchanged from the caller's. The included servlet cannot change the response status code or set headers; any attempt to make a change is ignored.根据此说明上述jsp对应的servlet代码中setContentType的语句被忽略了。
但是我的问题还是没有解决。
将request.getRequestDispatcher(tp).include(request, wp);
改为request.getRequestDispatcher(tp).forward(request, wp);
问题解决了:
写静态文件的代码为
java 代码
- FileOutputStream fos = new FileOutputStream(to); // 把jsp输出的内容写到xxx.htm
- fos.write(wp.getContent().getBytes(wp.getCharacterEncoding()));
- fos.close();
发表评论
- 浏览: 38727 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最新评论
-
拿什么拯救你,我的ie
深有同感 关于树的问题 我自己写的树 在ie上极限是7000节点 ,主要瓶颈就 ...
-- by careprad -
拿什么拯救你,我的ie
ie8 和 ie6确实不兼容了
-- by kimmking -
拿什么拯救你,我的ie
IE可以用vs。net自带的调试工具 是目前最好用的js调试工具。
-- by kimmking -
拿什么拯救你,我的ie
真是严肃的问题,做了些日子跨浏览器程序开发都要疯了。在ie8下的,在ie6 下怎 ...
-- by trains629 -
拿什么拯救你,我的ie
总结的不错 1、大量的节点,需要ajax,至少也要是延迟加载 2、js调试,. ...
-- by kimmking






评论排行榜