实现方式一:利用配置类
配置类:
@Configuration//让springboot扫描此处,配置文件
public class SystemConfig {
@Bean//相当于之前的xml配置文件注册bean<bean id=''>
public FilterRegistrationBean characterEncodingFilterRegistrationBean(){
//设置字符编码格式,强制转换,并设置成utf-8
CharacterEncodingFilter characterEncodingFilter=new CharacterEncodingFilter();
characterEncodingFilter.setForceEncoding(true);
characterEncodingFilter.setEncoding("utf-8");
//过滤器注册器注册字符过滤器,并配置使用的范围
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(characterEncodingFilter);
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
}
}
使用一个servlet进行测试
//设置请求的路径
@WebServlet(urlPatterns = "/myServlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("welcome to springboot!你好呀世界,springboot欢迎您");
//此句很重要,统一所有浏览器的编码格式
resp.setContentType("text/html;character=utf-8");
resp.getWriter().flush();
resp.getWriter().close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
要注意的是,在配置文件中,要把springboot字符编码过滤 器关闭,才能生效!
#关闭springboot的http字符编码支持,只有关闭了spring字符编码过滤器才生效
server.servlet.encoding.enabled=false
实现方式二:使用springboot总配置文件
application.properties
server.servlet.encoding.force=true
server.servlet.encoding.enabled=true
server.servlet.encoding.charset=utf-8