如何在Spring MVC中将一个控制器调用到另一个控制器URL?

时间:2014-07-25 07:01:54

标签: spring spring-mvc

您好我是Spring MVC的新手,我想从一个控制器调用方法到另一个控制器,我该怎么做。请检查下面的代码

@Controller

    @RequestMapping(value="/getUser")
    @ResponseBody
    public User getUser()
    {
        User u = new User();
        //Here my dao method is activated and I wil get some userobject
       return u;
    }
   @Controller

    @RequestMapping(value="/updatePSWD")
    @ResponseBody
    public String updatePswd()
    {
        here I want to call above controller method and 
       I want to update that user password here.
       how can  I do that 
        return "";
    }

任何人帮助我。

5 个答案:

答案 0 :(得分:7)

您永远不必将业务逻辑放入控制器,并且与数据库相关的业务逻辑较少,事务类/方法应该在服务层中。但是,如果您需要重定向到另一个控制器方法,请使用重定向

@RequestMapping(value="/updatePSWD")
@ResponseBody
public String updatePswd()
{
  return "redirect:/getUser.do";
}

答案 1 :(得分:2)

可以这样做:

@Autowired
private MyOtherController otherController;

@RequestMapping(value = "/...", method = ...)
@ResponseBody
public String post(@PathVariable String userId, HttpServletRequest request) {
    return otherController.post(userId, request);
}

答案 2 :(得分:0)

控制器类与任何其他类一样是Java类。尽管Spring为您提供了聪明的魔力,但使用反射来检查注释,您的代码可以像普通的Java代码一样调用方法:

 public String updatePasswd()
 {
    User u = getUser();
    // manipulate u here
    return u;
 }

答案 3 :(得分:0)

此处无需添加 @reponseBody 注释作为重定向到另一个控制器 您的代码看起来像

@Controller
class ControlloerClass{

        @RequestMapping(value="/getUser",method = RequestMethod.GET)
        @ResponseBody
        public User getUser(){
            User u = new User();
            //Here my dao method is activated and I wil get some userobject
            return u;
        }

        @RequestMapping(value="/updatePSWD",method = RequestMethod.GET)
        public String updatePswd(){
           //update your user password
           return "redirect:/getUser";
        }

}

答案 4 :(得分:-1)

您应该将方法getUser放在服务中(例如UserService类)。

在getUser控制器中,您在服务中调用方法getUser以获取用户

同样,在updatePswd控制器中,您也在服务中调用方法getUser