欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Struts中怎么避免出現(xiàn)亂碼

本篇文章為大家展示了Struts中怎么避免出現(xiàn)亂碼,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了江門免費(fèi)建站歡迎大家使用!

下面是效果圖:

如圖鍵入:中文

Struts中怎么避免出現(xiàn)亂碼


顯示結(jié)果如下圖:

Struts中怎么避免出現(xiàn)亂碼


為什么會到錯(cuò)誤頁面呢?我們明明都寫正確了呀,是的,沒有錯(cuò)誤,這是什么原因呢?
請看下圖:

Struts中怎么避免出現(xiàn)亂碼

我們打印才發(fā)現(xiàn)原來username的值傳到action中,成了亂碼,這主要由于客戶端和服務(wù)器端采用了不同的字符集,中文亂碼我們沒有處理。

2、解決辦法:

A、直接轉(zhuǎn)編碼我們新建一個(gè)包,命名為util,在包下新建一個(gè)類文件,命名為EncodingUtil,類的功能就是提供一個(gè)字符集轉(zhuǎn)換的一個(gè)方法,具體代碼如下所示:

 package util;

小結(jié):這辦法雖然能解決中文亂碼,但是每次還得調(diào)用,是不是很不方便呢?如果忘記了調(diào)用這個(gè)方法,那程序又亂碼了,維護(hù)起來很困難,下面我們看另一種解決方案。

B、繼承RequestProcessor類

RequestProcessor類處理ActionServlet接收到的所有請求。根據(jù)它的處理方式,可將每個(gè)請求分解為多個(gè)小任務(wù),分別由不同的方法執(zhí)行。這就允許針對請求的各個(gè)單獨(dú)部分自定義處理。

RequestProcessor類的部分方法如下:

processPath():                    獲取客戶端請求的路徑URI
processMapping():              根據(jù)請求URI獲取所需的映射信息
processRoles():                  檢查用戶的角色是否允許他訪問請求的資源
processActionForm():        新建一個(gè)Form Bean或從請求會話中檢索Form Bean
processForward():              處理元素forward以匹配當(dāng)前的請求路徑
processValidate():                調(diào)用Form Bean的validate()方法
processPreprocess():         告訴請求處理器調(diào)用此方法后,是否應(yīng)繼續(xù)處理請求
processLocale():                 為請求選擇一個(gè)語言環(huán)境
processActionCreate():               實(shí)例化當(dāng)前ActionMapping指定的類的實(shí)例
processActionPerform():     將調(diào)用action的perform()或execute()方法

呵呵,發(fā)沒發(fā)現(xiàn)RequestProcess類的所有方法都有一個(gè)前綴proess,接著往下看吧。

RequestProcessor在action之前,所以我們應(yīng)著手RequestProcessor,要開發(fā)自己的RequestProcessor類,步驟如下:

(1)     創(chuàng)建一個(gè)繼承org.apache.struts.action.RequestProcessor的類,在改類中顯示定義一個(gè)無參,方法體為空的構(gòu)造器。

(2)     重寫所需的方法,加入我們的功能。

具體代碼如下所示:

package servlets;


(3)     修改配置文件sturts-config.xml,在其中加入一個(gè)名為

的元素,用以指定我們定制的RequestProcessor類。

http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">





path="/login"
name="loginActionForm"
scope="request"
type="actions.LoginAction">


上面就是我們自己的定義的RequestProcessor類,使用標(biāo)簽類定義。

小結(jié):這樣做呢?問題是解決了,每一個(gè)請求先經(jīng)過這個(gè)方法,并轉(zhuǎn)換了字符集再交給action做處理,這樣我們不用在操心中文亂碼,但RequestProcessor是與struts耦合在一塊兒。如果不用struts框架,我們又該如何處理中文問題呢?是否又更好的辦法呢?那就接著跟我往下看吧。

C、Filter來解決中文問題

Filter,是不是你腦子里閃現(xiàn)了這個(gè)詞呢?下面就來看看如何用它來改寫我們上一章節(jié)的例子吧!

(1) 首先在工程中新建一包,命名為filter,在下面新建一類文件,命名為EncodingServlet,并繼承HttpServlet、實(shí)現(xiàn)Filter接口,注意并實(shí)現(xiàn)接口的方法。

在Servlet中filter起著過濾器的作用,當(dāng)一個(gè)請求發(fā)送到服務(wù)器的時(shí)候,需要把請求首先交給filter來處理,然后交給action做處理。EncodingServlet負(fù)責(zé)處理請求的字符集,在此就起這么個(gè)功能,具體代碼請依照如下所示:

package servlets;

(2)       修改web.xml,加入我們的filter。


EncodingServlet
servlets.EncodingServlet


EncodingServlet
/*

上述內(nèi)容就是Struts中怎么避免出現(xiàn)亂碼,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

標(biāo)題名稱:Struts中怎么避免出現(xiàn)亂碼
網(wǎng)頁路徑:http://www.chinadenli.net/article26/iigejg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)網(wǎng)站設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)網(wǎng)站排名標(biāo)簽優(yōu)化微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司