basic/jsp

[jsp 15] MVC - properties 파일 이용한 통합 controller 만들기

못지(Motji) 2021. 7. 26. 16:44

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() 메소드 기본 구조
    public void init(ServletConfig config) throws SerletException{
    	this.config = config;
    	this.init();
    }
    public void init() throws SevletException{
    }​
    ▸초기 파라미터 설정값이 있으면 위에 있는 init() 오버라이딩 하여 초기 세팅을 하고 만약 초기 세팅값을 service나 다른곳에서도 사용하려면 오버라이딩시 super(config); 처리하여 저장하고 초기화 추가 코드 작성한다. ServletConfig config로 들어오는 초기값은 web.xml에 <servlet> 안에 <init-param>으로 지정한 값들이다.
  • 모든 요청 받기 ▸ URI 분석에 따른 처리

☑ properties 파일

▪ 1byte로 작성되는 파일 (한글 2byte 작성불가 / 영문, 숫자만 가능)
▪ java.util.Properties 클래스로 직접 로딩 가능
▪ Properties 클래스는 Map 종류 중 하나 (Key, value)
▪ 설정정보는 외부에 유출이 되면 안되기 때문에 WEB-INF에 넣기
🔥 WEB-INF 폴더 안에 있는 파일들은 직접 URL로 접근이 불가능 ▹ 보안코딩

 

☑ properties 파일 이용한 통합 controller 만들기

  1. WEB-INF > properties 폴더 > new > File > meberTest.properties 생성
    ❕ 파일 작성 주의점
    ∙ 한글 X, 주석은 #, 띄어쓰기 X, 오타주의, = 을 기준으로 앞쪽은 key 뒤쪽은 value
  2. properties 파일을 web.xml에 초기화 파라미터로 등록
  3. init에서 config 사용하여 properties 내용 로딩, Bean 클래스 객체 생성해 Map에 정리
  4. 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: 이용해서 화면에 보여줄 내용 출력