将请求转发给 spring 控制器

Forward request to spring controller

我从一个 servlet 将请求转发到一个 spring 控制器,如下所示

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

为了将参数传递给 spring 控制器,我在转发 URL.

中将其作为请求参数传递

有更好的方法吗?

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

您可以使用路径变量,例如 follow 而无需使用查询字符串参数:

@RequestMapping(value="/mapping/parameter/{reqParam}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String reqParam) {
    //Perform logic with reqParam
}

这将在请求 /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"; 
}