본문 바로가기
멀티캠퍼스/Spring

230907 (목)

by 세크레투스 2023. 9. 7.
반응형
SMALL

- 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:/ 처리를 해줘야 함.

 

반응형
LIST

'멀티캠퍼스 > 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