新聞中心
在使用Spring+SpringMVC+MyBatis(S)框架進(jìn)行開發(fā)時(shí),經(jīng)常會(huì)遇到讀取數(shù)據(jù)庫出現(xiàn)亂碼的情況。這是因?yàn)樵跀?shù)據(jù)庫存儲(chǔ)數(shù)據(jù)時(shí),如果字符集和應(yīng)用程序不一致,就會(huì)引發(fā)亂碼問題。本文將從以下幾個(gè)方面介紹。

青山ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
一、檢查數(shù)據(jù)庫字符集
首先需要檢查數(shù)據(jù)庫的字符集,確保數(shù)據(jù)庫的字符集和應(yīng)用程序的字符集一致。一般來說,UTF-8是最常用的字符集,建議將數(shù)據(jù)庫的字符集設(shè)置為UTF-8。可以通過執(zhí)行以下SQL語句來查看數(shù)據(jù)庫的字符集:
“`
show variables like ‘%character%’;
“`
如果發(fā)現(xiàn)數(shù)據(jù)庫的字符集不是UTF-8,可以通過以下SQL語句來修改:
“`
alter database [database_name] character set utf8;
“`
二、配置MyBatis的字符集
MyBatis是一個(gè)持久層框架,在讀取數(shù)據(jù)庫的時(shí)候也需要將字符集設(shè)置為UTF-8??梢酝ㄟ^在MyBatis的配置文件中添加以下代碼來設(shè)置字符集:
“`
“`
這樣設(shè)置之后,在MyBatis讀取數(shù)據(jù)時(shí),就會(huì)將字符集設(shè)置為UTF-8。
三、在數(shù)據(jù)庫連接URL上添加字符集信息
除了在MyBatis的配置文件中設(shè)置字符集外,還可以在連接URL上添加字符集信息。可以將連接URL寫成以下形式:
“`
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true
“`
其中的useUnicode、characterEncoding和autoReconnect都是設(shè)置連接屬性的參數(shù)。設(shè)置useUnicode=true和characterEncoding=utf-8可以將字符集設(shè)置為UTF-8,設(shè)置autoReconnect=true可以自動(dòng)重新連接。
四、在Spring配置文件中設(shè)置字符集
Spring框架可以讓我們更加方便地管理和配置應(yīng)用程序,在讀取數(shù)據(jù)庫時(shí),也可以將字符集設(shè)置為UTF-8??梢栽赟pring的配置文件中通過以下方式來設(shè)置字符集:
“`
“`
在url中添加了useUnicode=true&characterEncoding=UTF-8,就可以將字符集設(shè)置為UTF-8了。
五、設(shè)置Tomcat的字符集
除了在應(yīng)用程序中設(shè)置字符集外,還可以在Tomcat中設(shè)置字符集??梢詫omcat的server.xml配置文件中的Connector標(biāo)簽中的URIEncoding屬性設(shè)置為UTF-8,表示使用UTF-8字符集編碼URI。這樣就可以在Tomcat中設(shè)置字符集了。
“`
connectionTimeout=”20230″
redirectPort=”8443″ URIEncoding=”UTF-8″/>
“`
在使用S框架進(jìn)行開發(fā)時(shí),遇到讀取數(shù)據(jù)庫出現(xiàn)亂碼的情況,可以從數(shù)據(jù)庫、MyBatis、連接URL、Spring和Tomcat這五個(gè)方面來解決問題。通過設(shè)置字符集,可以讓應(yīng)用程序和數(shù)據(jù)庫的字符集保持一致,避免出現(xiàn)亂碼問題。同時(shí),也可以提高應(yīng)用程序的性能和可維護(hù)性,讓開發(fā)更加簡單方便。
相關(guān)問題拓展閱讀:
- s框架是什么意思
- s框架畢業(yè)答辯常見問題有哪些, 例如s如何實(shí)現(xiàn)數(shù)據(jù)庫的連接?
- S框架下怎么把數(shù)據(jù)庫數(shù)據(jù)動(dòng)態(tài)顯示到前端頁面?
s框架是什么意思
s框架的意思為:spring MVC ,spring和mybatis框架的整合,是標(biāo)準(zhǔn)的MVC模式。
S框架的使用方法:
先寫實(shí)體類entity,定義對象的祥絕屬性,(可以參照數(shù)據(jù)庫中表的字段來設(shè)置,數(shù)謹(jǐn)宴姿據(jù)庫的設(shè)計(jì)應(yīng)該在所有編碼開始之祥段前)。
寫Mapper.xml(Mybatis),其中定義你的功能,對應(yīng)要對數(shù)據(jù)庫進(jìn)行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
寫Mapper.java,將Mapper.xml中的操作按照id映射成Java函數(shù)。
寫Service.java,為控制層提供服務(wù),接受控制層的參數(shù),完成相應(yīng)的功能,并返回給控制層。
寫Controller.java,連接頁面請求和服務(wù)層,獲取頁面請求的參數(shù),通過自動(dòng)裝配,映射不同的URL到相應(yīng)的處理函數(shù),并獲取參數(shù),對參數(shù)進(jìn)行處理,之后傳給服務(wù)層。
S框架的原理:
SpringMVC:
1.客戶端發(fā)送請求到DispacherServlet(分發(fā)器)。
2.由DispacherServlet控制器查詢HanderMapping,找到處理請求的Controller。
3.Controller調(diào)用業(yè)務(wù)邏輯處理后,返回ModelAndView。
4.DispacherSerclet查詢視圖解析器,找到ModelAndView指定的視圖。
5.視圖負(fù)責(zé)將結(jié)果顯示到客戶端。
我們平時(shí)開發(fā)接觸最多的估計(jì)就是IOC容器,它可以裝載bean(也就是我們Java中的類,當(dāng)然也包括service dao里面的),有了這個(gè)機(jī)制,我們就不用在每次使用這個(gè)類的時(shí)候?yàn)樗跏蓟?,很少看到關(guān)鍵字new。另外spring的aop,事務(wù)管理等等都是我們經(jīng)常用到的。
s框架畢業(yè)答辯常見問題有哪些, 例如s如何實(shí)現(xiàn)數(shù)據(jù)庫的連接?
一、Spring常見問題
1、Spring 在s中起什么作用?
Spring:輕量級(jí)框架
作用:Bean工廠,用來管理Bean的
生命周期
和框架集成。
兩大核心:
IOC/DI(控制反轉(zhuǎn)/依賴注入) :把dao依賴注入到service層,service層反轉(zhuǎn)給action層,Spring頂層容器為BeanFactory
AOP:面向切面編程
2、Spring的事務(wù)?
編程式事務(wù)管理:編程方式管理事務(wù),極大靈活性,難維護(hù)。
聲明式事務(wù)管理:可以將業(yè)務(wù)代碼和事務(wù)管理分離,用注解和xml配置來管理事務(wù)。
3、IOC 在項(xiàng)目中的作用?
作用:Ioc解決對象之間的依賴問題,把所有Bean的依賴關(guān)系通過
配置文件
或注解關(guān)聯(lián)起來,降低了
耦合度
。
4、Spring的配置文件中的內(nèi)容?
開啟事務(wù)注解驅(qū)動(dòng)
事務(wù)管理器
開啟注解功能,并配置掃描包
配置數(shù)據(jù)庫
配置SQL會(huì)話工廠,別名,映射文件
不用編寫Dao層的實(shí)現(xiàn)類
5、Spring下的注解?
注冊
@Controller @Service @Component
注入
@Autowired
@Resource
請求地址
@RequestMapping
返回具體
數(shù)據(jù)類型
而非跳轉(zhuǎn)
@ResponseBody
6、Spring DI 的三種方式?
構(gòu)造器注入:通過
構(gòu)造方法
初始化
setter方法注入:通過setter方法初始化
接口注入
7、Spring主要使用了什么模式?
工廠模式
:每個(gè)Bean的創(chuàng)建通過方法
單例模式
:默認(rèn)的每個(gè)Bean的作用域都是單例
代理模式
:關(guān)于Aop的實(shí)現(xiàn)通過代理模式
8、IOC,AOP的實(shí)現(xiàn)原理?
IOC:通過反射機(jī)制生成對象注入
AOP:動(dòng)態(tài)代理
二、SpringMvc常見問題
1、SpringMvc 的控制器是不是單例模式,如果是,有什么問題,怎么解決?
問題:單例模式,在
多線程
訪問時(shí)有
線程安全
問題
解決方法:不要用同步,在控制器里面不能寫字段
2、SpringMvc 中控制器的注解?
@Controller:該注解表明該類扮演控制器的角色薯轎
3、@RequestMapping 注解用在類上的作用?
作用:用來映射一個(gè)URL到一個(gè)類或者一個(gè)特定的處理方法上
4、前臺(tái)多個(gè)參數(shù),這些參數(shù)都是一個(gè)對象,快速得到對象?
方法:直接在方法中聲明這個(gè)對象,SpringMvc就自動(dòng)把屬性賦值到這個(gè)對象里面
5、SpringMvc中函數(shù)的
返回值
?
String,ModelAndView,List,Set 等
一般String,Ajax請求,返回一個(gè)List
6、SpringMvc中的轉(zhuǎn)發(fā)和重定向?
轉(zhuǎn)發(fā): return:”hello”
重定向 :return:”redirect:hello.jsp”
7、SpringMvc和Ajax之間的相互調(diào)用?
通過JackSon框架把java里面對象直接轉(zhuǎn)換成js可識(shí)別的json對象,具體步驟如下:
1、加入JackSon.jar
2、在配置文件中配置json的映射
3、在接受Ajax方法里面直接返回Object,list等,方法前面需要加上注解明廳@ResponseBody
8、SpringMvc的工作流程圖?
請點(diǎn)擊輸入圖片描述
1、DispatcherServlet前端控制器接收發(fā)過來的請求,交給HandlerMapping處理器映射器
2、HandlerMapping處理器映射器,根據(jù)請求路徑找到相應(yīng)的HandlerAdapter處理器
適配器
(處理器適配器就是那些攔截器或Controller)
3、HandlerAdapter處理器適配器,處理一些功能請求,返回一個(gè)ModelAndView對象(包括模型數(shù)據(jù)數(shù)槐肆、邏輯視圖名)
4、ViewResolver視圖解析器,先根據(jù)ModelAndView中設(shè)置的View解析具體視圖
5、然后再將Model模型中的數(shù)據(jù)渲染到View上
9、Struts2 和 SpringMvc的區(qū)別?
入口不同:
Struts2:filter過濾器
SpringMvc:一個(gè)Servlet即前端控制器
開發(fā)方式不同:
Struts2:基于類開發(fā),傳遞參數(shù)通過類的屬性,只能設(shè)置為多例
SpringMvc:基于方法開發(fā)(一個(gè)url對應(yīng)一個(gè)方法),請求參數(shù)傳遞到方法形參,可以為單例也可以為多例(建議單例)
請求方式不同:
Struts2:值棧村塾請求和響應(yīng)的數(shù)據(jù),通過OGNL存取數(shù)據(jù)
SpringMvc:通過參數(shù)解析器將request請求內(nèi)容解析,給方法形參賦值,將數(shù)據(jù)和視圖封裝成ModelAndView對象,最后又將ModelAndView中的模型數(shù)據(jù)通過request域傳輸?shù)巾撁?,jsp視圖解析器默認(rèn)使用的是jstl。
三、Mybatis常見問題
1、Ibatis和Mybatis?
Ibatis:2023年,apache的Ibatis框架停止更新,并移交給了google團(tuán)隊(duì),同時(shí)更名為MyBatis。從2023年后Ibatis在沒更新過,徹底變成了一個(gè)孤兒框架。一個(gè)沒人維護(hù)的框架注定被mybatis拍在沙灘上。
Mybatis:Ibatis的升級(jí)版本。
2、什么是Mybatis的接口綁定,有什么好處?
Mybatis實(shí)現(xiàn)了DAO接口與xml映射文件的綁定,自動(dòng)為我們生成接口的具體實(shí)現(xiàn),使用起來變得更加省事和方便。
3、什么情況用注解,什么情況用xml綁定?
注解使用情況:Sql語句簡單時(shí)
xml綁定使用情況:xml綁定 (@RequestMap用來綁定xml文件)
4、Mybatis在核心處理類叫什么?
SqlSession
5、查詢表名和返回實(shí)體Bean對象不一致,如何處理?
映射鍵值對即可
column:數(shù)據(jù)庫中表的列名
property:實(shí)體Bean中的屬性名
6、Mybatis的好處?
把Sql語句從Java中獨(dú)立出來。
封裝了底層的JDBC,API的調(diào)用,并且能夠?qū)⒔Y(jié)果集自動(dòng)轉(zhuǎn)換成JavaBean對象,簡化了Java數(shù)據(jù)庫編程的重復(fù)工作。
自己編寫Sql語句,更加的靈活。
入?yún)o需用對象封裝(或者map封裝),使用@Param注解
7、Mybatis配置一對多?
property:屬性名
column:共同列
ofType:中元素的類型
select:要連接的查詢
8、Mybatis配置一對一?
property:屬性名
select:要連接的查詢
column:共同列
javaType:中元素的類型
9 、${} 和 #{}的區(qū)別?
${}:預(yù)編譯處理,把${}直接替換成變量的值,不做任何轉(zhuǎn)換。
#{}:
字符串
替換,sql中的#{}替換成?,有效的防止Sql語句注入。
總結(jié):一般用#{}來進(jìn)行列的代替
10、獲取上一次自動(dòng)生成的
主鍵
值?
select last _insert_id()
11、Mybatis如何分頁,分頁原理?
RowBounds對象分頁
在Sql內(nèi)直接書寫,帶有物理分頁
12、Mybatis工作原理?
請點(diǎn)擊輸入圖片描述
原理:
通過SqlSessionFactoryBuilder從mybatis-config.xml配置文件中構(gòu)建出SqlSessionFactory。
SqlSessionFactory開啟一個(gè)SqlSession,通過SqlSession實(shí)例獲得Mapper對象并且運(yùn)行Mapper映射的Sql語句。
完成數(shù)據(jù)庫的CRUD操作和事務(wù)提交,關(guān)閉SqlSession。
S框架下怎么把數(shù)據(jù)庫數(shù)據(jù)動(dòng)態(tài)顯示到前端頁面?
總結(jié)一下你的問題,可以分為以下幾點(diǎn)。
1、怎么使數(shù)據(jù)庫中的數(shù)據(jù)動(dòng)態(tài)的在前端顯示?
可以通過ajax的局部刷新來實(shí)現(xiàn)前端頁面的動(dòng)態(tài)變化顯示,比如選擇不同的條件,頁面相應(yīng)的顯示不同的結(jié)果。
2、怎么查詢數(shù)據(jù)庫?
因?yàn)槟闶褂昧藄框架,所以你可以使用mybatis的mapper功能來進(jìn)行查詢,而在Mapper里面寫好正確的SQL查詢語句就可以了,對于多個(gè)數(shù)據(jù)庫中的表顯示在前端一個(gè)表格里神慧面的情況,可以通過表連接查詢,或者表之間的關(guān)系(比如一對多、一對一、多對多)來實(shí)現(xiàn),查詢結(jié)果選取前端需要顯示的列即可,這部分是數(shù)據(jù)庫上的知識(shí)。
3、頁面用靜態(tài)頁面還是動(dòng)態(tài)頁面?
靜態(tài)頁面(比如html)或者動(dòng)態(tài)頁面(比如jsp)都是可以的,如果用的ajax訪問,兩者區(qū)別可以忽略。
4、想查哪條數(shù)游掘答據(jù)就顯示哪條數(shù)據(jù)是怎么做到的?
不知道你有沒有學(xué)過數(shù)據(jù)庫,如果學(xué)過的話,應(yīng)該知道數(shù)據(jù)庫中通過SQL的條件查詢可以過濾掉不需要的數(shù)據(jù),這樣子就可以根據(jù)查詢的條件來獲取自己想要顯示在頁面的數(shù)據(jù),然后顯示出來就可以了。
上面的東西,至少需要一個(gè)基本散租的了解,不然估計(jì)也看不懂我描述的是什么,如果看不懂的話,建議還是先學(xué)習(xí)一下下面列舉的這些東西的基礎(chǔ)知識(shí)再看:
Spring、Spring MVC、MyBatis、SQL、ajax、jQuery、json。
1、首先通過代碼獲取譽(yù)頃到數(shù)據(jù)里的數(shù)據(jù),$result = $this->service->getListData(); 這個(gè)方法就是獲取數(shù)據(jù)庫的數(shù)據(jù)的。
2、獲取到數(shù)據(jù)后,就可以在html代碼里輸出這些數(shù)據(jù)了,直接在html里嵌入一些php標(biāo)簽就行了,由于數(shù)據(jù)是一個(gè)數(shù)組,所以可以循環(huán)這個(gè)數(shù)組來輸出。
3、把數(shù)據(jù)顯腔擾示在table上,數(shù)組里每一條數(shù)據(jù)都顯示一行tr。
4、表格的之一個(gè)單元格我們顯示數(shù)據(jù)的id。
5、同樣表格的第二個(gè)單元格顯示數(shù)據(jù)的name。如果還有其他的數(shù)據(jù)要顯示,再添加td來顯示就行了。
6、運(yùn)行頁面,現(xiàn)在就可以看到頁面顯示出了后臺(tái)數(shù)伍虛旦據(jù)庫獲取到的數(shù)據(jù)了。
關(guān)于s讀取數(shù)據(jù)庫數(shù)據(jù)是亂碼的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機(jī)房服務(wù)器托管租用。
分享名稱:如何解決S中讀取數(shù)據(jù)庫亂碼問題 (s讀取數(shù)據(jù)庫數(shù)據(jù)是亂碼)
本文URL:http://m.fisionsoft.com.cn/article/coipdhh.html


咨詢
建站咨詢
