[jsp 15] MVC - properties 파일 이용한 통합 controller 만들기
MVC
Model / View / Controller
✔ Controller (servlet) 요청을 받는곳
- doGet : get 방식 요청 처리 메소드
- doPost : post 방식 요청 처리 메소드
- service : 요청시 자동으로 호출되는 메소드
▸ GET/POST 요청 방식에 따라 doGet/doPost - init : 요청시 처음 한번만 실행 ▸ 생성자 느낌으로 미리 로딩시켜놓을것들 작성
▸ 서블릿 컨테이너는 처음 서블릿 실행할때 서블릿 객체 생성, 이후 요청은 이전에 생성한 객체 그대로 사용
▸ 웹 컨테이너가 서블릿 객체를 생성하고 init() 메소드를 호출하는데 이를 '서블릿 로딩' 이라함
▸ init() 메소드를 이용해 필요한 초기화 작업 수행함
▸ init()은 HttpServlet 클래스의 부모인 GenericServlet 클래스에 정의된 메소드
▸ init(ServletConfig config)형태로 외부로부터 보내지는 초기 설정값을 ServletConfig 타입으로 받아주게 설계 되어있음
▸ GenericServlet inti() 메소드 기본 구조
▸초기 파라미터 설정값이 있으면 위에 있는 init() 오버라이딩 하여 초기 세팅을 하고 만약 초기 세팅값을 service나 다른곳에서도 사용하려면 오버라이딩시 super(config); 처리하여 저장하고 초기화 추가 코드 작성한다. ServletConfig config로 들어오는 초기값은 web.xml에 <servlet> 안에 <init-param>으로 지정한 값들이다.public void init(ServletConfig config) throws SerletException{ this.config = config; this.init(); } public void init() throws SevletException{ }
- 모든 요청 받기 ▸ URI 분석에 따른 처리
☑ properties 파일
▪ 1byte로 작성되는 파일 (한글 2byte 작성불가 / 영문, 숫자만 가능)
▪ java.util.Properties 클래스로 직접 로딩 가능
▪ Properties 클래스는 Map 종류 중 하나 (Key, value)
▪ 설정정보는 외부에 유출이 되면 안되기 때문에 WEB-INF에 넣기
🔥 WEB-INF 폴더 안에 있는 파일들은 직접 URL로 접근이 불가능 ▹ 보안코딩
☑ properties 파일 이용한 통합 controller 만들기
- WEB-INF > properties 폴더 > new > File > meberTest.properties 생성
❕ 파일 작성 주의점
∙ 한글 X, 주석은 #, 띄어쓰기 X, 오타주의, = 을 기준으로 앞쪽은 key 뒤쪽은 value - properties 파일을 web.xml에 초기화 파라미터로 등록
- init에서 config 사용하여 properties 내용 로딩, Bean 클래스 객체 생성해 Map에 정리
- service() 메소드에서 uri에 해당하는 Bean의 actionBean() 요청하도록 수정
✔ View 사용자에게 (서비스 결과를) 보여주는 페이지
html, jsp, asp, php 등
* 요청 경로 매핑 ▹ web.xml 세팅 / 어노테이션 @webServlet() 매핑 (둘 중 하나로 매핑하기)
✔ Model 모든 로직, 연산 처리를 담당
DAO(DB), DTO, VO, Bean클래스(Action클래스)
☑ Bean 클래스
▪ 로직/연산 처리를 모아서 정의할 클래스
▪ JSP 페이지 하나당 하나씩 만들기
▪ 클래스명 : jsp파일명+Bean
ex) loginFrom.jsp > LoginFormBean.java
▪ 비지니스 로직 처리 메소드
매개변수 > request, response
리턴 > 이동할 jsp page 경로
👀 MVC 패턴을 사용하는 이유는 개발자의 편의성을 위한것이 아니고 유지 보수를 편하게 하기 위함으로 로직 코드 없이 단순 페이지 이동이라도 만들어두면 추후 기능 추가할때 편리함
##### 총정리 #####
# 세팅
web.xml : 경로 servlet 매핑, 초기화 세팅정보(파라미터) 추가 .properties 파일경로
properties : 경로=Bean전체이름
# Controller
init() : properties 파일정보 ㄱ져와서 veanMap key=uri, value=해당 Bean 객체 생성 세팅해놓기 (서버 스타트하고 처음 요청들어오면 한번만 실행)
service() : 요청경로 uri 뽑아서 거기에 맞는 Bean 객체의 비지니스 로직처리하는 actionBean() 호출 > Model 실행해~
(uri 분석 > Model 호출 > view로 이동할 파일경로 리턴받아서 view로 이동(forward) 시키기)
# Model : DAO, DTO, XxxBean
actionBean() : dao 호출 등 비지니스로직 처리, view에 전달할 데이터 request에 속성추가, 이동할 view의 파일경로 리턴
DAO 클래스 : DB 관련 (원래하던대로)
DTO 클래스 : 데이터 주고받을때 활용 (원래하던대로)
# View : 화면에 출력
EL ${}, JSTL <c: <fmt: 이용해서 화면에 보여줄 내용 출력