한가
95
2020-11-21 20:20:54 작성 2020-11-21 20:22:06 수정됨
4
197

Spring Model 객체에 관해 질문드립니다.


안녕하세요? 코린이입니다.

얼마 전 Spring에 입문해서 이제 웹페이지를 제작해보고 있는데요


Model 객체도 키 = 값 쌍으로 이루어져 있어서 Ajax Json 타입으로 통신이 가능하지 않을까? 해서 컨트롤러 단에서 맵핑을 시키고 반환타입은 String 해서 Model 객체에 데이터를 담아 보냈는데 Ajax 통신 실패가 뜨더라구요. 반환타입을 void로 해도 결과는 같았습니다.


그래서 반환타입을 Map<String, Object>로 바꿔서 리턴을 해보았더니 이건 또 통신이 되더라구요.


에러를 보고 Model 객체에 관해 구글링을 좀 해보았는데도 이해가 안되서 질문드립니다. 아무리 생각해봐도 Model 자체가 HashMap과 별다를게 없어보이는데 HashMap으로는 Ajax통신이 되고 Model객체로는 안되는 이유를 모르겠습니다. 


이미 원했던 기능은 약간이나마 구현은해서 중요한게 아닐수는 있는데 계속 호기심이 생겨서요..


대체 어떤 차이가 있는건가요?? (_ _)


견문이 짧아 어이없는 질문일수도 있는점 양해부탁드립니다 ㅠㅠ



        @PostMapping("/signInCheck")
	@ResponseBody
	public Map<String, Object> doLogin(HttpSession session, MemberVO memberVO) {
		
		Map<String, Object> map = new HashMap<>();
		
		map.put("name", mapper.checkLogin(memberVO));
		map.put("isLogin", memberService.login(memberVO, session));
		
		return map;
			
	}

위는 구현한 코드이고 저기서 반환타입만 바꿔서 해보았었습니다.


0
  • 답변 4

  • dlalskwk2
    397
    2020-11-21 20:43:03

    ajax에서 보낼때

    data["name"] = $('name').val();  이런식으로 보내지않으세요?

    ajax에서 보내는 형식이 HashMap 형식이라 그런거같습니다


  • 한가
    95
    2020-11-21 21:07:00

    dlalskwk2 //


     <form class="was-validated" action="/sign/signInCheck" method="POST" name="loginForm"
                            style="width: 50%; margin: auto;">
                            <div class="form-group">
                                <label for="email">E-Mail</label>
                                <input type="text" class="form-control" id="email" placeholder="Enter E-Mail"
                                    name="member_email" required>
                                <div class="valid-feedback">입력완료</div>
                                <div class="invalid-feedback">입력칸이 비었습니다</div>
                            </div><br>
                            <div class="form-group">
                                <label for="uname">비밀번호</label>
                                <input type="password" class="form-control" id="pwd" placeholder="Enter Password"
                                    name="member_pwd" required>
                                <div class="valid-feedback">입력완료</div>
                                <div class="invalid-feedback">입력칸이 비었습니다</div>
                            </div><br>
                            <input type="button" class="btn btn-info" id="login" value="로그인">
                            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                            <a href="/sign/sign_up"><button type="button" class="btn btn-info">회원가입</button></a>
                        </form>



     $("#login").on("click", function () {
    
            var loginForm = document.loginForm;
            var userEmail = loginForm.member_email.value;
            var userPwd = loginForm.member_pwd.value;
            
            var queryString = $("form[name=loginForm]").serialize() ;
    
            if (!userEmail || !userPwd) {
                alert("아이디와 비밀번호를 모두 입력해주세요");
            } else {
                $.ajax({
                    url: "signInCheck",
                    type: "POST",
                    data: queryString,
                    dataType: "json",
                    success: function ({isLogin, name}) {
    
                        if (isLogin) {
                        	alert("안녕하세요 " + name + "님");
                            location.href = "/";
                        }
                        else {
                            alert("로그인에 실패하였습니다. 다시 시도해주세요.");
                        }
    
                    },
        		
        		error: function (request, status, error) {
                        alert("code:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error);
                    }
                });
            }
        });


    받는타입을 json으로 명시해도 보내는타입에 따라 또 다른건가여??

  • dlalskwk2
    397
    2020-11-21 21:30:07 작성 2020-11-21 21:31:05 수정됨

    json을 굳이 model로 받고 싶으면

    jsonview를 써야 하는걸로 알고있습니다


    jsonview는 저도 안써서 한 번 구글링해보심이..


    ModelAndView mav = new ModelAndView(); 
    mav.setViewName("jsonView"); 
    mav.addObject("key", "value");


  • 한가
    95
    2020-11-21 22:19:26

    dlalskwk2


    앗 키워드 감사합니다. 제가 알아볼게요 !

  • 로그인을 하시면 답변 을 등록할 수 있습니다.