免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
web.xml中 error-page的正確用法

最近在review別的team的代碼,發(fā)現(xiàn)error-page沒(méi)有被用的很好。


他們的web.xml中關(guān)于error-page的定義如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--errorpage handler -->
        <error-page>
            <error-code>404</error-code>
            <location>/WEB-INF/jsp/errors/error.jsp</location>
        </error-page>
        <error-page>
            <error-code>500</error-code>
            <location>/WEB-INF/jsp/errors/error.jsp</location>
        </error-page>
        <error-page>
            <error-code>414</error-code>
            <location>/WEB-INF/jsp/errors/error.jsp</location>
        </error-page>
        <error-page>
            <error-code>505</error-code>
            <location>/WEB-INF/jsp/errors/error.jsp</location>
        </error-page>
        <error-page>
            <error-code>400</error-code>
            <location>/WEB-INF/jsp/errors/error.jsp</location>
        </error-page>


看樣子貌似幾乎所有常見(jiàn)的服務(wù)器端的異常都被覆蓋到了,出現(xiàn)這些異常的話頁(yè)面會(huì)到error.jsp中。


但是這樣就夠了嗎, 顯然是不夠的,仔細(xì)閱讀他們代碼,會(huì)發(fā)現(xiàn)他們有很多異常都有可能被拋出來(lái)而沒(méi)有得到非常妥當(dāng)?shù)奶幚怼?/p>


比如說(shuō)他們的CheckoutAddress類的fromHomeAddress()方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static CheckOutAddress fromHomeAddress(HomeAddr homeAddr) {
        CheckOutAddress address = new CheckOutAddress();
        address.setAddressId(String.valueOf(homeAddr.getId()));
        address.setCountryId(String.valueOf(homeAddr.getCountry().getId()));
        address.setCountryName(homeAddr.getCountry().getRegionName());
        address.setDetailAddress(homeAddr.getDetailAddress());
        address.setFirstName(homeAddr.getFirstName());
        address.setLastName(homeAddr.getLastName());
        address.setIsDefaultAddress(String.valueOf(homeAddr.getIsDefault()));
        address.setMobilePhone(homeAddr.getMobilePhone());
        address.setCountryPhoneCode(homeAddr.getCountryPhoneCode());
        address.setZipCode(homeAddr.getZipCode());
        return address;
    }


顯然這個(gè)方法是沒(méi)有正確處理異常的,因?yàn)閭魅氲膆omeAddr入?yún)⒖赡転榭?,如果這樣的話,那么所有點(diǎn)操作符都會(huì)拋NullPointerException,而這里顯然沒(méi)有對(duì)入?yún)⑦M(jìn)行控制,而且代碼中也沒(méi)有對(duì)異常進(jìn)行處理,我查看了下,所有調(diào)用這個(gè)方法的方法也都沒(méi)有對(duì)異常進(jìn)行處理。所以如果假設(shè)真正應(yīng)用上線后遇到了一個(gè)homeAddr為空的地方,那么這段代碼就會(huì)拋異常而不會(huì)繼續(xù)走下去,沒(méi)有好好處理的結(jié)果可能是災(zāi)難性的,前端用戶會(huì)面對(duì)一大段異常文本而不知所措。



當(dāng)然了,這段代碼最好的方案還是對(duì)入?yún)⑦M(jìn)行嚴(yán)格控制,并且在代碼中吧異常直接處理掉,所謂“能自己處理就不要丟給上級(jí)” ,當(dāng)然了,我們?yōu)榱艘苑廊f(wàn)一,還是必須在web.xml中定義一個(gè) error-page選項(xiàng),來(lái)把好最后一關(guān),也就是就算真正出這個(gè)異常了,也會(huì)到出錯(cuò)頁(yè)面,而不是一個(gè)無(wú)法控制的頁(yè)面。


所以我們需要在web.xml中增加一個(gè)error-page 元素,如下:

1
2
3
4
<error-page>
   <exception-type>java.lang.NullPointerException</exception-type>
   <location>/WEB-INF/jsp/errors/error.jsp</location>
</error-page>

這樣應(yīng)用就更加robust了。  


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Spring MVC 能夠直接訪問(wèn)jsp頁(yè)面
web.xml 錯(cuò)誤跳轉(zhuǎn)處理
jsp異常處理方式:errorPage
JSP異常處理機(jī)制
OpenSymphony——SiteMesh——Decorators
filter中的dispatcher標(biāo)簽解析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服