大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java Web攔截器

Java Web攔截器

更新時間:2020-10-23 17:56:08 來源:動力節點 瀏覽1228次

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


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


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

示例代碼

在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;

// 獲得當前方法名.

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不存在或當前請求的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();//調用被攔截的方法

}

catch (Exception e)

{

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

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

throw e;

}

return result;

}

}


通過本文的講解加上我們之前對filter的了解,可以得出如下結論:

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

由此可見,Java Web攔截器的作用和filter相比毫不遜色,Java Web攔截器相關知識也是我們應該加以重視的重要考點,在Java基礎面試題中也是頻繁出現,我們應該牢牢掌握。


提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 99久久精品无码一区二区毛片 | 免费国产福利 | 在线观看免费亚洲 | 亚洲国产成人久久99精品 | 高清中文字幕视频在线播 | 国产精品久久久久久久久久久久 | 色狠狠婷婷97 | 在线观看成人小视频 | 99精品国产高清一区二区 | 99在线精品视频 | 国产成人免费不卡在线观看 | 国产综合色在线视频播放线视 | 九九爱www高清免费人成 | 日日爽夜夜操 | 永久免费的啪啪免费的网址 | 久久777国产线看观看精品卜 | 97在线免费视频 | 四虎国产永久在线精品免费观看 | 欧美 日韩 高清 | 国产亚洲精 | 国产一级精品视频 | 国产视频二区在线观看 | 午夜性爽视频男人的天堂在线 | 日本免费高清一级毛片 | 久久婷婷一区二区三区 | 亚洲欧美第一页 | 大陆60老妇xxxxhd | 日本不卡视频在线播放 | 99精品高清不卡在线观看 | 亚洲免费网| 精品久久天干天天天按摩 | 视色在线 | 亚洲一级毛片 | 久久久精彩视频 | 久久91av | 热er99久久6国产精品免费 | 国产精品乱码免费一区二区 | 无遮挡一级毛片性视频不卡 | 午夜在线社区视频 | 天天干b| av大片|