java - spring boot拦截器,拦截返回中文乱码问题
问题描述
spring boot拦截器,拦截返回中文乱码问题。
代码结构如图
代码显示如下
演示过滤器
public class demoFilter extends GenericFilterBean {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
response.getWriter().write("您好");
return;
}
}
过滤器配置
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean jwtFilter() {
final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new demoFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
控制器
@RestController
public class Demo {
@RequestMapping(value = "demo", method = RequestMethod.GET)
public String getStr(HttpServletRequest request, HttpServletResponse response) {
return "demo";
}
}
SpringApplication
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
项目启动,访问http://localhost:8080/demo
实际回报:???
预期回报:您好
我将以下配置添加到 application.properties:
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
浏览器访问,返回:
邮递员访问并返回正确的结果。
请问,如何完美解决这个问题,让浏览器返回正确的中文。
解决方案
推荐阅读
- c - 找到时间和空间复杂度
- vb.net - vb.net:在 RichTextBox 中显示 IP、子网、网关、DNS,并且仅在标签中显示一个?
- android - 没有在通知点击时启动应用程序?Flutter 本地通知
- python - 我在 Python 中使用 kivy 时收到此错误
- c++ - 我如何编写一个使用递归将二进制字符串转换为十进制整数的程序来进行转换
- javascript - React js react-responsive-carousel未使用webpack加载
- linux - 复制文件夹(仅复制 python 文件,但不复制其余文件)
- javascript - JavaScript 读取网络响应而不是错误代码
- couchbase - Couchbase n1ql 查询每周范围
- angular - Angular Reactive Form Control 数字和字母模式验证器验证不起作用