Spring - 스프링의 MVC의 Controller (어노테이션)

Luna·2023년 3월 15일
0

EZEN

목록 보기
37/40

수업내용

복습

객체 자동 생성 어노테이션 -> bean
<context:component-scan base-package="org.zerock" /> -> 패키지 아래 쪽의 선언한 클래스

@Controller - URI 가지고 분기 = 실행 할 내용을 결정(메서드로 정의)
@Service - 데이터 처리
@Repository - DB 처리 -> mapper 형식 : xml, 인터페이스
@Component - 프로젝트의 구성
@Advice - 예외처리를 하기 위한 클래스 객체 생성
@RestController - URI 가지고 분기 (Ajax, 비동기통신 사용시) - REST 통신

REST : Representational State Transfer, 웹에서 데이터를 전송하고 처리하는 방법을 정의한 인터페이스. 네트워크 상에서 Client와 Server사이의 통신 방식 중 하나이다.

  • @Contoller 안에서 사용하는 어노테이션
    @RequestMapping(value="uri", method=method방식(GET,POST)) : 클래스 또는 메서드 위에 붙일 수 있다.
    @GetMapping("uri") - GET방식, RequestMapping 대신 쓸 수 있다.
    @PostMapping("uri") - POST방식, RequestMapping 대신 쓸 수 있다.
    :: mapping을 중복 적용하면 안된다. 컴퓨터가 어디로 갈 지 방향을 잡지 못함.

  • DI (Dependency Injection) 의존관계 주입
    흐름 : Controller -> Service -> mapper
    DI : mapper 생성 - > Service 생성 -> Contorller
    @Inject , @Autowired, @Setter : DI를 적용할 때 사용하는 어노테이션
    2개 이상의 타입의 객체가 존재하는 경우 - @Qualifier(구분자)

@Log4j : 로그 출력을 위한 어노테이션, 클래스 위에 붙여서 사용.


chapter6 - 스프링의 MVC의 Controller

  • MVC
    M : Model - 처리된 데이터가 어떻게 흘러가는지 -> DFD를 만들어서 확인 할 수 있음.
    V : View - JSP. 데이터가 처리 된 후의 화면에 보이게 위함. EL객체 사용. 데이터 공유를 시키기 위해서 Model을 사용 -> parameter(request포함)로 전달 받음.
    Model & View : contoller에서 생성해서 리턴. view정보와 model정보가 같이 있다.
    C : Controller - 데이터를 수집하고 View로 보낼건지 DB로 보낼건지 결정.

p.132 리스트, 배열처리 (장바구니)

public String delete(@RequestParam("no")ArrayList<Long> no)

p.135 @InitBinder

Date객체에 객체가 1개만 넘어갈 때

p.138 @DateTimeFormat

writeDate, updateDate, StartDate, EndDate등 여러개 넘어갈 때

p.143 Controller의 리턴타입

6.5.5 파일업로드 처리 p.149

<form action="write.do" method="post" enctype="multipart/form-data">
	제목 : <input name="title"><br/>
	첨부이미지 : <input name="files" type="file"><br/>
	첨부이미지 : <input name="files" type="file"><br/>
	첨부이미지 : <input name="files" type="file"><br/>
	첨부이미지 : <input name="files" type="file"><br/>
	첨부이미지 : <input name="files" type="file"><br/>
	<button>등록</button>
</form>
public String write(String title, MultipartFile[] files) {
		
	log.info("title: "+title);
	for(MultipartFile mfile : files) {
		// 데이터가 있는것만 log에 찍기
		if(!mfile.getOriginalFilename().equals("")) {
		log.info("-------------------------------");
		log.info("name:" + mfile.getOriginalFilename());
		log.info("size:" + mfile.getSize());
		}
	}
	return "redirect:list.do";
}

files : byte 단위 파일을 가지고 있는 정보 : Controller에서 사용
fileNames : 넘어온 파일의 저장된 이름 : DB에서 사용

6.6 Controller의 Exception 처리

@ControllerAdvice


chapter7 - 스프링 MVC 프로젝트의 기본구성

7.1.1 패키지의 Naming Convention

복습 할 내용

0개의 댓글