[DAY61] 복습, 3장(나머지)

NA YE SOM·2023년 10월 4일

Spring MVC 복습


-> Legacy 라기 보다는 spring mvc 패턴을 배우는것
-> 다음단계가 spring boot 임



-> 프로젝트의 이름을 archifact의 id로 부르고있음


3장의 pom.xml의 properties 부터 끝까지 복붙 -> 4장 pom.xml

Maven update


dynamic project에서 버전 맞추는 방법은 이것(java 11)



controller 지우기



-> 폐급

home.jsp 지우기



-> 폐급





host하고 port번호까지는 생략가능함


-> custmorizing 해볼것











-> jsp 검색 -> main.jsp로 고치기(custormizing하는날이라서)






-> 특정 jsp실행하겠다고 선택해서 실행 x





-> 이 경로는 이 파일을 열어주시오

-> /라고 적어주면 contextpath 경로를 의미한다

★(암기)/라고 적어주면 contextpath 경로를 의미한다


@Controller 붙어있으면 servletContext가 controller로 인식함


-> run as server









app04.vo(valueobject 객체저장용)

테이블이 없어서 칼럼 참고하면서 만들필요 x



-> 3가지방법이 있으니 3개 실습하기





-> 작성완료 후 확인할 것 밑에!!




reuqestParam 의 좋은점 : 생략도 가능하다



★ 파라미터 처리방법 3가지

Attribute : 저장방법


-> jsp sevlet에서 배웠던 방식
-> 저장능력을 갖춘 request를 쓰는것
-> 해당 data가 전달되는것을 볼 수 있었음(더이상은 spring에서 사용 x)





model은 forwarding할 데이터 select에서 쓴다






-> forwarding한 데이터 객체로 저장해서 쓰는것




-> 타입이름으로 저장이된다 (articleVo라는 이름으로 확인)






-> vo라는 이름으로 저장했으니 vo로 확인됨

세션에 저장하는 방법 생략!

03

한글깨졌던 부분 연습하기

redirect : insert/update/delete



-> forward는 jsp로 이동함

redirect는 mapping으로 이동하는것(주소로 이동하는것)

★redirect는 jsp로 이동하지 않는다

★redirect는 mapping으로 이동한다

-> mapping으로 이동, jsp로 이동하는거 아님


-> 한글이 깨질것
-> 안깨지게 잡아줘야함


-> 원래 controller에서 했었음
-> jsp에서는 가능했으나 spring에서는 불편함

-> 불가능한건 아닌데 코드가 method마다 들어가야함

-> jsp처럼 하려면 setCharacterEncoding을 여러번 해야함
-> 해결 방안 : 공통작업으로 볼 수 있음(여러가지 방법으로 공통로직을 해결할 수 있음)


-> filter이용(controller돌기전에 filter먼저 돌아줌)


-> controller가기전에 한번에 처리하는방법있음



-> contextPath가 동작하는 모든 경로에서 동작하시오(무조건 동작해라)





제목만 처리 작성완료



-> spring에서는 이걸쓰라고 만들어져있음

-> 3장 MVC 14 페이지에 있음


-> 재실행시 꺠지지 않고 한글로 제목을 보내고 감


-> web xml의 인코딩 필터







-> 특정 js로 넘어가게끔 넘기는 방식

faq





-> 2번에 걸쳐서 redirect되는 방법(실전이라면 추가작업이 진행될것)

redirect는 request나 response의 전달이 없는 방식 -> redirect임(값이 전달되지 않음)






-> 전달이 된다면 보임

제목이 입력 1 , 입력 x : 0

-> redirect는 model의 전달이 없음

-> 여기다가 추가하는 방법이 있음



-> 3가지 방법 중 한가지 선택함


-> 1과 0을 전달함
-> 서비스와 다오가 없어서 임의로 설정함
(title이 비어있으면 0이 반환되도록 함)-> 목록으로 넘기는것이 목적임


-> js servlet의 스타일 같은것


제목 빼고 작성완료 누르면 실패

제목이랑 내용 쓰고 작성완료 누르면 성공함

-> add에서는 목록보기로 갈때 addResult 가지고 갈 수 있지만 그렇지 않을수도 있음



-> 필수 파라미터(addResult가 안보인다 없음)



-> 정수로 바꿀 것이 없다





-> 필수가 아니면 파라미터가 없으니까 -> string에 null이니까 아무것도 x

1.

2.

3.
addResult파라미터가 없다면

-> null


-> add와는 상관없는 상황이다

전달안된상황을 인식시키려면









-> addresult 병령이 없으면



-> 파라미터 받은거 model이 받아서 직접 배송

★(이걸 가지고 사용하기!)조금더 쉽고 새로운 방법(애초에 js servlet에서는 없는개념이었음)

Spring 버전으로 개선하기




-> 곧바로 전달가능

-> redirect할때도 값의 전달이 가능함


flash attribute -> 이쪽에서 redierct attribute쓸때 flash attribute써야 원하는 redirect attribute까지 속성전달이 가능함

-> spring1 나왔을때 개발자들이 많이 못씀
-> spring 1 기준보다 spring 2기준으로 개발된 것이 많음




-> 추가할게 없이 끝남





-> 2가지 버전으로 redirect처리하는 방법 연습했음

05_DI(dependency Injection)


pom.xml 은 property부터 복사하는것 !


-> homecontroller 삭제, home.jsp 삭제

IOC : 제어의 역전 : NEW의 권한을 Spring이 가져감(ioc container의 넣는방법 2가지 (1) bean 태그를 쓴다 (2) configuration annotation씀



-> Autowired 자동으로 ioc container의 bean을 자동으로 가져온다


-> controller를 배웠으니까 두명을 임의로 만들어서 정상적으로 동작하는지 보는것
-> 최정적으로는 하나만 쓸것(autoWried만 쓸것)

AutoWired만 배울것













-> ctrl shift 5







-> 값은 서비스임

controller는 service를 부를것/service는 dao를 부를것/dao는 실제 db작업을 할 것




->boardlist에 데이터 하나씩 빼서 부를 이름



-> 제목,작성자 제목,작성자 가져와서 실제 뿌리듯이 등록함





-> inject에 자르는 등록되어있음





-> autowired spring 버전

1) 필드레벨부터 할 수 있음

-> 타입이 일치하는것을 가져온다


-> 둘다 일번 방식으로 확인하기


-> 기본적으로 타입이 일치할 것임


-> nullpointexcpetion 떴을때





-> 매개변수로 가져오기





-> 처음 주입되는공간 : 매개변수임(생성자하고 똑같음)

-> set board service붙여야만 만들어질 수 있음


-> setter형식이라고 이름지은건 그이유때문임


-> autoweird 붙이면 오류가 남

2번째 DI는 SerivceImpl 가서 하기!


1) boardDao를 springcontainer에 넣는다




-> root context에 bean 태그를 넣고


-> 같은 이름 권장


-> bean태그를 만들면 singleton으로 만들어짐

-> dao의 singleton문제도 자동으로 해결됨

profile
개발자 velog

0개의 댓글