2012-02-24 63 views
4

我想用HttpServletRequest的如何使用讀取春天請求PARAM值的HttpServletRequest

http://localhost:8080/api/type?name=xyz&age=20 

我控制器的方法會不會@RequestParam定義,它僅僅是

讀取從URL中requestParams數據
@RequestMapping(value = "/**", method = RequestMethod.GET) 
    public ResponseEntity<String> getResponse(
      final HttpServletRequest request) {} 

我想閱讀使用請求只有參數不是整個網址。

回答

8

第一,爲什麼你定義:

@RequestMapping(value = "/**", method = RequestMethod.GET)` 

也許你應該使用:

@RequestMapping(value = "/api/type", method = RequestMethod.GET) 

和read參數:

request.getParameter("name"); 
request.getParameter("age"): 
0

這是你在找什麼?

public java.lang.String getParameter(java.lang.String name) 

API

的getParameter

字符串的getParameter(String name)返回一個請求 參數爲字符串,或者如果參數不存在空的值。 請求參數是與請求一起發送的額外信息。對於 HTTP servlet,參數包含在查詢字符串中或發佈爲 表單數據。只有在確定參數 只有一個值時,才應使用此方法。如果參數的值可能超過 ,請使用getParameterValues(java.lang.String)。

如果對多值參數使用此方法,則返回的值 等於 getParameterValues返回的數組中的第一個值。

如果參數數據在請求體中發送,例如具有HTTP POST請求發生 ,然後直接通過 的getInputStream()或getReader讀取體()可以與 該方法的執行產生干擾。

參數:name - 一個String指定參數 名返回:表示該參數的單個值的字符串見 另外:getParameterValues(java.lang.String中)

1

您可以使用

request.getParameter("parameter name") 
5

翔適合您的具體問題:「我想用的要求只有PARAMS閱讀」

但是爲什麼你要讓它儘量d ifficult。Spring支持你,所以你不需要自己處理請求對象等常見任務:

我建議使用

@RequestMapping(value = "/*", method = RequestMethod.GET) 
public ResponseEntity<String> getResponse(
    @RequestParam("name") String name 
    @RequestParam("age") int age){ 

    ... 
} 

代替。

@See Spring參考章節15.3.2.4. Binding request parameters to method parameters with @RequestParam