Study

JAVA WEB - 5

hohahihi 2023. 2. 14. 12:20

MVC


${} : EL(Expression Language) 표현언어 사용

 - servlet에서 request로 전달한 데이터를 jsp에서 참조할 때 사용

 - 원래는 ${} 안에 requestScope.[데이터이름]  형식이 정석이지만 참조하려는 데이터 명을 그대로 작성해도 된다.

  ex) ${requestScope.win}  ${win}

 

 

가위바위보 알고리즘 

 가위 : 1, 바위 : 2, 보 : 3

 (you - com + 3) % 3으로 규칙 찾기

이기는 경우

you com result
1 3 1
2 1 1
3 2 1


지는 경우

you com result
1 2 2
2 3 2
3 1 2


비기는 경우

you com result
1 1 0
2 2 0
3 3 0

 

가위바위보 규칙을 JAVA 소스로 구현

private String whoWinner(int you, int com) {
    switch((you - com + 3) % 3) {
    case 0:    return "무승부입니다.";
    case 1:    return "당신의 승리입니다.";
    default : return "당신의 패배입니다.";
    }
}
cs

JSTL(Jsp Standard Tag Library)

 : 자바를 사용하지 않고 제어문을 사용할 수 있도록 해주는 라이브러리

  http://jakarta.apache.org

  1) Ex-Jakarta > Taglibs > Apache Standard Taglib > Standard 1.1 버전 선택

  2) binaries/ > jakarta-taglibs-standard-1.1.2.zip  다운로드 및 압축 해제

  3) 압축 해제한 폴더에서 lib 하위의 두 .jar 파일을 프로젝트의 WEB-INF 하위의 lib에 추가

  4) JSTL 사용하려는 jsp 파일 상단에 다음의 페이지 디렉티브를 작성한다.

   <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


게시판 예제를 MVC로 변환

client로부터 request를 직접 받는 FrontController(DispatcherServlet)와 Model(BoardDao)에서 처리한 DB 데이터를 받는 ActionController(BoardView, BoardInsert, BoardUpdate, ...) 구조로 Controller를 두 단계로 분리하여 MVC를 구축한다.

 - ActionController 들의 공통 부분을 추상 클래스(AbstarctController)로 만들고 이를 상속받는다.

 

EL과 JSTL을 사용하여 jsp에 있는 자바 소스를 제거한다.

 

요청 내용
/BoardInsert.do 게시판 입력 폼을 출력
/BoardInsertActon.do 게시판 입력 폼에서 넘어온 갑을 테이블에 INSERT
/BoardList.do 게시판 리스트
/BoardView.do 게시판 상세보기
/BoardUpdate.do 게시판 수정 폼에 게시물 내용을 출력
/BoardUpdateAction.do 게시판 수정 폼에서 넘어온 값을 테이블에 UPDATE
/BoardDelete.do 게시물 입력 시 비밀번호 재입력 폼 출력
/BoardDeleteAction.do 게시물의 글번호와 비밀번호 일치 시 게시물 DELETE

→ 게시물 삭제 후에는 다시 리스트로 GO~!

 

※ 서블릿을 사용하면 실제 파일 경로를 감출 수 있다.

 - jsp파일의 경로로 직접 접근하지 않으므로 보안 상 이점이 있다.

 

의존성 제거

 - DispatcherServlet은 ActionController에 변화(추가, 수정, 삭제 등)가 발생할 때마다 이에 맞게 소스를 수정해줘야하기 때문에 DispatcherServlet은 ActionController에 의존적(= 의존 관계)이라고 할 수 있다.

 - 이러한 의존 관계는 소스 수정이 자주 발생하므로 이를 제거하는 것이 좋다.

 

 

 


webdev_20230214.war
4.90MB