Spring构建Web应用部署至Tomcat开发过程中的数据编码问题

  通过Maven构建整个工程,利用Spring进行web应用开发,数据库为MySQL,前端使用Thymeleaf模板,应用部署至Tomcat上。为了在HTML页面中正常显示从数据库读取的中文数据,对整个工程进行了如下的编码设置(都设置为UTF-8):

  • Tomcat服务器的编码设置:在Tomcat安装路径下的conf/server.xml中进行如下设置
<!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
  • Spring工程WEB-INF/web.xml中进行编码filter的设置
 <filter>  
        <filter-name>characterEncodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
        <init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
</filter>  
<filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
</filter-mapping>  
  • 对html页面的编码格式进行设置(同时要注意设置html文件本身的存储编码格式为utf-8)
<head>
    <meta charset=" UTF-8"></meta>
</head>
  • 由于前端使用了Thymeleaf模板,所以在配置Thymeleaf的视图解析器和模板解析器时需要设置它们的编码格式为utf-8
@Bean
    public ViewResolver viewResolver(                  //Thymeleaf 视图解析器
            SpringTemplateEngine templateEngine) {
        ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
        viewResolver.setTemplateEngine(templateEngine);
        viewResolver.setCharacterEncoding("UTF-8");
        return viewResolver;
    }

@Bean
    public TemplateResolver templateResolver() {            // 模板解析
        TemplateResolver templateResolver =  new ServletContextTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/views/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML5");
        templateResolver.setCharacterEncoding("UTF-8");
        return templateResolver;
    }
  • 同时,MySQL中所使用的数据库与数据表的编码也要设置成UTF-8。此外在数据源的配置类中,也需要在数据源的url中加入参数characterEncoding=utf-8,如下:

    /* 配置数据源 */
    @Bean
    public BasicDataSource dataSource() {
        BasicDataSource ds = new BasicDataSource();
        ds.setDriverClassName("com.mysql.jdbc.Driver");
        ds.setUrl("jdbc:mysql://localhost:3306/myblog?characterEncoding=utf-8");
        ds.setUsername("root");
        ds.setPassword("admin123");
        ds.setInitialSize(5);
        return ds;
    }

      这样,将工程部署至Tomcat上后,展现的HTML页面上的中文数据就可以正常显示了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值