12.07 정리

0

정리

목록 보기
2/4

화면 구성

layout에서 각 화면들이 메뉴들은 변경되지 않고 가운데 내용만 변경됨
-> 페이지 모듈화 사용해서 구현

각 부분의 jsp와 전체를 합쳐서 보여주는 layout.jsp
-> 도큐먼트는 전체보여주는 jsp에만 있으면 됨.

layout.jsp

도큐먼트, css, jquery 라이브러리 등은 전체 페이지에서만 하면 되고 각각의 div에 jsp들을 include해준다.
이때 request의 디스패처로 include하면 버퍼가 언제 방출되서 화면이 나갈지 모름 -> 원하는 곳에 include가 되지 않고 이상한데로 나올수도 있음. 예측 못함
=> 액션태그의 include사용.
스클립틀릿 안에서 include하는 방법이 pageContext객체 이용.

leftMenu.jsp

db대신 enum을 사용함.
ul의 li를 사용하면 a태그들이 추가되거나 삭제될 수 있음(동적으로 바뀔 수 있음) -> enum으로 동적 생성함
그리고 a의 href를 각각의 주소로 매번 각자 써줘야됨.
이게 여러개라면?
-> 한 페이지에서 여러개의 submit이 있으면 하나로 통일시켜라
=> form태그 이용해서 submit

this - 자바스크립트 객체
$(this) - jquery 객체

스크립트

(".menuUL").on("click","a",function()(".menuUL").on("click", "a", function()과(".menuUL a").on("click", function()은 같은거지만 a는 동적으로 생성되는 것임.
스크립트는 페이지가 랜더링되는 과정에서 딱 한번만 실행됨! -> a가 나중에 추가되거나 삭제되면 그 a에 대해서는 이벤트 실행안됨.
그래서 동적으로 바뀌는 엘리먼트에 대해서는 이벤트 주지 않는다. => 첫번째거 사용

a의 기능 event.preventDefault(), return false로 완전히 막고 enum으로 셋팅한 data-service값을 가져와 form의 url을 완성해준뒤 submit해준다.

enum에서 GUGUDAN, 구구단(화면 메뉴 출력), url property 셋팅을 위해 VO를 만들었다.

자바빈 규약에 의해 VO를 만들어주고 빌드패턴을 적용했다. 원래 빌드패턴은 immutable한 객체를 만들기 위해 사용하는데 ibatis를 사용하면 넘길때 프로퍼티를 셋팅해줘야한다. -> setter가 필요하기 때문에
(MenuVO menu = new MenuVO;
menu.setMenuText(req.getParameter("text"));
이부분) setter를 지우면 프레임워크에서는 사용하지 못해서 setter를 남겨둔다.
=> 변경된 빌드 패턴

Enum - LeftMenu

enum은 상수이기 때문에 값을 변경할 수 없어서 setter를 잘 안쓰고 대신 생성자로 셋팅해준다.

ModulizationServlet

enum에 있는 원하는 값은 valueOf()를 이용해 얻을 수 있다.
values()는 모든 값들
valueOf()는 가지고 있는 enum에서 찾고 있으면 그것을 반환, 없으면 예외를 반환하기 때문에 예외처리를 해줘야 한다.
원래는 catch문에서 상태코드 내보내고 return해줬는데 catch문에서는 return하는게 아니라고 함
그래서 status변수 빼주고 위처럼 처리해줌
그리고 if문이 있으면 else문도 있어야됨.
=> 결과가 위 코드.

0개의 댓글