Spring mvc 向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控制器,而不是传入请求参数?

从一个servlet,我将请求转发到一个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是否就是这样做的。谢谢。我会试试这个。谢谢。我会试试这个谢谢。我会试试这个