【问题标题】:Modify JSTL import tag to show gzipped text in JSP修改 JSTL 导入标签以在 JSP 中显示压缩后的文本
【发布时间】:2011-04-11 14:17:36
【问题描述】:

在我的 JSP 中,我目前使用 JSTL 来显示驻留在服务器上的简单文本文件的内容,如下所示:

c:import url="http://www.mysite.com/texts/name_id.txt" charEncoding="UTF-8"/>

这些文本文件可能很长而且数量很多,所以我想压缩它们并将压缩版本提供给导入标签。能否给我一些建议,如何修改 JSTL 导入标签,或者创建我自己的标签,在压缩文本文件时达到相同的效果?我怀疑我应该使用 Apache Commons Codec,还是 java.util.zip 够用?

供您参考,JSTL 1.2 导入标记的来源可以在以下位置查看:

http://grepcode.com/file/repo1.maven.org/maven2/javax.servlet/jstl/1.2/org/apache/taglibs/standard/tag/rt/core/ImportTag.java

http://grepcode.com/file/repo1.maven.org/maven2/javax.servlet/jstl/1.2/org/apache/taglibs/standard/tag/common/core/ImportSupport.java#ImportSupport

问候

【问题讨论】:

    标签: java gzip jstl compression


    【解决方案1】:

    创建一个映射到/texts/* 的URL 模式的servlet,并在doGet() 中大致完成以下工作。

    String path = request.getRequestURI().substring(request.getContextPath().length());
    InputStream input = new GzipInputStream(getServletContext().getResourceAsStream(path));
    OutputStream output = response.getOutputStream();
    // Write input to output.
    

    请注意,该 URL 是基于您的问题,您可以通过这种方式保持 JSP 中的 URL 不变。

    【讨论】:

    • 感谢您的回答。我真正需要的是仅在页面内的一个 div 中提供此压缩文本文件的内容。其余内容来自 JSP 和 Struts 框架。这就是为什么我正在考虑使用类似于 JSTL 导入标签的标签。
    • 抱歉,我完全忽略了您正在使用c:import 并且不知何故记住它运行在服务器端,而不是客户端。我确定了答案。
    • 谢谢!如何在我的 JSP 的 div 中包含这个输出流?我应该为此写一个 JSP 标签还是有更好的方法?
    • 以同样的方式使用<c:import>。或者如果它位于同一台服务器上,只需使用<jsp:include>。
    • 嗯,看来我得改一下JSP里的URL了!这是因为包含文本的域与 Web 服务器所在的域不同。因此,这个 servlet 将充当文本文件所在的代理。因此,我必须将 JSTL 导入标记中的 URL 更改为 {local web server}/{servlet path},但这仍然可以。谢谢!
    猜你喜欢
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多