관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[Spring] 스프링부트 컨트롤러 (Springboot controller) 본문

웹/Spring Boot

[Spring] 스프링부트 컨트롤러 (Springboot controller)

막무가내막내 2020. 2. 14. 17:22
728x90

 

 

 

@RequestMapping

=> value에는 url, method는 get, post 같은 HTTP 프로토콜 방식을 써주면 된다.

즉 클라이언트가 URL로 서버에 요청을 하면 해당 URL을 맵핑하고 있는 메소드가 해당 요청을 처리하고 응답해준다고 보면 된다.

 

@ResponseBody

=> HTTP 의 body를 읽는데 필요하다. ajax로 통신할 때 json 메세지를 읽는데 필요하여 사용했으며, ajax에게 map형태로 간단한 성공 여부를 알려주기위해 return type을 Map 타입으로 하였다.

 

@RequestParam

=> 타임리프의 input의 name이나 Get방식 url의 키값같은, 즉 클라이언트로부터 요청받은 키의 이름과 매핑하여 컨트롤러에서 사용할 수 있다.

@ModelAttribute

=> 위와 반대로 하나의 키값에 해당하는 값을 받는게 아니라 모델로서도 받을 수 있다. 예를들어 타임리프 form에서 <form>의 name에 매칭하여 객체의 값을 한번에 담아올 수 있다. (이 때 form 태그 안의 input태그들의 name이 객체의 변수명들과 맞아 떨어져야한다.)

 

ModelAndView

=> ModelAndView는 응답으로 반환하는 클래스인데 이름 그대로 모델과 뷰 정보를 모아서 관리하는 클래스라고 이해하면 쉽다. MVC의 Model과 View로 데이터를 관리하는 모델과 화면 출력과 관련된 뷰를 한번에 처리한다.

 

HTTPServletRequest

=> 세션을 얻는데 사용하였다.

 

@PathVariable

=> 말 그대로 경로 변수를 넣는데 사용한다. 예를들어 내 블로그 포스팅처럼 https://youngest-programming.tistory.com/173 뒤에 173 이런데에 사용하고 보통 select(Get요청) 용으로 사용된다.

 

 


[참고]

@RequestBody  

 - HTTP 요청 몸체를 자바 객체로 전달받음

 - HTTP 요청의 body 내용을 자바 객체로 매핑하는 역할

 

@ResponseBody 

 - 자바 객체를 HTTP 응답 몸체로 전송함

 - 자바 객체를 HTTP 요청의 body 내용으로 매핑하는 역할

출처: https://lee-mandu.tistory.com/242?category=633568 [개발/일상_Mr.lee]

 


코드를 최대한 생략하여 간단하게 정리해봤다.

 

mv, get

@RequestMapping(value = "go_page", method = RequestMethod.GET)
	public ModelAndView goPage() {

		ModelAndView mv = new ModelAndView();
		mv.setViewName("pages/go_page2");
		mv.addObject("key1", "value1");
		mv.addObject("key2", "value2");
		
		return mv;
	}

mv,post

@RequestMapping(value = "go_page", method = RequestMethod.GET)
	public ModelAndView goPage(@RequestParam(value = "raw_id", required = true) String rawId,
			HttpServletRequest request) {
		
		ModelAndView mv = new ModelAndView();
		mv.setViewName("pages/homepage");
		mv.addObject("key", "value");
		mv.addObject("raw_id", rawId);
		return mv;
	}

 

map , post , request(session), @responsebody

	@ResponseBody
	@RequestMapping(value = "do_page", method = RequestMethod.POST)
	public Map<String, String> doBioprojectTemporarySave(@ModelAttribute("regist_form") RegistModel registModel,
			HttpServletRequest request) {
            
		
		Map<String, String> map = new HashMap<>();
		String userId = (String) request.getSession().getAttribute("user_id");
		registModel.setUserId(memberId);
        
        try {
        	String rawId = registDatabase.insertRegist(connection, bioProjectModel);
			map.put("raw_id", rawId);
            map.put("success", "true");
		} catch (IOException e) {
			e.printStackTrace();
			map.put("success", "false");
		}
    	return map;
	}

=> Map 리턴타입 컨트롤러는 ajax와 통신할 때 사용해주었다. 밑은 저의 스프링부트에서 사용했던 ajax 예시 사이트입니다. (요약해서 올린겁니다.) 

https://youngest-programming.tistory.com/173

 

[javascript] ajax 예시 정리

var page_form = $("#page_form").serialize(); $.ajax({ type : 'POST', url : 'do_page', data : page_form, dataType : 'json', success : function(json){ if(json.success == "true"){ alert("제출 성공"); }..

youngest-programming.tistory.com

 

 

 

 

pathvariable

@RequestMapping("/page/{num}")
public String page(@PathVariable String num){
	
}
728x90
Comments