向弹簧控制器转发请求

时间:2017-02-26 05:29:01

标签: spring-mvc servlets spring-rest

从servlet,我将请求转发给如下面的弹簧控制器

RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);

为了将参数传递给spring控制器,我将它作为转发URL中的请求参数传递。

有更好的方法吗?

我可以在转发期间将方法参数作为方法参数传递给弹簧控制器,而不是传入请求参数吗?

2 个答案:

答案 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
}