web.xml lt;filter-mapping>我不想过滤html文件,怎么设置

 我来答
匿名用户
2016-04-24
展开全部
不使用 /* 拦截所有,拦截想拦截的就可以了

类似下面的过滤方式
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.usl</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.view</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/jaxrs/*</url-pattern>
</filter-mapping>
在filter类中判断一下,如果是.html结尾的就不过滤。
HttpServletRequest req = (HttpServletRequest)request;
//由于web.xml中设置Filter过滤全部请求,可以排除不需要过滤的url
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".html")) chain.doFilter(request, response);
HttpServletRequest req = (HttpServletRequest)request;
//由于web.xml中设置Filter过滤全部请求,可以排除不需要过滤的url
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".html")) chain.doFilter(request, response);

chain是以下过滤方法中的chain吗?
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException{

另外, if(reqURI.endsWith(".html")) 到底是 真还是假

HttpServletRequest req = (HttpServletRequest)request;
//由于web.xml中设置Filter过滤全部请求,可以排除不需要过滤的url
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".html")) chain.doFilter(request, response);

chain是以下过滤方法中的chain吗?
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException{

另外, if(reqURI.endsWith(".html")) 到底是 真还是假

就是这个chain,这个判断就是判断你放问的路径是否以.html结尾,你可以试试。

HttpServletRequest req = (HttpServletRequest)request;
//由于web.xml中设置Filter过滤全部请求,可以排除不需要过滤的url
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".html")) chain.doFilter(request, response);

chain是以下过滤方法中的chain吗?
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException{

另外, if(reqURI.endsWith(".html")) 到底是 真还是假

就是这个chain,这个判断就是判断你放问的路径是否以.html结尾,你可以试试。

报错
java.lang.IllegalStateException: getWriter() has already been called for this response
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//把ServletRequest和ServletResponse转换成真正的类型
HttpServletRequest req = (HttpServletRequest)request;
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".do")) chain.doFilter(request, response);
System.out.println(reqURI);
chain.doFilter(request, response);
}

我这里用过的原代码,没错,你看下你别的地方,用到response的地方
//把ServletRequest转换成真正的类型
HttpServletRequest req = (HttpServletRequest)request;
String reqURI = req.getRequestURI();
if(reqURI.endsWith(".html")) chain.doFilter(request, response);
else{
return;
}

这个是我刚才测试了的,只有html结尾的可以过。
青鸟中关村专家
2016-04-24 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
你可以设置想过滤的动作,这样就不过滤html了。比如下面这样:
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.usl</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式