java - 修改 JSTL 导入标记以在 JSP 中显示 gzip 压缩文本

标签 java gzip jstl compression

在我的 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

问候

最佳答案

创建一个映射到 /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 不变。

关于java - 修改 JSTL 导入标记以在 JSP 中显示 gzip 压缩文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5622618/

相关文章:

java - 如何在不调用平台调试日志记录的无限流的情况下使用日志级别 FINE?

java - 从 FileChannel (Java NIO) 读取 GZIP 文件

java - 如何解压缩 C# 中的流(如 java 代码片段)?

python - 在 python 中使用特定文本编码打开(可能压缩)文件的通用方法

jsf - 无缘无故调用@PostConstruct方法

java - JSTL计算bean总值

java:连接数组列表中的所有 HashMap

java - 监听按键事件会阻止按键工作

用于在字符串中搜索的 Java 正则表达式

java - struts应用程序中循环如何工作?