컨트롤러는 두가지가 있다.
Front Controller
과 POJO
(프론트 컨트롤러가 해야할 일을 대신해주는)
POJO
클래스에서는 @Controller
을 붙여야 POJO
로 인식하고 url
을 통해서 요청이 들어오게 하기 위해서는@RequestMapping
를 달아줘야한다.
RequestMapping
아래있는 메소드는 요청이 들어왔을때 처리하는 메소드가 된다.
HandlerMapping class
가 @RequestMapping
읽어서 처리하게 된다.
jsp
를 만들때는 webContent
폴더가아닌 복잡하게 아래 내려가서 views
안에다가 만들어야 한다.
Spring
에서는 왜 복잡하게 만들까?
기존에는 jsp
를 만들면 WebContent
에다가 만들고 jsp
부터 바로 시작했다.
위에 보이는 방식으로 말이다.
그렇게 되면 브라우저에서 Controller
를 요청하지 않고 View
인 jsp
를 바로 실행하게 되는 식이 된다.
위처럼 하게 되면 FrontController
를 거치지 않고 바로 실행하는 결과가 된다.
그러므로 Spring
의 흐름을 지키기위해서 무조건 Frontroller
를 거치게 만들어 줘야한다.
바로 View
를 요청하지 못하게 하는 것이다.
WEB-INF
아래에 만들게 된다면 브라우저에서 바로 View
로 가는 것을 막아줄 수 가 있다.
WEB-INF
은 보안 디렉토리 이기때문에 브라우저에 나오면 안된다. (접근자체가 불가능하다.)
그렇게되면 컨트롤러를 무조건 거쳐야 한다.
결론은 WEB-INF
에다가 jsp
를 만드는 순간 부조건 FrontController
를 거쳐 POJO
를 통해 jsp
가 실행되게 된다는 말이다.
https://www.w3schools.com/ <- 링크로 접속한다
html
과 CSS
를 좀더 이쁘고 쉽게 제공하는 템플릿 같은 사이트는 아래로 접속하면 된다.
https://www.codecademy.com/learn/learn-bootstrap <- Learn Bootstrap
BS Panels
선택해서 Panel Heading
디자인을 선택한다.
Try it Yourself
로 들어가서 테스트를 해볼 수 있고 소스코드를 가져 올 수 있다.
이렇게 손쉽게 이쁜 디자인으로 적용완료 할 수 있다.
테이블 테그 생성 후 class
에 table
넣는다.
추가로 class
에 table-hover
과 table-bordered
를 주면 마우스 올렸을때와 칸 디자인을 입힐 수 있다.
자세한 사항은 부트스트랩 홈페이지에서 확인이 가능하다.
kr.smhrd.dao
패키지와 게시판 정보를 가질 객체 BoardVO
클래스를 만들어준다.
BoardVO
는 다음과 같이 작성을 한다.
안에 멤버변수에 접근하고 싶지만 private
로 막혀 있다 그래서 우리는 getter
, setter
메소드를 만드는데
getter
, setter
을 일일이 만들기가 너무 귀찮고 코드가 길어진다.
그래서 우리는 getter
과 setter
을 자동으로 만들어주는 라이브러리를 사용할 것이다.
그렇게 해주는 라이브러리는 바로 lombok api
이다.
이렇게 POJO
에서 VO
를 만들어서 List
에 담아줬다 (List
타입은 확장성을 위해) 그럼 이 List
를 어떻게 전달할까?
그래서 우리는 Request
객체 안에 데이터를 넣어서 포워딩 방식으로 데이터를 전달 할 것이다.
그럼 request
객체는 어떻게 만들어야 할까?
지금처럼 메소드 옆에 매개변수를 작성하면 메소드 호출시 request
객체가 매소드 매개변수로 넘어온다.
그럼 아래에서 request
객체 안에 데이터를 저장할 수 있다.
jsp
에서 먼저 넣어놨던 내장객체인 request
객체 안에 있는 데이터를 먼저 꺼낸다.
그다음 꺼내고 싶은데서 꺼내서 사용 할 수 있다.
(물론 EL & JSTL
을 배웠다면 더 편하게 꺼낼 수 있다.)
추가 이렇게도 가능하다.
Spring
에서는 데이터를 전달할때 Spring
전용 저장공간인 Model
이라는 Class
가 존재한다.
거기에다가 저장해서 전달한다.
그런데 가장 중요한 점은 Controller
에서 jsp
로 데이터를 보낼때는 객체바인딩을 통해서 전달한다는 것이다.
Java
언어를 배워서 Spring
을 사용할 때에 처음 초기 세팅을 하는것이 가장 어려웠던 반면
내용과 관리적인 측면에서는 더 수월하고 쉬워서 좋다.
이제 초기적인 세팅은 거의 끝났다.
앞으로는 좀 더 업데이트 적인 측면을 다룰거 같다.