본문 바로가기
학원수업/3월

03/14 국비학원 개발자 과정 73회차 - Spring, React, Quill

by 코딩마스터^^ 2023. 3. 14.

React와 Spring 연결

스프링 흐름 정리

https://docs.google.com/spreadsheets/d/1Lb_ghdLZ-IM8-KKK1I2RYn1ZO_84USFuai6Vz4_Xu8U/edit#gid=869563088

오랜만에 Spring Boot사용하기

https://newstartjoah.tistory.com/124

 

 

Spring boot프로그램 메이븐방식의 mblog-1을 만들어준다.

여기서 많은것을 선택하는것은 권장하지 않는다.

수동으로 하나씩 필요한것 추가하는것이 일반적. 자동으로 하면 모르는 코드가 추가될수도...

 

패키지들을 추가하는데 시간이 걸린다. 만들고 좀 기다리자.

버전 빼주기-충돌 가능성때문

그다음 메이븐 업데이트 프로젝트 해준다.

포트번호 8000으로 설정하기

 

기존 톰캣은 지워준다.

 

매핑 어노테이션

https://mungto.tistory.com/436

 

[Spring] @RequestMapping이란?

우리는 특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다. 이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다. @RequestMapping에서 가장

mungto.tistory.com

스프링과 포조의 차이점

1. web.xml이 없다.

배치서술자-deploymentdescriptor

 

2. 서블릿 등록하기

@WebServlet("XXX.do")

 

스프링과 포조의 공통점

1. Http프로토콜을 기본적으로 사용한다.

-> 서블릿이 제공

 

 

 

request.getParameter("mem_id");

request.getParameter("mem_name");

pojo 1-3버전부터 HashMapBinder를 사용했었다.

 

파라미터가 컬럼이다.

이 파라미터가 반복되기때문에 HashMapBinder로 묶고 while문을 돌렸다.

이 이름을 가져오는것이 n개만큰 된다.

getRequestParameterNames()를 사용함.

Enumerater는 Map안에 데이터가 있는지 없는지 구분한다.

 

포조에서 위의 것들이 Spring에서  RequestParam으로 바뀌었다.

타입이 더 많을 수 있다... 그래서 Map에담는다. 재사용을 위해서이다.

insert into 테이블명 values (?,?,?,?....컬럼명)

 

req.getParameter(  )--->듣기

req를 가져오려면 Servlet이 되어야한다.

서블릿-FrontMVC1->ActionServlet->ActionSupport

서블릿에 의존적인 프레임워크이다.

req, res없이는 페이지 이동도 못한다.

요청객체와 응답객체가 있어야 듣기와 말하기가 가능하다.

?문제점제기?

의존적=독립X=단위테스트를 못함

말도안돼..

 

그래서  Spring 4.0부터 요청객체와 응답객체가 없어도 웹 서비스가 가능하게 되었다.

@ 어노테이션을 지원한다.

 

DispatcherServlet을 사용(스프링에서 제공하는 클래스. 서블렛)-3.0버전까지

4.0부터는 완전한 req,res로부터 독립

depricated-향후에는 지원 안할 수 있다. 딴거써라.

 

더이상 web.xml이 필요없다.

@Controller

@RestController

 

Dispatcher servlet에 등록

Dispatcher가 web.xml에 있어서 @어노테이션으로 매핑이 가능하다!

더이상  web.xml필요없다.

@Controller-화면출력용

@RestController-데이터셋 출력-String-text/plain

 

1.컨트롤 계층-연결만 해줌, 응답페이지에대한 결정

어노테이션 컨트롤러가 화면으로 출력이 나가도록 한다.

화면-html

forward:board/boardList ---->주소가 안바뀐다. 값이 유지된다. 쿼리스트링에 입력한것들 유지가능

redirect:board/boardList------>주소가 바뀐다. 유지가 안된다.

 

forward와 redirect는 scope에서 page 이다.!!!!

ModelAndView는 둘다 없다. 지금은 안쓴다. 이제는 Model, ModelMap->UI패키지-화면처리용

 

-scope

request->요청이 있는한 유지됨

application->쓰면망함. 계속유지. 죽는날까지

page->그 페이지 안에서만 유지. 망합니다.

session->시간을 설정해서 유지하게 할 수 있다. 

 

Model, ModelMap은 어노테이션이 아니다.

파라미터이다. 객체를 주입받음

마치 톰캣의 req, res처럼 파라미터로 주입을 해줌.

 

application.properties에 .jsp를 등록했기때문에 forward마지막에 .jsp안붙인다.

포조에서는 xml에 했었다. 이제는 자바코드로 한다. @ 어노테이션

 

컨트롤러 계층

<step1> void doGet() / void doPost()

<step2> ActionForward doServisce(req, res):오버라이딩 아님

<step3> String execute(req, res):인터페이스 오버라이딩. 제약이 생김. 제어역전의 시작이다.

String 메소드 이름 변함(req, res)

XXXController 가 더이상 서블릿이 아니다.

 

2.모델계층

컨트롤러다음 모델계층

 

포조에서는 스프링 따라하면서 viewResolver를 만들었다.

Spring에서 InternalResolveViewResolver를 제공한다.

 

 

테스트 시나리오

1)board/boardList.jsp

2)board/boardList

Q. 둘중에 BaordController를 경유하는 테스트는 무엇?

Q. 둘중 요청 URL과 출력된 URl이 다른 테스트는 무엇입니까?

 

1)은 컨트롤 클래스를 경유하지 않음

위와같이 테스트하는것은 컨트롤 클래스를 경유하지 않습니다.

webapp폴더 아래에 board아래에 있는 boardList.jsp페이지를 요청하는 것임

 

2)board/boardList

컨트롤 클래스를 경유하는 경우임

응답페이지를 webapp에서 찾을 지 혹은 WEB-INF/views/아래에서 찾을지 아직은 결정 할 수 없는 상태임

 

return "forward:board/boardList"

return "redirect:board/boardList"

return "board/boardList"

 

 

우편번호찾기 만들어보기

클래스를 추가해주고 Controller에 zipcodeList 메소드를 추가하였다.

Controller인터페이스를 상속받은 CommonController를 만들어 줬다.

오버라이든 모든 메소드를 다 하지만 zipcodeList만 사용한다. 그래서 비효율적이다. 스프링이 이런 문제점을 해결해준다.

 

 

댓글