eclipse SSM项目,前端填写表单往数据表存数据,中文乱码,导致后端显示也乱码

问题描述

eclipse项目,SSM,前端填写表单(form元素),提交所填写的中文“收货地址”,存到数据库,出现中文乱码的问题
(数据表中是乱码的,从数据库读到页面上的也是乱码的)
image.png

 
 
 

可能

1.eclipse项目编码格式(这个估计最影响)

修改eclipse项目的编码格式
 
说明:Windows下eclipse默认编码为GBK。
 
注意:如果你不介意项目中的中文注释全乱码,可以直接修改。如果介意,建议重新建一个项目,然后用原项目的src文件夹和WebContent文件夹覆盖新项目的src和WebContent文件夹
eclipse SSM项目,前端填写表单往数据表存数据,中文乱码,导致后端显示也乱码_第1张图片

eclipse SSM项目,前端填写表单往数据表存数据,中文乱码,导致后端显示也乱码_第2张图片

 
 
 
 

2.修改tomcat的server.xml(这个也很重要)

1)用文本编辑器(如记事本),打开tomcat安装目录下conf文件夹下的server.xml

说明:如果不记得安装路径,可以用everything软件搜索tomcat-

image.png

 
eclipse SSM项目,前端填写表单往数据表存数据,中文乱码,导致后端显示也乱码_第3张图片

2)搜索connectionTimeout="20000",加上URIEncoding="UTF-8",保存文件。

eclipse SSM项目,前端填写表单往数据表存数据,中文乱码,导致后端显示也乱码_第4张图片

 
 
 
 

3.数据库连接时要写上encoding=UTF8

1)如果你是直接在applicationContext.xml中配置数据源,检查下url的值

即下方的
看是否写了characterEncoding=utf8

    
    
        
        
        
        
        
        
        
        
        
        
    

 
 
 
注意(才疏学浅,踩过坑,所以补充一下,轻喷): 不要写成或者
即不要加上useUnicode=true,否则无法启动服务器,无法访问页面,如果报错了,建议翻下console面板中的控制台输出(多往上翻,不要只看最后一块的报错信息)

 
 
 
我就因为多加了useUnicode=true,遇到下面这2个错误
BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext

Server Tomcat v9.0 Server at localhost failed to start.

后来往上翻才发现,它已经提示了我applicationContext.xml中连接数据库的url,useUnicode需要以;为分隔符(其实就是写错了,不应该写,导致服务器无法启动

 
 
 
 
 
2)如果你是加载配置文件,则修改配置文件中url的编码

具体参考此文:SSM解决中文存入数据库乱码问题(记录自己的问题)
 
 
 
 

4.jsp视图加上UTF8(在新建jsp文件时就要注意)

一般在新建jsp时注意改过来就行(一般是ISO-8859-1

文件顶部的pageEncoding设置

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 
 
 
 

5.项目的web.xml写上一些配置代码(影响不是很大)

注意:filter中的filter-name的值与filter-mapping中filter-name的值一致


  
      characterEncodingFilter
      org.springframework.web.filter.CharacterEncodingFilter
      
          encoding
          UTF-8
      
      
          forceEncoding
          true
      
  
  
      characterEncodingFilter
      /*
  

 
 
 
 

参考

解决springmvc接受前端传来的中文出现中文乱码情况

SSM解决中文存入数据库乱码问题(记录自己的问题)

IDEA向数据库中插入中文数据乱码问题永久解决方法

BeanFactory not initialized or already closed - call 'refresh' before access ... 的解决方法

你可能感兴趣的:(eclipsessm)