Spring构建Web应用部署至Tomcat开发过程中的数据编码问题
2017-11-30 15:19
591 查看
通过Maven构建整个工程,利用Spring进行web应用开发,数据库为MySQL,前端使用Thymeleaf模板,应用部署至Tomcat上。为了在HTML页面中正常显示从数据库读取的中文数据,对整个工程进行了如下的编码设置(都设置为UTF-8):
Tomcat服务器的编码设置:在Tomcat安装路径下的conf/server.xml中进行如下设置
Spring工程WEB-INF/web.xml中进行编码filter的设置
对html页面的编码格式进行设置(同时要注意设置html文件本身的存储编码格式为utf-8)
由于前端使用了Thymeleaf模板,所以在配置Thymeleaf的视图解析器和模板解析器时需要设置它们的编码格式为utf-8
同时,MySQL中所使用的数据库与数据表的编码也要设置成UTF-8。此外在数据源的配置类中,也需要在数据源的url中加入参数characterEncoding=utf-8,如下:
这样,将工程部署至Tomcat上后,展现的HTML页面上的中文数据就可以正常显示了。
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页面上的中文数据就可以正常显示了。
相关文章推荐
- Dubbo基础篇_05_构建Dubbo服务消费者Web应用的war包并在Tomcat中部署
- 移动应用web适配开发过程中遇到的问题记录
- Java开发环境配置(5)--Web 服务器--Tomcat--安装过程遇到的问题
- 跟我学习dubbo-构建Dubbo服务消费者Web应用的war包并在Tomcat中部署(6)
- tomcat下的web应用部署到weblogic上乱码问题
- 跟我学习dubbo-构建Dubbo服务消费者Web应用的war包并在Tomcat中部署(6)
- 解决tomcat在页面传递过程中改变数据编码格式的问题
- [bigdata-046] eclipse+spring开发web然后部署到tomcat
- spring boot 用war包部署到tomcat下详细教程(解决缺少web.xml报错的问题)
- SpringBoot应用部署到Tomcat中无法启动问题
- web应用从开发环境自动部署至tomcat的方法
- Tomcat 部署Web 应用的过程
- myeclipse用struts2框架编写web应用部署到tomcat出现问题
- CentOS6.8下Jenkins+maven+tomcat+git+shell自动构建、部署web应用环境的搭建
- 开发过程使用Tomcat Maven插件持续快捷部署Web项目
- 我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1 等,如何输出一个某种编码的字符串?
- WEB应用 信息管理系统 数据分析展示系统 OA办公工作流 快速构建与开发平台
- 使用Spring开发web应用,读取外部资源文件问题
- 【开发工具IDE】eclipse的web项目的tomcat安装部署问题
- 分布式架构学习之:006--构建Dubbo服务消费者Web应用的war包并在Tomcat中部署