복붙노트

[SPRING] 하나의 컨트롤러를 Spring MVC의 다른 컨트롤러 URL로 호출하는 방법은 무엇입니까?

SPRING

하나의 컨트롤러를 Spring MVC의 다른 컨트롤러 URL로 호출하는 방법은 무엇입니까?

안녕하세요, 저는 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 "";
    }

어느 누구도 나를 도와줍니다.

해결법

  1. ==============================

    1.비즈니스 로직을 컨트롤러에 넣을 필요가없고, 비즈니스 로직이 데이터베이스와 관련이 없으므로 트랜잭션 클래스 / 메소드가 서비스 계층에 있어야합니다. 하지만 다른 컨트롤러 방법으로 리디렉션해야 할 경우 리디렉션을 사용하십시오.

    비즈니스 로직을 컨트롤러에 넣을 필요가없고, 비즈니스 로직이 데이터베이스와 관련이 없으므로 트랜잭션 클래스 / 메소드가 서비스 계층에 있어야합니다. 하지만 다른 컨트롤러 방법으로 리디렉션해야 할 경우 리디렉션을 사용하십시오.

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

    2.이렇게 할 수 있습니다 :

    이렇게 할 수 있습니다 :

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

    3.컨트롤러 클래스는 다른 클래스와 마찬가지로 Java 클래스입니다. Spring이 리플렉션을 사용하여 주석을 검사하는 영리한 마법을 사용하지만 코드는 일반적인 Java 코드와 마찬가지로 메소드를 호출 할 수 있습니다.

    컨트롤러 클래스는 다른 클래스와 마찬가지로 Java 클래스입니다. Spring이 리플렉션을 사용하여 주석을 검사하는 영리한 마법을 사용하지만 코드는 일반적인 Java 코드와 마찬가지로 메소드를 호출 할 수 있습니다.

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

    4.다른 컨트롤러로 리디렉션 할 때 @reponseBody 주석을 추가 할 필요가 없습니다. 코드가 다음과 같이 보일 것입니다.

    다른 컨트롤러로 리디렉션 할 때 @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";
            }
    
    }
    
  5. ==============================

    5.getUser 메소드를 서비스 (예 : UserService 클래스)에 배치해야합니다.

    getUser 메소드를 서비스 (예 : UserService 클래스)에 배치해야합니다.

    getUser 컨트롤러에서 서비스의 getUser 메소드를 호출하여 사용자를 가져옵니다.

    비슷하게 updatePswd 컨트롤러에서 서비스의 getUser 메소드를 호출 할 수도 있습니다.

  6. from https://stackoverflow.com/questions/24949846/how-to-call-one-controller-to-another-controller-url-in-spring-mvc by cc-by-sa and MIT license