導航:首頁 > 凈水問答 > springmvc過濾器註解

springmvc過濾器註解

發布時間:2021-03-21 16:45:07

A. springmvc的註解都有哪些

spring mvc常用的註解:
個介紹。
@Controller
@Controller 負責注冊一個bean 到spring 上下文中,bean 的ID 默認為
類名稱開頭字母小寫,你也可以自己指定,如下
方法一:
@Controller
public class TestController {}
方法二:
@Controller("tmpController")
public class TestController {}
@RequestMapping
1.@RequestMapping用來定義訪問的URL,你可以為整個類定義一個
@RequestMapping,或者為每個方法指定一個。
把@RequestMapping放在類級別上,這可令它與方法級別上的
@RequestMapping註解協同工作,取得縮小選擇范圍的效果。
"})
@CookieValue 獲取cookie信息
@RequestHeader 獲取請求的頭部信息

B. SpringMVC實現依賴注入的幾個常用註解的用

1. @Component 是所有受Spring 管理組件的通用形式
2. @Repository 對應數據訪問層的Bean
3. @Service 對應業務層的Bean
4. @Controller 對應控制層的Bean
5. @Resource 默認按名稱來裝配注入,只有當找不到與名稱相匹配的bean時才會按照類型來裝配注入
6. @Autowired 默認按類型來裝配注入,如果想按照名稱來裝配注入,則需要結合@Qualifier一起使用
7. @Qualifier 默認按名稱來裝配注入

C. springmvc裡面自定義註解實現aop,controller層裡面註解一直不生效,但是註解放在service層又可以

很容易解釋。
springmvc-servlet.xml 和 applicationContext.xml是不同的spring裝載器。

D. springmvc自定義註解加攔截器怎麼實現許可權控制

1、創建自定義組件 ,創建攔截器獲得所有註解。
2、然後創建和修改註解數據,在自定義組件實現許可權控制。

3、不過目前一般採用第三方組件來實現許可權

E. springmvc的註解有哪些

springmvc的註解有哪些
spring mvc常用的註解:

個介紹。
@Controller
@Controller 負責注冊一個bean 到spring 上下文中,bean 的ID 默認為

類名稱開頭字母小寫,你也可以自己指定,如下
方法一:
@Controller
public class TestController {}

方法二:
@Controller("tmpController")
public class TestController {}

@RequestMapping

1.@RequestMapping用來定義訪問的URL,你可以為整個類定義一個

@RequestMapping,或者為每個方法指定一個。
把@RequestMapping放在類級別上,這可令它與方法級別上的

@RequestMapping註解協同工作,取得縮小選擇范圍的效果。
例如:
@RequestMapping("/test")
public class TestController {}
則,該類下的所有訪問路徑都在/test之下。

2.將@RequestMapping用於整個類不是必須的,如果沒有配置,所有的方法

的訪問路徑配置將是完全獨立的,沒有任何關聯。

3.完整的參數項為:@RequestMapping(value="",method =

{"",""},headers={},params={"",""}),各參數說明如下:
value :String[] 設置訪問地址
method: RequestMethod[]設置訪問方式,字元數組,查看RequestMethod

類,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用

RequestMethod.GET,RequestMethod.POST
headers:String[] headers一般結合method = RequestMethod.POST使用
params: String[] 訪問參數設置,字元數組 例如:userId=id

4.value的配置還可以採用模版變數的形式 ,例如:@RequestMapping

(value="/owners/{ownerId}", method=RequestMethod.GET),這點將在介

紹@PathVariable中詳細說明。

5.@RequestMapping params的補充說明,你可以通過設置參數條件來限制

訪問地址,例如params="myParam=myValue"表達式,訪問地址中參數只有

包含了該規定的值"myParam=myValue"才能匹配得上,類似"myParam"之類

的表達式也是支持的,表示當前請求的地址必須有該參數(參數的值可以是

任意),"!myParam"之類的表達式表明當前請求的地址不能包含具體指定的

參數"myParam"。

6.有一點需要注意的,如果為類定義了訪問地址為*.do,*.html之類的,則

在方法級的@RequestMapping,不能再定義value值,否則會報錯,例如
Java代碼
@RequestMapping("/bbs.do")
public class BbsController {
@RequestMapping(params = "method=getList")
public String getList() {
return "list";
}
@RequestMapping(value= "/spList")
public String getSpecialList() {
return "splist";
}
}

如上例:/bbs.do?method=getList 可以訪問到方法getList() ;而訪

問/bbs.do/spList則會報錯.

@PathVariable
1.@PathVariable用於方法中的參數,表示方法參數綁定到地址URL的模板

F. springmvc常用的註解有哪些

1、@Controller
在SpringMVC 中,控制器Controller 負責處理由DispatcherServlet 分發的請求,它把用戶請求的數據經過業務處理層處理之後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。在SpringMVC 中提供了一個非常簡便的定義Controller 的方法,你無需繼承特定的類或實現特定的介面,只需使用@Controller 標記一個類是Controller ,然後使用@RequestMapping 和@RequestParam 等一些註解用以定義URL 請求和Controller 方法之間的映射,這樣的Controller 就能被外界訪問到。此外Controller 不會直接依賴於HttpServletRequest 和HttpServletResponse 等HttpServlet 對象,它們可以通過Controller 的方法參數靈活的獲取到。
@Controller 用於標記在一個類上,使用它標記的類就是一個SpringMVC Controller 對象。分發處理器將會掃描使用了該註解的類的方法,並檢測該方法是否使用了@RequestMapping 註解。@Controller 只是定義了一個控制器類,而使用@RequestMapping 註解的方法才是真正處理請求的處理器。單單使用@Controller 標記在一個類上還不能真正意義上的說它就是SpringMVC 的一個控制器類,因為這個時候Spring 還不認識它。那麼要如何做Spring 才能認識它呢?這個時候就需要我們把這個控制器類交給Spring 來管理。有兩種方式:
(1)在SpringMVC 的配置文件中定義MyController 的bean 對象。
(2)在SpringMVC 的配置文件中告訴Spring 該到哪裡去找標記為@Controller 的Controller 控制器。
<!--方式一--><bean class="com.host.app.web.controller.MyController"/><!--方式二-->< context:component-scan base-package = "com.host.app.web" />//路徑寫到controller的上一層(掃描包詳解見下面淺析)

2、@RequestMapping
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作為父路徑。
RequestMapping註解有六個屬性,下面我們把她分成三類進行說明(下面有相應示例)。
1、 value, method;
value: 指定請求的實際地址,指定的地址可以是URI Template 模式(後面將會說明);
method: 指定請求的method類型, GET、POST、PUT、DELETE等;
2、consumes,proces
consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;
proces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;
3、params,headers
params: 指定request中必須包含某些參數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
3、@Resource和@Autowired

G. SpringMVC的攔截器和過濾器的區別與聯系

1、首先要明確什麼是攔截器、什麼是過濾器
1.1 什麼是攔截器:
攔截器,在AOP(Aspect-Oriented Programming)中用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。攔截是AOP的一種實現策略。
在Webwork的中文文檔的解釋為——攔截器是動態攔截Action調用的對象。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的代碼,也可以在一個action執行前阻止其執行。同時也是提供了一種可以提取action中可重用的部分的方式。
談到攔截器,還有一個詞大家應該知道——攔截器鏈(Interceptor Chain,在Struts2中稱為攔截器棧 Interceptor Stack)。攔截器鏈就是將攔截器按一定的順序聯結成一條鏈。在訪問被攔截的方法或欄位時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。
1.2. 攔截器的實現原理:
大部分時候,攔截器方法都是通過代理的方式來調用的。Struts2的攔截器實現相對簡單。當請求到達Struts2的ServletDispatcher時,Struts 2會查找配置文件,並根據其配置實例化相對的攔截器對象,然後串成一個列表(list),最後一個一個地調用列表中的攔截器。
1.3 什麼是過濾器
過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求信息。在這之後,過濾器可以作如下的選擇:
①以常規的方式調用資源(即,調用servlet或JSP頁面)。
②利用修改過的請求信息調用資源。
③調用資源,但在發送響應到客戶機前對其進行修改。
④阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或生成替換輸出。

1.4 Servlet過濾器的基本原理
在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈里逐個處理,直到請求發送到目標為止。例如,某網站里有提交「修改的注冊信息」的網頁,當用戶填寫完修改信息並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的數據進行統一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈里進行處理。當過濾器處理成功後,把提交的數據發送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

2、攔截器與過濾器的區別 :
1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

攔截器的代碼實現(以struts2為例):
1、在xml文件中如何定義攔截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎麼遍別寫自定義攔截器

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

}

3、怎麼編寫過濾器

1、在web.xml裡面配置自定義的攔截器
<filter>
<filter-name>Redirect Filter</filter-name>
<filter-class>com.xx.filter.RedirectFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>Redirect Filter</filter-name>
<url-pattern>/xx/xx/*</url-pattern>

</filter-mapping>

2、如何編寫自定義的攔截器
public class RedirectFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 獲取URL
Long startTime = null;
if (log.isDebugEnabled())
{
startTime = System.currentTimeMillis();
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
String url = httpRequest.getRequestURL().toString();
if (url == null || url.trim().length() == 0) {
return;
}
if (url.indexOf(luceneCreateMapping) != -1
|| url.indexOf(luceneSearchMapping) != -1) {
doFilterForxxx(request, response, url);
} else {
doxxxx(request, response, url);
}
if (log.isDebugEnabled())
{
long endTime = System.currentTimeMillis();
Thread currentThread = Thread.currentThread();
String threadName = currentThread.getName();
log.debug("[" + threadName + "]" + "< "
+ this.getClass().getName() + " " + url + " "
+ (endTime - startTime) + " ms");
}
// 激活下一個Filter
filterChain.doFilter(request, response);

}
}

H. 請教怎麼用Spring的註解方式把一個Bean注入到過濾器中

參考:
UsersConnectionRepository bean =
(UsersConnectionRepository)WebApplicationContextUtils.
(filterConfig.getServletContext()).
getBean("usersConnectionRepository");

下面是優化的寫法:

UsersConnectionRepository bean = WebApplicationContextUtils.
(filterConfig.getServletContext()).
getBean(UsersConnectionRepository.class);

I. Springmvc,controller使用註解聲明參數後攔截器如何獲取

這里指定了一個訪問規則,{}中的是參數名.我希望能直接獲得這里的參數,在攔截器中

J. springmvc過濾器和攔截器的區別

攔截器與過濾器的區別 :
1. 攔截器是基於java的反射機制的,而過濾器是基於函數回調。
2. 攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
3. 攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
4. 攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
5. 在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次

攔截器的代碼實現(以struts2為例):
1、在xml文件中如何定義攔截器
<interceptors>
<interceptor name="filterIPInterceptor"
class="com.xxxx.web.FilterIPActionInterceptor" />
<interceptor-stack name="filterIPStack">
<interceptor-ref name="defaultStack" />

<interceptor-ref name="filterIPInterceptor" />
</interceptor-stack>
</interceptors>

2、怎麼遍別寫自定義攔截器

public class FilterIPActionInterceptor extends AbstractInterceptor
{
/** 日誌控制. */
private final Log log = LogFactory.getLog(getClass());

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

閱讀全文

與springmvc過濾器註解相關的資料

熱點內容
有機硅樹脂塑封 瀏覽:993
海爾es50hhc3換鎂棒除垢說明書 瀏覽:526
80公分魚缸用多大的過濾桶 瀏覽:237
什麼布過濾pm25 瀏覽:883
浙江污水處理價格多少 瀏覽:888
廢水中為什麼氨氮高 瀏覽:657
金魚缸過濾系統視頻 瀏覽:197
解放空氣濾芯在哪裡 瀏覽:936
有機超濾膜生產廠家 瀏覽:760
污水處理廠工藝設計 瀏覽:791
污水廠老員工個人工作總結 瀏覽:490
君浩環保水處理設備 瀏覽:36
過濾過的廢水可以干嗎 瀏覽:554
污水處理廠土建施工資料 瀏覽:963
鍋爐清灰劑廠家鍋爐除垢劑價格 瀏覽:867
工業超純水停機了怎麼辦 瀏覽:691
鄉村生物污水處理 瀏覽:459
空氣凈化器過濾網怎麼裝 瀏覽:221
金壇污水處理多少錢 瀏覽:387
pe污水管道介面做法有幾種 瀏覽:710