728x90

Model 객체 사용

데이터만 설정이 가능 

@RequestMapping("/board/view") 
public String view(Model model) {  
	model.addAttribute("id", "hongku"); return "board/view"; 
}

model.addAttribute("변수이름", "변수에 넣을 데이터값"); 

Data : ${data}

 

ModelAndView

데이터와 뷰를 동시에 설정이 가능 

@RequestMapping("/board/content") 
public ModelAndView content() {  
    ModelAndView mv = new ModelAndView(); 
    mv.setViewName("/board/content"); // 뷰의 이름
    mv.addObject("data", "12341234"); // 뷰로 보낼 데이터 값 
    return mv;
}

mv.setViewName("뷰의 경로");

mv.addObject("변수 이름", "데이터 값"); 

Data : ${data}

 

AJAX 를 이용 ( 로그인 예제 )

map 을 이용하여 return

/** 로그인 버튼 click */
    @ResponseBody
    @RequestMapping("/login/start")
    public Map<String, Object> login(HttpSession session , @ModelAttribute("userVO") UserDTO userDTO ) throws Exception {

        Map<String, Object> resultMap = new HashMap<>();
        try{
            userDTO.setCommand("idCheck");
            if( userService.checkUserDuplicated( userDTO ) ){ // 사용자 중복확인

                UserDTO findUserVO = userService.findByUserInfo(userDTO);
                String d_salt = userService.getSalt(userDTO.getUser_id());
                String input_pw = SHA256.getEncrypt(userDTO.getUser_pw(), d_salt);

                if(findUserVO.getFail_count() < 5) { // 로그인 5회연속 실패시 접속 불가능

                    if (findUserVO.getUser_pw().equals(input_pw)) { // pw 확인
                        session.setAttribute("user_id", findUserVO.getUser_id());
                        session.setAttribute("user_nm", findUserVO.getUser_nm());

                        findUserVO.setFail_count(0);
                        userService.updateFailCount( findUserVO ); // 시도횟수 초기화
                        resultMap.put("status", "success");
                    } else {
                        findUserVO.setFail_count(findUserVO.getFail_count() + 1);
                        userService.updateFailCount( findUserVO );// 시도횟수 +1

                        resultMap.put("trial", findUserVO.getFail_count());
                        resultMap.put("status", "pw_check");
                    }
                }else{
                    resultMap.put("status", "trial_fail");
                }
            }else{
                resultMap.put("status", "no_user");
            }
        }catch(Exception e){
            resultMap.put("status",e.getMessage());
            return resultMap;
        }
        return resultMap;
    }

JS 에서 데이터 받기

let submitFlag = false;

function formCheck() {

    if(submitFlag){ return false; }

    var inputId 	= $('#user_id').val();
    var inputPass 	= $('#user_pw').val();

    if (inputId ==""){$('#inputNoDiv').addClass('d-block show').removeClass('d-none hide');return;}
    else $('#inputNoDiv').removeClass('d-block show').addClass('d-none hide');

    if (inputPass ==""){$('#inputPassDiv').addClass('d-block show').removeClass('d-none hide');return;}
    else $('#inputPassDiv').removeClass('d-block show').addClass('d-none hide');

    //form
    submitFlag = true;
    var formData = $("#loginForm").serialize();

    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        url: "/login/start",
        data: formData,
        dataType: "json",  // 응답 데이터는?  JSON타입
        async : false,
        success: function (result) {
            switch(result.status){
                case "success" : location.href="dashboard"; break;
                case "pw_check" :
                  showModal("alertModal" ,"비밀번호를 확인 하세요.\n\n5/"+result.trial+ "회 실패.");
                  break;
                case "trial_fail" :
                  showModal("alertModal" ,"시도횟수를 초과 하였습니다. 비밀번호 찾기를 이용하세요.");
                  break;
                case "no_user" :
                  showModal("alertModal" ,"존재하지 않는 사용자 입니다.");
                  break;
                default :
                  showModal("alertModal",result.status);
                  break;
            }
        },
        error: function () {
            showModal("alertModal" ,"페이지에 에러가 있습니다!");
        }
    });

    setTimeout(function (){submitFlag = false;}, 2000);
}

 

 

Servlet.xml 에서 정의

<mvc:view-controller path="hahaha" view-name="/"/>
<!-- GET 요청만 가능 controller에 코드 없어도 페이지 이동됨. -->
728x90

+ Recent posts