将请求转发给 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";
}
我从一个 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";
}