2012-07-11 28 views
1

在客戶端的JavaScript代碼:我們如何處理spring3 mvc中的請求?

<script src="api/api.js?v=1.x&key=abjas23456asg" type="text/javascript"></script> 

當瀏覽器滿足這條線,我想它會發送GET請求到服務器並獲得api.js.內容

但我想處理這個獲取請求,並根據v和key的參數做一些其他內容修剪。

例如:

時,關鍵是無效的,我們只是返回一個字符串警報,但不是真正的API。

回答

0

爲了做到這一點,您將需要首先配置您的web.xml,它將.js的請求重定向到spring,而不是直接提供服務。

然後您將需要使用HandlerInterceptorAdapter編寫請求處理程序來攔截請求並驗證關鍵參數。如果它不可用,那麼只需推送警報代碼,並且不要通過preHandle發送flase來處理進一步的請求鏈。

,您可以使用

<mvc:resources mapping="/api/**" location="/api-folder/"/> 

配置所有資源web.xml中映射靜態資源,您可以設置

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>*</url-pattern> 
</servlet-mapping> 

有關的HandlerInterceptor

@Component 
public class MyHandler extends HandlerInterceptorAdapter { 
@Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
    throws Exception { 
    String key=request.getParameter("key"); 
      if(invalid) { 
       write alert to response 
       return false; 
      }else{ 
       // let spring serve your static content 
      } 
} 

} 

爲Web上下文XML

<mvc:interceptors> 
    <bean class="MyHandler " /> 
</mvc:interceptors> 
+0

哦,就是這樣。你能解釋更多細節嗎?例如:如何配置web.xml重定向js到spring以及如何編寫HandlerInterceptorAdapter?如果你有一個簡單的例子,我會很感激。非常感謝你。 – hongchangfirst 2012-07-11 07:25:52

+0

爲web.xml和HandlerInterceptor添加exmaple – 2012-07-11 15:28:01

+0

哦,謝謝。但是如何在xml中配置myHandler,它是按照每個請求調用的嗎? – hongchangfirst 2012-07-11 15:34:14