기초적인 컨트롤러 생성 실습
1)리턴 타입: void
현재 메서드의 리턴타입이 void인경우 현재 경로에 해당하는 JSP파일 실행
※ Mapped = 서블릿이 셋팅되어있다.
2) 리턴타입: String
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package org.zerock.web; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class SampleController2 { private static final Logger logger = LoggerFactory.getLogger(SampleController2.class); @RequestMapping("/doC") public String doC(@ModelAttribute("parameter") String parameter) { logger.info("doC called........................"); return "result"; } } |
@Requestmapping("doC"): URI 가 '/doC'인 경우에 동작
@ModelAttribute("parameter")
1)parameter'이름의 파라미터 문자열로 처리
2)자동으로 해당 객체를 뷰까지 전달
doC()메서드의 return값
1) 이동할 뷰 의미
2) jsp파일 이름
3)/WEB-INF/views/ 아래에서 찾음
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <span>Hello ${parameter}</span> </body> </html> | cs |
3) Model 객체 이용
만들어진 결과 데이터를 전달하는 경우-스프링 - MVC의 Model객체를 이용
Model 클래스: 스프링 기본 제공 클래스
public String doD(Model model) : model 객체 받음
model.addAttribute(product)
model객체에 product 객체 담아 뷰에 전달
1) addAttribute(이름,객체): 해당이름으로 객체 사용
2) addAttribute(객체): 해당 객체의 클래스의 앞글자를 소문자로 작성하여 객체 사용
단축키
소문자 변경: Ctrl + Shift + Y
대문자 변경: Ctrl + Shift + X
2)
3)
1 2 3 4 5 6 7 | @RequestMapping("doZ") public String doZ(@RequestParam String msg, ModelMap model) { logger.info("doZ"); model.addAttribute("msg", "z-" + msg); model.addAttribute("sample", "hello?"); return "result"; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <span>${productVO.name }</span> <span>${ProductVO.price }</span> </body> </html> | cs |
4) Redirect 사용
1 2 3 4 5 6 7 | @RequestMapping("doD") public String doD(Model model) { ProductVO product = new ProductVO("Sample Product", 10000); logger.info("doD"); model.addAttribute(product); return "productDetail"; } | cs |
JSP로 구현하기
doY로 요청하였을 때 'doC?msg=This is the Message!! with redirected by doY' 리다이렉트 한다.
1 2 3 4 5 | @RequestMapping("doY") public void doY(HttpServletResponse res) throws Exception { logger.info("doY"); res.sendRedirect("doC?msg=This is the Message!! with redirected by doY"); } |
console에도 doY로 갔다가 doC로 온 것을 확인할 수 있다.
실제 doC를 요청하면 -doY로 끝나는 문구는 뜨지 않음
(redirect시에만 -doY로 끝나는 문구 뜸)
※ 원래 JSP에서 HttpServletResponse객체를 이용하여 만들었는데 이를 스프링에서는 redirect를 사용한다.
5) JSON 사용
1. mvnrepository에서 Jackson Databind 검색
2. 메이븐 추가
3. Alt + F5 로 메이븐 업데이트 후 jackson 라이브러리 생성 확인
4. 소스 작성하기
1 2 3 4 5 6 | @RequestMapping("/doJSON") public @ResponseBody ProductVO doJSON() { ProductVO vo = new ProductVO("샘플상품",30000); return vo; } | cs |
5-2) AJAX 사용하기
ajax는 사실 xml로 return해야하는데 jQuery를 이용하면 json으로 받아올 수 있다.
실제 실무에서도 json을 더 많이 씀
1. jQuery 사이트로 들어가서 jQuery 스크립트를 가져온다.
Ctrl + U (페이스 소스 보기) 클릭
해당 스크립트 복사
2. JSP 파일에 JSON 코드 추가하기
1) jQuery 스크립트 추가
2) jQuery 사이트에서 document-API : aJax를 검색하여 알맞은 형식을 가져온다.
ex) 맨 마지막꺼
3. 복사한 ajax 스크립트를 알맞게 변경
1 2 3 4 5 6 | @RequestMapping("/doJSON") public @ResponseBody ProductVO doJSON() { ProductVO vo = new ProductVO("샘플상품",30000); return vo; } | cs |
'Develop > Spring' 카테고리의 다른 글
[설정]스프링 설정파일 위치 바꾸기 (0) | 2018.08.15 |
---|---|
[4.스프링+MyBatis_MySQL의 설정]4.DataSource 설정 (0) | 2018.08.15 |
[5.모델2방식과 스프링MVC]2.스프링MVC의 컨트롤러-1 (0) | 2018.08.13 |
[5.모델2방식과 스프링MVC]1.모델2패턴의 이해 (0) | 2018.08.13 |
[4.스프링+MyBatis_MySQL의 설정]5.MyBatis연결 (0) | 2018.08.13 |
댓글