IT수업/STS3

IT 수업 19주차 (115) Bean, controller

워제하 2024. 4. 30. 10:52

 

< @Component을 통한 빈 등록 >

 

dto를 빈에 등록 하기 위해 root-context에 domain.dto를 적는다.

 

 

 

domain.dto 안에 새로운 클래스를 만든다.

 

 

컴포넌트로 등록시키기 위해 객체들을 작성한다.

 

 

root-context 에서 BeanGraph를 보면 personComponent가 생긴 것을 볼 수 있다.

 

 

 

DiTest.java에서 log.info로 personComponent를 출력해본다.

 

 

 

 

 

● get, post

이번에는 controller 안에 SimpleController.java라는 클래스를 새로 만든다.

 

그리고 컨트롤러를 작성한다.

 

그리고 빈을 확인해보면 simpleController가 생긴 것을 확인할 수 있다.

 

주소창에 t1을 적으면 t1을 확인 할 수 있다. t2도 동일하게 확인 할 수 있다. 

t1.jsp를 안만들어서 안보일 뿐 존재 확인 가능함

 

 

하지만 get t1과 t2는 확인이 되지만 post t1는 확인 할 수 없다.

그래서 post를 확인하기 위해 postman에 들어가서 window64bit를 다운받아준다.

 

회원가입 없이 사용하기 위해 lightweight API client를 클릭해준다.

 

먼저 Get 방식으로 보내본다.

 

그러면 STS의 콘솔창에 get이 출력되는 것을 확인 할 수 있다.

 

 

 

이번에는 post 방식으로 보내봤다.

역시 콘솔창에서 확인 할 수 있다.

 

 

 

 

컨트롤러를 테스트 해볼 것이다.

src/test/java에 controller 패키지를 새로 만들고 그 안에 controllerTests를 JUnit Test Case로 만든다.

 

컨트롤러 테스트를 위해 어노테이션을 붙여준다.

 

 

 

출력을 시키려고 하면 에러가 발생하게 된다.

 

 

 

에러를 해결하기 위해 tomcat9.0의 라이브러리 위치까지 간 후 주소를 복사해준다.

( C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib )

 

 

그리고 프로젝트에서 우클릭해 properties로 들어가 java Build Path를 선택한 후 Classpath에 Add Extenal JARs를 클릭해준다.


파일 주소창에 복사한 주소를 넣어 jsp-api.jar과 servlet-api.jar을 찾아 열어 준다.

 

 

그리고 다시 실행시키면 오류가 발생하지 않는 것을 확인 할 수 있다.

 

 

● MockMVC란

개발한 웹 프로그램을 실제 서버에 배포하지 않고도 테스트를 위한 요청을 제공하는 수단으로 GET, POST, PATCH, DELETE 등의 요청을 만들어 보낼 수 있다.

 

mockMvc를 추가 작성해주고 실행시킨다.

 

 

 

 

controllerTest.java 에서 simple/t1을 get으로 받아오는 코드를 작성한다.

isOk()는 응답 상태 코드가 200이면 정상처리 해주는 함수이다.

import 는 org.springframework.test.web.servlet.result.MockMvcResultMatchers. 로 해준다.

 

 

< 출력화면 >

 

 

model 안에 key1을 넣고 get t1을실행시키면 key1이 존재하지 않는다는 오류가 발생한다.

 

 

 

 

● Model

Model은 스프링이 지원하는 기능으로써, key와 value로 이루어져있는 HashMap이다.
Model의 .addAttribute()를 통해 view에 전달할 데이터를 저장할 수 있고

Servlet의 request.setAttribute()와 비슷한 역할을 한다.

 

- model 사용방법

1. Parameter를 통해 전달

 : @RequestMapping을 통해 매핑을 한 메서드의 파라미터로 Model 객체를 전달한다.
   model.addAttribute("key", value)를 통해 model에 값을 저장한다.
   Model은 Hashmap 형태를 띄고 있으므로, 추후 key 값을 통해 value 값에 접근할 수 있다.

 

2. view 파일에서 model에 저장한 값 불러오기

 : ${key 값}를 통해 접근할 수 있다.
  예시로 들면 key로 "username", value에는 @RequestParam을 통해 받은 변수 username을 넣었기 때문에,
${username}을 통해 변수 username에 접근할 수 있다.

 

 

해결하기 위해 SimpleController로 가서 get t1에 model을 만들어주고 그 안에 값으로 key1을 넣어준다.

 

그리고 실행하면 오류가 발생하지 않는 것을 볼 수 있다.

 

 

나머지들도 작성해본다.

 

 

 

 

 

 

 

 

참고 : https://m42-orion.tistory.com/119