2011-09-22 218 views
0

我需要在我的spring-jersey應用程序中編寫一個攔截器/過濾器,它將檢查每個會話請求,並在成功時將代碼傳遞給相應的控制器。傳遞這個代碼是imp,因爲基於代碼控制器將決定進一步的行動。Spring攔截器/過濾器

問: 1)這是可能在春季寫這種登錄過濾器嗎?怎麼樣? 2)這是可能從攔截器傳遞一些代碼給控制器嗎?怎麼樣?

+0

spring-jersey?那麼你是使用@Controller還是JSR-311註釋?兩種情況下的答案都會有所不同。 – goroncy

+0

從控制器來說,我的意思是澤西的控制器(JSR-311註釋)。 – Arnav

回答

0

我們需要實現ContainerRequestFilter接口來創建Jersey過濾器。以下是用於攔截和修改使用的球衣過濾器請求的代碼示例:

import com.sun.jersey.spi.container.ContainerRequest; 
import com.sun.jersey.spi.container.ContainerRequestFilter; 
import javax.ws.rs.core.MultivaluedMap; 
import org.apache.log4j.Logger; 

/** 
* 
* @author arnav 
*/ 
public class MyAppFilter implements ContainerRequestFilter{ 


    public ContainerRequest filter(ContainerRequest request) { 

     MultivaluedMap<String, String> headers = request.getRequestHeaders(); 

     headers.add("code", "MY_APP_CODE"); 
     request.setHeaders((InBoundHeaders)headers); 

     return request; 
    } 
} 

加入這個類後,我們需要爲我們的web應用程序註冊此過濾器。因此,現在我們將在我們的web.xml中添加以下幾行代碼:

<servlet> 
     .......... 
     .......... 
     <init-param> 
     <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name> 
     <param-value>package.MyAppFilter</param-value> 
     </init-param> 
</servlet>