为什么我设置字符过滤器后登录页面css失效了??我是想只过滤page页面,这样写的为什么不可以呢?
问题描述:
为什么我设置字符过滤器后登录页面css失效了??我是想只过滤page页面,这样写的为什么不可以呢?
package com.imooc.bookmanager.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class EncodeFilter implements Filter {
private static String encoding;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
//接收web.xml配置文件中的初始参数
encoding = filterConfig.getInitParameter("CharsetEncoding");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//请求的字符编码设置为“UTF-8”
request.setCharacterEncoding(encoding);
//响应的字符编码设置为“UTF-8”(仅将page页面设置)
String uri = request.getRequestURI();
System.out.println(uri);
if (uri.contains("page")) {
response.setContentType("text/html;charset="+encoding);
}
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
相关截图:
正在回答
你好,同学。
我也遇到了同样的问题。
后来在google F12检查时,发现,因为 是则于在过滤器里面 设置 了 contentType="text/html" ,这样,css就被 当成了mine类型 text/html ,而 不是text/css. 后来我把filter 改了 ,如下, 页面正常了。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
HttpServletRequest req=(HttpServletRequest)request;
//String contentType=req.getHeader("Accept");
System.out.println("拦截到:"+req.getRequestURL());
// System.out.println("contentType="+contentType);
req.setCharacterEncoding(encoding);
HttpServletResponse res=(HttpServletResponse)response;
//res.setContentType("contentType=text/html;charset="+encoding);
res.setCharacterEncoding("UTF-8");
// pass the request along the filter chain
chain.doFilter(request, response);
}
同学你好,同学的请求的servlet都是/page 开头,那同学可以在配置这个EncodeFilter时,直接拦截page下的请求就可以,比如:
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>com.imooc.bookmanager.filter.EncodeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/page/*</url-pattern>
</filter-mapping>
如上所示,同学再来试试。
祝学习愉快!
- 参与学习 人
- 提交作业 9410 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星