我试图实现JavaServlet过滤器,它修改html响应。
doFilter
我的过滤器类的方法看起来像这样:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (filterConfig == null) {
return;
}
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String contentType = res.getContentType();
if (contentType != null && contentType.contains("text/html")) {
chain.doFilter(req, res);
// do some modification
}
}
对于每一个回复,我都试图弄清楚它是否是HTML。如果是这种情况,我会做一些修改,但我有以下问题:在请求jsf文件时,res.getContentType()
返回null
(res.getHeader(“Content Type”)
也返回null
)。在我的浏览器开发工具中,我可以看到“Content Type”标题的值为“text/html”;charset=UTF-8',但在这种情况下,res.getContentType()
为什么返回null
?
有没有其他方法来检测过滤器中的超文本标记语言响应?
编辑我添加了链。doFilter(req,res)
if子句中的调用。
由于JSF使用servlet,因此只能检查它在链之后生成的内容(您似乎希望它在过滤器之前执行,但事实并非如此)。这样做的原因是,完整的过滤器链总是在servlet之前执行,总是,请参见
这意味着在你的doFilter(…)
只有在
链之后访问响应时,才能访问响应。doFilter(…)
在您的代码中,如第一个链接所示。
因此,除非过滤器创建内容(它不应该创建iirc,至少不是真正的内容),否则响应上的内容类型在
链之前将始终为空。调用doFilter()
(除非过滤器创建了身份验证/授权失败响应)。
实际上你的代码
String a=null;
if (a != null || or a.equals("b") {
doThing();
}
因此,你似乎有一个http://www.xyproblem.info所以你必须重新考虑你的设计。(你想实现什么目标)
我一直试图仅使用文件内容检测MIME类型,使用Apache Tika Core和Apache Tika Parser1.23 jars。下面是用于相同内容的代码: Tika无法检测扩展名为。tmp(text/plain file)和iso-8859-1字符集的文件的内容类型,内容如下: èé 通过以下方式正确检测具有相同配置和以下内容的文件: 000000000000000000000000000
让我们创建一个Potion文件作为插件的测试样本。 :::text factorial = (n): total = 1 n to 1 (i): total *= i. total. 10 times (i): i string print '! is: ' print factorial (i) string print
问题内容: 我正在使用Selenium 2 Java API与网页进行交互。我的问题是:如何检测链接目标的内容类型? 基本上,这是背景:单击链接之前,我想确保响应是HTML文件。如果没有,我需要以其他方式处理它。因此,假设有一个PDF文件的下载链接。应用程序应直接读取该URL的内容,而不是在浏览器中打开它。 我们的目标是拥有一个能够自动知道当前位置是HTML,PDF,XML或其他类型的应用程序,以
我使用spring JAX-RS将文件作为多部分表单数据上传。我有inputstream对象作为参数。当我将这个输入流复制到磁盘时,我得到了我的文本文件。 但是当我试图检测这个输入流的内容类型时,我得到的内容类型是application/octet-stream。 作为一个测试,我还用tika desktop测试了相同的文件,并获得了正确的内容类型。
MIME标准 多用途Internet邮件扩展(MIME)标准是用于标识文档类型的最佳可用标准。 这些标准的知识有助于浏览器在内部交互过程中。 每当浏览器遇到媒体文件时,它就会选择一个可用的兼容软件来显示其内容。 如果它没有任何合适的应用程序来运行特定的媒体文件,它建议用户为它获取合适的插件软件。 Tika中的类型检测 Tika支持MIME中提供的所有Internet媒体文档类型。 每当文件通过Ti