- MyBatis가 운영하는 것 : Session,
- SQLSession을 만들기 위해서 하는 설정 : SQLSessionFactory
- MyBatis에서 하는 작업 2가지
* Interface 정의 : 서비스를 운영할 때 DAO를 인터페이스 타입으로 운영함.
** getPage(), getDetail(), create() 등...
* SQL문?
** @Select()
** @Insert()
** @Update()
** @Delete()
** xml 파일 -> 옛날부터 전통적으로 많이 써오던 기법 (XRM -Xml Relation Mapping)
- RootConfig.java
- Spring MVC 설정
- ServletConfig.java
WebConfig.java => web.xml을 대체하는 설정
2) Handler Mapping :
- "/list" : Listxxx
- "/update" : Updatexxx
3) POJO (Plain Old Java Object)
- 상속받는 것 없이 그냥 클래스만 만드는 것
4) Dispatcher가 Mapping에게 물어볼때 : HandlerMapping을 이용한다.
package org.galapagos.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sample/")
public class SampleController {
}
==> 요청 URL 중에서 "/sample/"로 시작하는 URL은 Controller가 담당한다.
5) @Log4j 어노테이션을 추가하면 log static 멤버가 추가됨.
<@RequestMapping의 변환>
1. @RequestMapping
- 수용할 HTTP method 설정
- GET, POST, PUT, DELETE 등
@RequestMapping(value="/basic", method={RequestMethod.GET, ReqeustMethod.POST})
- 설정하지 않으면 모두 허용
2. 메서드별 Mapping 어노테이션
- 일반적으로 한 가지 메서드로 매핑함
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
3. DTO : Data Transfer Object - 모델과 모델간의 데이터를 전달하는 목적으로 쓰이는 객체
- DTO 정의시 기본생성자, setter 가 반드시 필요하다.
- @Data 어노테이션에 의해서 getter, setter가 만들어짐.
- DTO는 스프링에 의해서 만들어짐 : IoC(Inversion of Control) - 제어의 역전
* DTO에 있는 객체중 하나를 호출안하면?
** String은 null, int는 0으로 표기됨.
* DTO에 없는 객체를 호출하면?
** 없는 객체이므로 아예 표기 자체가 안됨. -> 영향을 주지 않는다.
* DTO의 객체와 다른 타입으로 호출하면
** 400에러가 뜸.
- DTO를 쓰지 않고도 Controller에서 처리가 가능하다 => req.getParamter() 호출방식
- Handler Mapping : @RequestMapping, @GetMapping 이 등록되어 있음.
@GetMapping("/ex01")
public String ex01(SampleDTO dto) {
log.info("" + dto);
return "ex01";
}
=> SampleDTO dto : 이전에는 Command 객체라고 불렸지만, 지금은 Model 객체라고 불림.
==> request scope 에 자동으로 저장됨.
===> 속성명이 된 것은 데이터 타입, 캐멀케이스로 표기됨.
- @RequestParam()은 request scope에 저장되지 않고, el의 param객체로 접근할 수 있다.
<Controller의 파라미터 수집>
1. @InitBinder
- 파라미터 수집 -> binding 바인딩
- 자동 형변환 가능하면 변환 성공
- 자동 형변환이 불가능한 경우
* 날짜 문자열 -> Date 타입
* @InitBinder 형변환 규칙 설명
* SimpleDateFormat으로 문자열은 Date 타입으로 바꿀 수 있음.
* 더 간단하게는 @DateTimeFormat 어노테이션으로 바꿔줄 수 있다.
=> Date 타입에서 내가 지정한 형식(ex: yyyy-MM-dd) 이 아니라 다른 형식으로 입력하면 400에러가 남.
- core
* <c:set > </c:set>
* <c:if > </c:if>
* <c:forEach > </c:forEach>
- fmt
* <fmt:format />
<스프링 MVC의 Controller>
<Model이라는 데이터 전달자>
1. Controller 메서드의 매개변수로 Model 타입
- 컨트롤러에서 생성된 데이터를 JSP 에 전달
- Servlet에서 모델2 방식으로 데이터를 전달하는 방식
2. @ModelAttribute
- DTO 쿼리 파라미터는 자동으로 뷰로 전달됨.
- 기본 자료형 쿼리 파라미터는 뷰로 전달되지 않음.
- POST 처리후 반드시 redirect:/ 처리를 해줘야 함.
'멀티캠퍼스 > Spring' 카테고리의 다른 글
20230911 (월) (0) | 2023.09.12 |
---|---|
230908 (금) (0) | 2023.09.08 |
230906 (수) (0) | 2023.09.07 |
230905 (화) (0) | 2023.09.05 |
230904 (월) (0) | 2023.09.04 |