轉發請求從servlet,我將請求轉發到一個彈簧控制器像下面到彈簧控制器
RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);
爲了將參數傳遞給所述彈簧控制器,我將它作爲請求的參數的轉發網址。
有沒有更好的方法來做到這一點?
而不是傳遞請求參數,我可以作爲方法參數傳遞給彈簧控制器在正向?
轉發請求從servlet,我將請求轉發到一個彈簧控制器像下面到彈簧控制器
RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);
爲了將參數傳遞給所述彈簧控制器,我將它作爲請求的參數的轉發網址。
有沒有更好的方法來做到這一點?
而不是傳遞請求參數,我可以作爲方法參數傳遞給彈簧控制器在正向?
在請求/myController/test?reqParam=value
將其稱爲:
@RequestMapping("/myController/test")
public String myMethod(@RequestParam("reqParam") String reqParamValue) {
return "forward:/someOtherUrl?reqParam="+reqParamValue; //forward request to another controller with the param and value
}
或者你可以這樣做:
@RequestMapping("/myController/test")
public String myMethod(@RequestParam("reqParam") String reqParamValue,
HttpServletRequest request) {
request.setAttribute("reqParam", reqParamValue);
return "forward:/someOtherUrl";
}
OP是從一個servlet調用,而不是另一個彈簧控制器。在這種情況下,我認爲你不能使用''前進:....「技巧? –
嗯,好的。我不清楚它必須來自一個servlet,或者這是OP如何去做的。 – bphilipnyc
謝謝。會試試這個。 – lives
您可以使用路徑變量,如跟隨,而不需要使用查詢字符串參數:
@RequestMapping(value="/mapping/parameter/{reqParam}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String reqParam) {
//Perform logic with reqParam
}
謝謝。將嘗試這個 – lives
[Spring forward with added parameters?](http:// stackoverflow .com/questions/8585216/spring-forward-with-added-parameters) – bphilipnyc
我可以問 - 你是否需要從純Java servlet進行調用?那就是,爲什麼不是控制器? – bphilipnyc
我已經在一個servlet的上下文中(我不能在這個servlet中更改很多代碼)。我需要將請求轉發給控制器,在發送回瀏覽器之前,我可以豐富響應 – lives