우당탕탕 개발일지
65일차_Spring MVC(2) & Spring Project(1) 본문
요청 응답 관련 설정
@ResponseBody
반환값을 단순한 문자열로 인식할 수 있도록 도와주는 어노테이션
1. @ResponseBody 사용 X
Spring에서 String 반환값을 단순한 문자열이 아닌 view 파일 이름으로 인식
2. @ResponseBody 사용 O
@ResponseBody 를 사용하면 Spring Framework가 String 반환값을 단순 문자열로 인식
@RequestMapping 한글 깨짐
한글 깨짐
@RequestMapping 에서 produces = "text/html; charset=EUC-KR" 를 사용하면 한글이 안 깨진다.
[ Spring Framework 실습 ]
예제1: 다양한 방법으로 Data 주고 받기
프로젝트명: Chapter06_1
@Controller
SumController.java
클라이언트의 데이터를 받는 5가지 방법
1. HttpServletRequest 사용
결과 화면
2. @RequestParam 사용
결과화면
3. 예외 처리
@RequestParam((required = false, defaultValue = "0")
- 데이터가 없을 경우, 0 으로 초기화
결과화면
매개변수가가 너무 많을 경우
4. Map 사용
매개변수
- @RequestParam Map : 클라 -> 서버
- ModelMap : 서버 -> 클라
5. DTO 사용
매개변수
- @ModelAttribute DTO : 클라 -> 서버
- 클라에서 보내는 name 속성과 DTO에서 받는 필드변수명이 동일하여야 받아 올 수 있다.
- ModelMap : 서버 -> 클라
예제2: 예제1 프로젝트에서 성적 프로그램 추가
프로젝트명: Chapter06_1
@Controller
input.jsp 파일에서 name 속성과 DTO의 필드변수명이 동일한 것을 알 수 있다.
결과 화면
[ Spring MVC Project 실습 ]
프로젝트 생성 화면
프로젝트명: SpringProject
버전
- Java: jdk-11
- Tomcat: 9.0
- Spring Framework: 5.3.37
기술
- Back: Spring Framework
- DB: MyBatis(MySQL)
- Front: JSP
1. 기본 설정
URL 주소 변경
DispatcherServlet 등록
web.xml
요청 url 형태: Spring/~~
DB 설정 파일
해당 위치에 있어야 java 파일에서 경로를 읽을 수 있다
main 아래의 resources 폴더는 java 관련된 자원이 위치한다.
- 경로: src/main/resources
파일 목록
- mapper
- db 연결정보
- mybatis 설정 정보
resources 폴더가 webapp 아래에 있는 것도 있다.
이 폴더는 web과 관련된 자원파일을 위치하여야 한다.
위의 main 폴더 아래의 resources 폴더와 헷갈리면 안된다...!
2. 코드
- SpringConfiguration.java
- 목적: DB 연결 관련 설정
- @Configuration
- UserController.java
- user 관련된 요청 URL 처리
- @Controller
- UserDTO.java
- user DTO
- UserServiceImpl.java
- user 관련된 비즈니스 로직 처리
- Interface UserService
- @Service
- UserDAOImpl.java
- user 관련된 DB 처리
- Interface UserDAO
- @Repository
SpringConfiguration.java
Interface UserService는 빈으로 등록할 수 없다.
하지만 @Autowired 어노테이션을 통해 의존성 주입이 되고 있다.
인터페이스인 UserService에 자동으로 값이 초기화될 수 없는 상황이다.
이때 Spring이 자동으로 Interface UserService의 구현체(Class) 중에서 빈으로 등록되어 있는 클래스로 주입하게 된다.
해당 코드에서 구현체는 UserServiceImpl 클래스임으로 userService에는 UserServiceImpl 객체가 주입된다.
[ Interface가 의존성 주입이 가능한 원리 ]
- Interface는 빈으로 등록 X & 의존성 주입 불가능
- Interface의 구현체를 찾음
- 구현체가 1개이며 Bean으로 등록되어 있는 경우 의존성 주입 가능
- 구현체가 2개 이상이면 @Qualifier("구현체 클래스명") 을 통해 구현체 지정하여 의존성 주입
- 조건에 맞는 클래스로 InterFace에 의존성 주입
결과화면
'비트캠프 > 이론 및 정리' 카테고리의 다른 글
68일차_Spring Project(4) File Upload: Back (1) | 2024.10.14 |
---|---|
66일차_Spring Project(2) User (0) | 2024.10.10 |
64일차_MyBatis & Spring MVC (0) | 2024.10.07 |
63일차_AOP & JDBC (방법 3가지) (1) | 2024.10.04 |
61일차_DI (Dependency Injection) (1) | 2024.10.01 |