全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

使用動(dòng)態(tài)代理完成字符集編碼過(guò)濾器的編寫(xiě)

更新時(shí)間:2018-07-25 來(lái)源:黑馬程序員 瀏覽量:

1.1.1 需求:

無(wú)論 使用GET還是POST提交,到Servlet中只需要調(diào)用request.getParameter方法,中文亂碼就已經(jīng)處理好.

1.1.2 分析:1.1.2.1 技術(shù)分析:

【request中的方法的增強(qiáng)】

? 繼承                :能夠控制這個(gè)類(lèi)的構(gòu)造.

? 裝飾者        :增強(qiáng)的類(lèi)和被增強(qiáng)的類(lèi)實(shí)現(xiàn)相同的接口,增強(qiáng)的類(lèi)中獲得到被增強(qiáng)的類(lèi)的引用.

* 接口中方法過(guò)多,只增強(qiáng)其中的某個(gè)方法.其他的方法也需要重寫(xiě).

? 動(dòng)態(tài)代理:被增強(qiáng)的類(lèi)實(shí)現(xiàn)了接口.

【代理的概述】

? 代理                :

? JDK中動(dòng)態(tài)代理        :Proxy對(duì)象.

* Proxy.newProxyInstance(ClassLoader cl,Class[] interfaces,InvocationHandler ih);

【動(dòng)態(tài)代理入門(mén)】:

1.1.3 代碼實(shí)現(xiàn):

1532495569292_62.png1532495574605_63.png1532495577762_64.png1532495582184_65.png




1.1.4 總結(jié):1.1.4.1 代理的企業(yè)應(yīng)用:

【Spring的AOP】

AOP的底層使用的就是代理機(jī)制:

* AOP        :面向切面編程.新的思想,用來(lái)解決OOP中遇到的一些問(wèn)題?。?!

1.1.4.2 類(lèi)加載器:

類(lèi)的加載器:將class文件加載到JVM中執(zhí)行這個(gè)文件.

Java中將類(lèi)加載器分成三類(lèi):

引導(dǎo)類(lèi)加載器:                JAVA_HOME/jre/lib/rt.jar

     |

擴(kuò)展類(lèi)加載器:                JAVA_HOME/jre/lib/ext/*.jar

     |

應(yīng)用類(lèi)加載器:                加載類(lèi)路徑下的所有的class.

這些類(lèi)加載器如何保證類(lèi)只會(huì)加載一次而且不會(huì)重復(fù)加載:

類(lèi)加載器的全盤(pán)委托機(jī)制:

class A {

String s;

}

由應(yīng)用類(lèi)加載器得到A.class String,class,委托給擴(kuò)展類(lèi)加載器,擴(kuò)展類(lèi)加載器又委托給引導(dǎo)類(lèi)加載器.引導(dǎo)類(lèi)加載器加載String.class.將其他的類(lèi)的class向下給擴(kuò)展類(lèi)加載器.擴(kuò)展類(lèi)加載器沒(méi)有找到.向下給應(yīng)用類(lèi)加載器,將A.class 加載.



作者:黑馬程序員javaEE培訓(xùn)學(xué)院
首發(fā):http://java.itheima.com/
分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!