黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java Web攔截器

Java Web攔截器

更新時(shí)間:2020-10-23 17:56:08 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1230次

我們都知道filter是Java Web三大組件之一,作為Java Web的過(guò)濾器,filter可附加到一個(gè)或多個(gè)servlet或JSP頁(yè)面上,并且可以檢查進(jìn)入這些資源的請(qǐng)求信息。言歸正傳,Java Web過(guò)濾器和攔截器在某些地方有相似之處,但又不是用一種東西。那么,不同于filter在Java Web中顯眼的地位,Java Web攔截器在Java Web中扮演著一個(gè)什么樣的角色呢?本文我們就來(lái)一探究竟。


攔截器,在AOP(Aspect-Oriented Programming)中用于在某個(gè)方法或字段被訪問(wèn)之前,進(jìn)行攔截然后在之前或之后加入某些操作。它依賴于Web框架,在SpringMVC中就是依賴于SpringMVC框架。攔截是AOP的一種實(shí)現(xiàn)策略。而在Webwork的中文文檔的解釋為——攔截器是動(dòng)態(tài)攔截Action調(diào)用的對(duì)象。它提供了一種機(jī)制可以使開發(fā)者可以定義在一個(gè)action執(zhí)行的前后執(zhí)行的代碼,也可以在一個(gè)action執(zhí)行前阻止其執(zhí)行。同時(shí)也是提供了一種可以提取action中可重用的部分的方式。


在實(shí)現(xiàn)上,基于Java的反射機(jī)制,屬于面向切面編程(AOP)的一種運(yùn)用,就是在service或者一個(gè)方法前,調(diào)用一個(gè)方法,或者在方法后,調(diào)用一個(gè)方法,比如動(dòng)態(tài)代理就是攔截器的簡(jiǎn)單實(shí)現(xiàn),在調(diào)用方法前打印出字符串(或者做其它業(yè)務(wù)邏輯的操作),也可以在調(diào)用方法后打印出字符串,甚至在拋出異常的時(shí)候做業(yè)務(wù)邏輯的操作。由于攔截器是基于Web框架的調(diào)用,因此可以使用Spring的依賴注入(DI)進(jìn)行一些業(yè)務(wù)操作,同時(shí)一個(gè)攔截器實(shí)例在一個(gè)controller生命周期之內(nèi)可以多次調(diào)用。但是缺點(diǎn)是只能對(duì)controller請(qǐng)求進(jìn)行攔截,對(duì)其他的一些比如直接訪問(wèn)靜態(tài)資源的請(qǐng)求則沒(méi)辦法進(jìn)行攔截處理。

示例代碼

在xml文件中如何定義Java Web攔截器



怎么編寫自定義攔截器

public class FilterIPActionInterceptor extends AbstractInterceptor

{

/** 日志控制. */

private final Log log = LogFactory.getLog(getClass());

/**

* @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation)

*/

@Override

@SuppressWarnings("unchecked")

public String intercept(ActionInvocation invocation) throws Exception

{

String result = null;

// 獲得當(dāng)前方法名.

String methodName = invocation.getInvocationContext().getName();

String currIp = null;

try

{

if (invocation.getAction() instanceof PortletAction)

{

PortletAction action = (PortletAction) invocation.getAction();

currIp = action.getRequest().getRemoteAddr();

}

String ip = ApplicationResource.getHotValue("ALLOW_CACHE_IP");

if (StringUtils.isBlank(ip) || StringUtils.isBlank(currIp))

{

log.error("允許刷新的IP不存在或當(dāng)前請(qǐng)求的IP非法.");

throw new NoAllowIPException();

}

else

{

String[] ips = ip.split(",");

boolean errorIp = true;

for (String s : ips)

{

if (s.equals(currIp))

errorIp = false;

}

// 判斷IP

if (errorIp)

throw new NoAllowIPException();

}

result = invocation.invoke();//調(diào)用被攔截的方法

}

catch (Exception e)

{

log.error("異常類名:" + invocation.getAction().getClass());

log.error("異常方法:" + methodName, e);

throw e;

}

return result;

}

}


通過(guò)本文的講解加上我們之前對(duì)filter的了解,可以得出如下結(jié)論:

Java Web過(guò)濾器需要在web.xml中配置,依賴于Servlet;而Java Web攔截器需要在SpringMVC中配置,依賴于框架;

由此可見(jiàn),Java Web攔截器的作用和filter相比毫不遜色,Java Web攔截器相關(guān)知識(shí)也是我們應(yīng)該加以重視的重要考點(diǎn),在Java基礎(chǔ)面試題中也是頻繁出現(xiàn),我們應(yīng)該牢牢掌握。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲成a人不卡在线观看 | 日韩欧美影院 | 亚洲欧美一区二区三区在线播放 | 91短视频在线观看手机 | free中国性 | 免费欧美一级片 | 一个人看的免费视频www | 福利一区二区在线观看 | 欧美怡红院免费的全部视频 | 丝袜美脚在线 | 殴美一级毛片 | 久久亚洲成人 | 亚洲欧美日韩久久一区 | 深夜影院一级毛片 | 污污网站免费入口链接 | 带肉很污的甜宠文bl | 欧美视频第一页 | 国产免费91视频 | 黄色成人在线播放 | 精品五夜婷香蕉国产线看观看 | 亚洲国产成人资源在线软件 | 亚洲一区二区免费在线观看 | 91在线|亚洲| 欧美a视频在线观看 | 久久99精品国产麻豆婷婷 | 国产免费爽爽视频免费可以看 | 性放荡一级小说 | 丝袜美腿美女被狂躁动态图片 | 免费国产黄色片 | 天天操精品视频 | 久久久性视频 | 国产福利午夜波多野结衣 | 天堂资源地址在线 | 日本人成年视频在线观看 | 亚洲欧美日韩第一页 | 亚洲黄色片免费看 | 中文字幕丝袜诱惑 | 666夜色666夜色国产免费看 | 国内精品视频成人一区二区 | 在线观看免费精品国产 | 久久免费观看视频 |