Controller

  • 이 페이지는 Controller 작성 양식과 각 어노테이션의 역할, 사용 방법 등을 서술한 페이지입니다.

Controller의 역할

  • Controller는 주로 사용자의 요청을 받고, 처리하여 돌려주는 역할을 담당합니다.

어노테이션의 역할

  • 어노테이션은 주로 요청이나 값을 처리하는 방식을 정의하는 데에 사용합니다.

@Controller

  • 컨트롤러를 지정할 때 사용되는 어노테이션 입니다.

  • Class에 사용하여 컨트롤러를 지정할 수 있습니다.


@RequestMapping

  • @RequestMapping(“/url/”)

    • Class에 사용하여 해당 컨트롤러로 요청받을 URL을 지정할 수 있습니다.
  • @RequestMapping( value = {“main”}, RequestMethod.GET )

    • 메서드에 지정하여 URL과 GET/POST 방식을 지정할 수 있습니다.
    • GET/POST 지정 시에는 RequestMethod.GET/POST 형식을 사용하여 지정합니다.
    • GET/POST 설정이 없을 시 받은 요청의 형식에 따라서 매핑됩니다.

@Autowired

  • 의존성 주입을 위해 사용되는 어노테이션입니다.
  • Class 내부의 필드, 생성자, Setter에 사용하여 객체를 자동으로 주입할 수 있습니다.

@RequestBody

  • 요청 데이터를 JSON 형식으로 받습니다.

@ResponseBody

  • 응답 데이터를 JSON 형식으로 보냅니다.

Controller 작성 양식

  • 아래는 회원에 관련된 내용을 처리하는 Controller의 구성입니다.

  • 개발 시에 주석, 개행, 띄어쓰기 등을 참조하여 작성해주시길 바랍니다.



/**
 * UserController Class ( Class 명 Class )
 *
 * @version : 1.0
 * @author  : 생성자 ID ( SVN, GIT 등 )
 * @date    : 생성일자 ( 20xx.xx.xx )
 * @see
 *
 * <pre>
 * << 개정이력(Modification Information) >>
 * -----------------------------------------------------------------
 *     수정일            수정자                 수정내용
 * -----------------------------------------------------------------
 *     20xx.xx.xx        생성자 ID              최초 생성
 *
 * </pre>
 */
@Controller
@RequestMapping("/user/")
public class UserController
{
    // 로그 출력 시 사용 : logger.info(), logger.debug() 등으로 사용
    static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

    @Autowired
    private UserService userService;


    /**
     * 회원가입 팝업 View
     *
     * @version : 1.0
     * @author  : 생성자 ID ( SVN, GIT 등 )
     * @date    : 생성일자 ( 20xx.xx.xx )
     *
     * @param locale
     * @param model
     * @return
     */
    @RequestMapping( value = { "joinViewPopup" }, method = RequestMethod.GET )
    public String joinViewPopup( Locale locale, Model model )
    {
        return "user/joinViewPopup";
    }

    /**
     * 사용자 목록 조회
     *
     * @version : 1.0
     * @author  : 생성자 ID ( SVN, GIT 등 )
     * @date    : 생성일자 ( 20xx.xx.xx )
     *
     * @param map
     * @param model
     * @param session
     * @return
     * @throws Exception
     */
    @RequestMapping( value = { "getUserList" } )
    public @ResponseBody List<UserModel> getUserList( @RequestBody Map<String, Object> map,
                                                      Model model,
                                                      HttpSession session ) throws Exception
    {
        /** 사용자 목록 조회 */
        List<UserModel> userModels = userService.getUserList( map );

        return userModels;
    }

    /**
     * 사용자 정보 등록
     *
     * @version : 1.0
     * @author  : 생성자 ID ( SVN, GIT 등 )
     * @date    : 생성일자 ( 20xx.xx.xx )
     *
     * @param userJoinModel
     * @param model
     * @param locale
     * @param session
     * @return
     * @throws Exception
     */
    @PostMapping( value = "regUser" )
    public @ResponseBody Map<String, Object> regUser( @RequestBody UserJoinModel userJoinModel,
                                                       Model model
                                                       Locale locale
                                                       HttpSession session ) throws Exception
    {
        // 결과 Return 모델
        ResultModel resultModel = new ResultModel();

        try
        {
            /**
             * 사용자 정보 등록
             */
            userService.regUser( userJoinModel );

            resultModel.setResultCode(Constants.SUCCESS);
        }
        catch( BusinessException be )
        {
            resultModel = be.getResultModel();
        }
        catch( Exception e )
        {
            resultModel = new ResultModel(Constants.FAIL);
            resultModel.setResultMsg(e.getMessage());
        }

        Map<String, Object> ret = new HashMap<String, Object>();
        ret.put("result", resultModel);

        return ret;
    }


    /**
     * 사용자 정보 저장
     *
     * @version : 1.0
     * @author  : 생성자 ID ( SVN, GIT 등 )
     * @date    : 생성일자 ( 20xx.xx.xx )
     *
     * @param userJoinModel
     * @param model
     * @param locale
     * @param session
     * @return
     * @throws Exception
     */
    @PostMapping( value = "updateUser" )
    public @ResponseBody Map<String, Object> saveUser( @RequestBody UserModel userModel,
                                                       Model model
                                                       Locale locale
                                                       HttpSession session ) throws Exception
    {
        // 결과 Return 모델
        ResultModel resultModel = new ResultModel();

        try
        {
            /**
             * 사용자 정보 저장
             */
            userService.updateUser( userModel );

            resultModel.setResultCode(Constants.SUCCESS);
        }
        catch( BusinessException be )
        {
            resultModel = be.getResultModel();
        }
        catch( Exception e )
        {
            resultModel = new ResultModel(Constants.FAIL);
            resultModel.setResultMsg(e.getMessage());
        }

        Map<String, Object> ret = new HashMap<String, Object>();
        ret.put("result", resultModel);

        return ret;
    }

    /**
     * 사용자 정보 삭제
     *
     * @version : 1.0
     * @author  : 생성자 ID ( SVN, GIT 등 )
     * @date    : 생성일자 ( 20xx.xx.xx )
     *
     * @param map
     * @param model
     * @param locale
     * @param session
     * @return
     * @throws Exception
     */
    @PostMapping("deleteUser")
    public @ResponseBody Map<String, Object> deleteUser( @RequestBody Map<String, Object> map,
                                                         Model model,
                                                         Locale locale,
                                                         HttpSession session ) throws Exception
    {
        // 결과 Return 모델
        ResultModel resultModel = new ResultModel();

        try
        {
            /**
             * 사용자 정보 삭제
             */
            userService.deleteUser( map );

            resultModel.setResultCode(Constants.SUCCESS);
        }
        catch ( BusinessException be )
        {
            resultModel = be.getResultModel();
        }
        catch( Exception e )
        {
            resultModel = new ResultModel(Constants.FAIL);
            resultModel.setResultMsg(e.getMessage());
        }

        Map<String, Object> ret = new HashMap<String, Object>();
        ret.put("result", resultModel);

        return ret;
    }

}