从servlet,我将请求转发给如下面的弹簧控制器
RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);
为了将参数传递给spring控制器,我将它作为转发URL中的请求参数传递。
有更好的方法吗?
我可以在转发期间将方法参数作为方法参数传递给弹簧控制器,而不是传入请求参数吗?
答案 0 :(得分:2)
请求/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";
}
答案 1 :(得分:1)
您可以使用路径变量,例如follow,而无需使用查询字符串参数:
@RequestMapping(value="/mapping/parameter/{reqParam}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String reqParam) {
//Perform logic with reqParam
}