Spring开机拦截器,拦截返回中文乱码的问题
Spring boot interceptor, intercept the problem of returning Chinese garbled characters
Spring引导拦截器,拦截returning中文乱码问题
代码结构如图
代码如下
演示过滤器
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";
}
}
Spring申请
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
项目启动,访问http://localhost:8080/demo
实际return:??
预计return:您好
我在application.properties中添加了以下配置:
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
浏览器访问,return:
邮递员访问并 return 正确的结果。
请问,如何完美解决这个问题,让浏览器return正确显示中文
已解决,添加如下代码解决问题:
response.setContentType("text/html;charset=UTF-8");
Spring引导拦截器,拦截returning中文乱码问题
代码结构如图
代码如下
演示过滤器
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";
}
}
Spring申请
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
项目启动,访问http://localhost:8080/demo
实际return:??
预计return:您好
我在application.properties中添加了以下配置:
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
浏览器访问,return:
邮递员访问并 return 正确的结果。
请问,如何完美解决这个问题,让浏览器return正确显示中文
已解决,添加如下代码解决问题:
response.setContentType("text/html;charset=UTF-8");