Spring mvc 向spring控制器转发请求
从一个servlet,我将请求转发到一个spring控制器,如下所示Spring mvc 向spring控制器转发请求,spring-mvc,servlets,spring-rest,Spring Mvc,Servlets,Spring Rest,从一个servlet,我将请求转发到一个spring控制器,如下所示 RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value"); rd.forward(request, response); 为了将一个参数传递给spring控制器,我将它作为请求参数在转发URL中传递 有更好的方法吗 在转发过程中,我是否可以将请求参数作为方法参数传递给spring控制器,而不是传入请求参数?
RequestDispatcher rd = request.getRequestDispatcher("/myController/test?reqParam=value");
rd.forward(request, response);
为了将一个参数传递给spring控制器,我将它作为请求参数在转发URL中传递
有更好的方法吗
在转发过程中,我是否可以将请求参数作为方法参数传递给spring控制器,而不是传入请求参数?您可以使用如下路径变量,而无需使用查询字符串参数:
@RequestMapping(value="/mapping/parameter/{reqParam}", method=RequestMethod.GET)
public @ResponseBody String byParameter(@PathVariable String reqParam) {
//Perform logic with reqParam
}
您可以使用如下路径变量,而无需使用查询字符串参数:
@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";
}
当请求
/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";
}
我想问一下,可能是重复的-您必须从纯Java servlet进行此调用吗?也就是说,为什么不是控制器呢?我已经在一个servlet的上下文中了(我不能在这个servlet中更改太多代码)。我需要将请求转发给一个控制器,在那里我可以在发送回Browser之前丰富响应我可以问的可能的副本-您必须从纯Java servlet进行此调用吗?也就是说,为什么不是控制器呢?我已经在一个servlet的上下文中了(我不能在这个servlet中更改太多代码)。我需要将请求转发到一个控制器,在那里我可以在发送回Browser之前充实响应OP是从一个servlet而不是另一个spring控制器调用的。我不认为你可以在那种情况下使用
“转发:…”
技巧?嗯,好的。我不清楚它是否必须来自一个servlet,或者OP是否就是这样做的。谢谢。将尝试此操作。OP是从servlet调用的,而不是从另一个spring控制器调用的。我不认为你可以在那种情况下使用“转发:…”
技巧?嗯,好的。我不清楚它是否必须来自一个servlet,或者OP是否就是这样做的。谢谢。我会试试这个。谢谢。我会试试这个谢谢。我会试试这个