WebFilter 的url-pattern配置问题

lkj2016 2020-07-25 09:40:59
中文乱码,css文件过滤器过滤
@WebFilter(urlPatterns = "/*")

没加过滤器


为什么加了过滤器我反而乱码了呢,idea的setting中的编码都改成了utf-8

<!-- hello页面html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
你好
</body>
</html>



/**
* 解决全站乱码问题,处理所有的请求
*/
@WebFilter(urlPatterns = "/*")
public class CharchaterFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {

}

@Override
public void doFilter(ServletRequest req, ServletResponse rep, FilterChain filterChain) throws IOException, ServletException {
//将父接口转为子接口
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) rep;
//获取请求方法
String method = request.getMethod();
//解决post请求中文数据乱码问题
if(method.equalsIgnoreCase("post")){
request.setCharacterEncoding("utf-8");
}
//处理响应乱码
response.setContentType("text/html;charset=utf-8");
filterChain.doFilter(request,response);
}

@Override
public void destroy() {

}
}


...全文
2003 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
可以试试:在一个js文件中,添加一行带有中文字符的注释,在浏览器上看看那个js中中文是否也是乱码 可能是其他过滤器有对静态文件进行了处理(你这个问题我已经开始瞎猜了,有正事要做先忙正事)
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
是不是有什么其他的过滤器呢?
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 14 楼 睡不醒的ZWW 的回复:
我按照你写的简单建了个web项目,页面没有乱码
不乱码才是正常情况啊。为什么我的不正常
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
我按照你写的简单建了个web项目,页面没有乱码
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 12 楼 lkj2016 的回复:
引用 11 楼 睡不醒的ZWW 的回复:
奥,想起来一个,你看看在tomcat文件夹 server.xml配置8080端口那个地方 <Connector connectionTimeout="20000" port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" redirectPort="8443"/> 加上URIEncoding="UTF-8" 看看
配置好了还是乱码
jsp经过tomcat渲染后应该和html没区别啊
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 11 楼 睡不醒的ZWW 的回复:
奥,想起来一个,你看看在tomcat文件夹 server.xml配置8080端口那个地方 <Connector connectionTimeout="20000" port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" redirectPort="8443"/> 加上URIEncoding="UTF-8" 看看
配置好了还是乱码
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
奥,想起来一个,你看看在tomcat文件夹 server.xml配置8080端口那个地方 <Connector connectionTimeout="20000" port="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" redirectPort="8443"/> 加上URIEncoding="UTF-8" 看看
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 8 楼 睡不醒的ZWW 的回复:
确实奇怪了,看一下不加过滤器的情况请求头和响应头分别是什么
没加过滤器请求头上没写编码,不过浏览器自动识别是utf-8
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 8 楼 睡不醒的ZWW 的回复:
确实奇怪了,看一下不加过滤器的情况请求头和响应头分别是什么
其实这问题也不是太重要,就是html乱码,把html代码复制到jsp中没乱码,感觉是tomcat问题,又感觉不太像,毕竟没加过滤器他也没乱码。
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
确实奇怪了,看一下不加过滤器的情况请求头和响应头分别是什么
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 6 楼 睡不醒的ZWW 的回复:
你可以把程序打包发出来
之前用文本文件也另存为过了就是utf-8,这个hello也是直接自己新建,不可能会有编码问题按照正常情况
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
引用 5 楼 睡不醒的ZWW的回复:
[quote=引用 4 楼 lkj2016的回复:][quote=引用 3 楼 睡不醒的ZWW 的回复:]感觉应该是文件编码不是utf8的,打开idea , 打开hello.html文件,查看idea右下角字符编码格式 不加过滤器时,估计response header中不是utf8
就是utf-8,调试信息得编码格式怎么看,没找到[/quote] 不是调试,只是单纯的打开html文件,然后idea右下角会显示字符编码[/quote] 你可以把程序打包发出来
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
引用 4 楼 lkj2016的回复:
[quote=引用 3 楼 睡不醒的ZWW 的回复:]感觉应该是文件编码不是utf8的,打开idea , 打开hello.html文件,查看idea右下角字符编码格式 不加过滤器时,估计response header中不是utf8
就是utf-8,调试信息得编码格式怎么看,没找到[/quote] 不是调试,只是单纯的打开html文件,然后idea右下角会显示字符编码
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 3 楼 睡不醒的ZWW 的回复:
感觉应该是文件编码不是utf8的,打开idea , 打开hello.html文件,查看idea右下角字符编码格式 不加过滤器时,估计response header中不是utf8
就是utf-8,调试信息得编码格式怎么看,没找到
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
感觉应该是文件编码不是utf8的,打开idea , 打开hello.html文件,查看idea右下角字符编码格式 不加过滤器时,估计response header中不是utf8
lkj2016 2020-07-26
  • 打赏
  • 举报
回复
引用 1 楼 睡不醒的ZWW 的回复:
点击浏览器控制台上的hello.html,看看请求的response header
编码写的也是utf-8
睡不醒的ZWW 2020-07-26
  • 打赏
  • 举报
回复
点击浏览器控制台上的hello.html,看看请求的response header

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧