다. Controller와 View의 연결 실습
1) controller.MainController.java
src/main/java/com/example/spring01/controller
2) views/include/header.jsp
contextPath 사이트 식별자다 하나의 서버에 여러 사이트가 돌아갈 때 식별자 필요,
물론 도메인이 다르게 할 수도 있지만.
3) views/include/menu.jsp
자바표현: <% String path = request.getContextPath(); %>
Jstl 표현: <c:set var="path" value="${pageContext.request.contextPath}" />
4) views/test/gugu.jsp
@RequestParam int dan
@RequestParam은 붙여주지 않아도 되지만
int dan는 단독변수가 아니라 앞의 페이지에서 넘어오는 값을 저장하는 변수라고 명명해줄 수 있다.
4) views/test.jsp
http://localhost:8080/spring01/test.do 에서의 urlname test
page test.jsp 에서의 pagename test
url name과 page name이 똑같다면 return type 을 void로 할 수 있다.
- view/test/doA
로그메시지에는 시간 / 클래스 / 함수명 / 라인넘버에 대한 정보가 표시된다.
16:27:53.296 [http-nio-8080-exec-51] INFO [MainController.class.doA:45]-
doA called...
- view/test/doB
리턴타입이 void이면 요청파라미터(test/doB)의 마지막이름으로 doB.jsp파일을 찾는다.
@RequestMapping("test/doB")
public void doB(Model model) {
logger.info("doB reCalled...");
}
- view/test/doC
객체에 값을 넘기는 방법
먼저 DTO를 만든다.
Model은 자료를 담는 그릇이다.
ModelAndView는 그릇과 주소를 가지고 있다.
map.put("product", new ProductDTO("books", 23500));
return new ModelAndView("test/doC", "map", map);
${map.product.name}, ${map.product.price}
map속에 product 변수에 객체를 담았다.
ModelAndView는 값을 하나밖에 못 보낸다.
map에서 꺼낼때는 '맵변수명.객체명.변수'로 호출한다.
- view/test/doD
리다이렉트(페이지를 다른 곳으로 보낸다). 데이터는 못 보낸다.
return "redirect:/test/doB";
그런데 forward는 주소가 바뀌지 않는데 (예 http://localhost:8080/spring01/test/doA)
redirect는 주소가 변경된다.
클릭으로 요청주소(test/doD)를 보내면 다시 요청(/test/doB)을 보낸다.
리다이렉트에 대한 요청처리도 해주어야 한다.
주소는 http://localhost:8080/spring01/test/doB 로 바뀐다.
- view/test/doF
비동기적 방법(AJAX)으로 처리
리턴타입이 데이터를 호출한 곳으로 보내준다.
클래스(Controller)를 하나 정의하고
javascript를 추가하고
라이브러리가 필요하다. JSon data를 보내기 위해 pom.xml에 추가한다.(jackson-databind)
ajax에서 result는 String 만 읽을 수 있다.
객체데이터(DTO)를 json형식의 String 값으로 바꿔줘야 한다.
JUnit Test
테스트의 용도는 기능을 하나 완성할 때까지 시간이 많이 걸린다.
m-v-c 모두 만들어야 한다.
예) 회원관리 프로젝트를 만들때
Controller Service Model View 다 만들어야 하는데
view가 없는 상태에서도 Controller만으로 테스트가 가능하다는 이점이 있다.
'프로그래밍 > JAVA & SPRING' 카테고리의 다른 글
spring 5강 Oracle과 mybatis 연동 실습(회원 목록,등록,수정,삭제) (0) | 2020.06.07 |
---|---|
[기타] [빵형] 코드로 배우는 스프링 (0) | 2020.06.07 |
[LifeSoft] spring 1강 Spring Tool Suite 4 설치 및 테스트 (0) | 2020.06.07 |
Servlet/JSP로 사용자 관리 시스템 구현하기 과정 (0) | 2020.06.07 |
MyBatis 프레임워크 1 - MyBatis Getting Started (박재성) (0) | 2020.06.07 |