본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 66일차 (2023-08-25) 자바 프로그래밍_64. JSP를 이용하여 MVC 모델1 구조로 변경하기_EL_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 8. 26.
## 64. JSP를 이용하여 MVC 모델1 구조로 변경하기

- MVC 모델1 특징 이해
- JSP 구동 원리 이해 및 사용법
- EL 사용법
- JSTL 사용법

 

login.jsp

ㄴ JSP 빌트인 객체 적용 해보기

=>

login.jsp

ㄴ getServletContext -> application 

=>

login.jsp

=>

ㄴ request.getSession() -> HttpSession -> session

 

 

board/add.jsp

=>

ㄴ request.getSession() -> HttpSession -> session

=>

board/add.jsp

=>

ㄴ getServletContext -> application

=>

board/add.jsp

=>

ㄴ getServletContext -> application

=>

board/add.jsp

=>

ㄴ getServletContext -> application

 

 

board/delete.jsp

=>

ㄴ request.getSession() -> HttpSession -> session

=>

board/delete.jsp

=>

ㄴ getServletContext -> application

=>

board/delete.jsp

=>

ㄴ getServletContext -> application

 

 

board/detail.jsp

=>

ㄴ getServletContext -> application

=>

board/detail.jsp

=>

ㄴ getServletContext -> application

 

 

board/fileDelete.jsp

=>

ㄴ request.getSession() -> HttpSession -> session

=>

board/fileDelete.jsp

=>

ㄴ getServletContext -> application

=>

board/fileDelete.jsp

=>

ㄴ getServletContext -> application

 

 

board/list.jsp

=>

ㄴ getServletContext -> application

 

 

board/update.java

=>

ㄴ request.getSession() -> HttpSession -> session

=>

board/update.java

=>

ㄴ getServletContext -> application

=>

board/update.java

=>

ㄴ getServletContext -> application

=>

board/update.java

=>

ㄴ getServletContext -> application

 

 

member/add.jsp

=>

ㄴ getServletContext -> application

=>
member/add.jsp

=>

ㄴ getServletContext -> application

=>

member/add.jsp

=>

ㄴ getServletContext -> application

 

 

member/delete.jsp

=>

ㄴ getServletContext -> application

=>

member/delete.jsp

=>

ㄴ getServletContext -> application

 

 

member/detail.jsp

=>

ㄴ getServletContext -> application

 

 

member/list.jsp

=>

ㄴ getServletContext -> application

 

 

member/update.jsp

=>

ㄴ getServletContext -> application

=>

member/update.jsp

=>

ㄴ getServletContext -> application

=>

member/update.jsp

=>

ㄴ getServletContext -> application

 

 

error.jsp

=>

ㄴ getServletContext -> application

 

 

header.jsp

=>

ㄴ request.getSession() -> HttpSession -> session

 

 

login.jsp

=>

login.jsp

ㄴ JSP 페이지에서 MemberDao 클래스의 객체를 생성하거나 가져와서 어플리케이션 스코프에 저장하는 역할

 

login.jsp

=>

login.jsp

ㄴ 해당 코드는 필요 없어졌으므로 제거

=>

ㄴ App 실행

=>

=>

=>

login.jsp

ㄴ type 대신 class 사용 할 경우

=>

=>

ㄴ 해당 오류가 발생

 

 

board/add.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 세 개의 JavaBean 객체(boardDao와 sqlSessionFactory, ncpObjectStorageService)를 선언하고 초기화하는데 사용

=>

board/add.jsp

ㄴ 이제 이 코드들은 모두 필요 없어졌으므로 제거

=>

board/add.jsp

ㄴ import 정리해주기

=>

board/add.jsp

ㄴ scope 을 모두 application 으로 설정해주기

=>

=>

 

 

board/list.jsp

ㄴ jsp 의 useBean 태그 이용하여 설정

=>

board/list.jsp

ㄴ 해당 코드는 이제 필요 없어졌으므로 제거

=>

=>

board/list.jsp

ㄴ import 정리

 

 

board/detail.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 두 개의 JavaBean 객체(boardDao와 sqlSessionFactory)를 선언하고 초기화하는데 사용

=>

board/detail.jsp

ㄴ 해당 코드는 이제 필요 없어졌으므로 제거

=>

board/detail.jsp

ㄴ import 정리

=>

board/detail.jsp

ㄴ errorPage 설정 추가

=>

board/detail.jsp

ㄴ 오류가 발생했을 때 refresh 할 URL 지정

 

 

board/list.jsp

ㄴ 오류가 발생했을 때 refresh 할 URL 지정

=>

board/list.jsp

ㄴ trimDirectiveWhitespaces 를 true 로 설정하여 쓸데없는 공백은 제거하도록 함

=>

ㄴ 게시글 상세보기 정상적으로 출력됨을 확인

=>

board/form.jsp

ㄴ trimDirectiveWhitespaces 를 true 로 설정하여 쓸데없는 공백은 제거하도록 함

=>

 

 

board/add.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 세 개의 JavaBean 객체(boardDao와 sqlSessionFactory, ncpObjectStorageService)를 선언하고 초기화하는데 사용

=>

board/add.jsp

ㄴ 해당 코드는 제거해주도록 함

=>

ㄴ 내용 변경 후 [변경] 선택

=>

=>

ㄴ 정상적으로 변경됨을 확인

 

 

board/update.jsp

ㄴ import 정리 해주기

 

 

 

board/fileDelete.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 두 개의 JavaBean 객체(boardDao와 sqlSessionFactory)를 선언하고 초기화하는데 사용

=>

board/fileDelete.java

ㄴ 해당 코드는 제거 해주도록 함

=>

ㄴ 첨부파일 > [삭제] 선택

=>

ㄴ 첨부파일이 정상적으로 삭제됨을 확인

=>

board/fileDelete.jsp

ㄴ import 정리해주기

 

 

board/delete.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 두 개의 JavaBean 객체(boardDao와 sqlSessionFactory)를 선언하고 초기화하는데 사용

=>

board/delete.jsp

ㄴ 해당 코드는 제거 해주도록 함

=>

ㄴ 게시글 > [삭제] 선택

=>

ㄴ 삭제한 27번 글이 리스트에서 제거됨을 확인

=>

board/delete.jsp

ㄴ import 정리 해주기

 

 

board/add.jsp

ㄴ 해당 코드 위쪽으로 옮겨주기

=>

board/add.jsp

ㄴ 스크립트릿 코드 줄일 수 있음

=>

board/add.jsp

ㄴ <jsp:useBean> 태그를 이용해 JSP 페이지에서 JavaBean을 사용

     ㄴ 두 개의 JavaBean 객체(boardDao와 sqlSessionFactory)를 선언하고 초기화하는데 사용

=>

board/add.jsp

ㄴ Member 객체는 <jsp:useBean> 태그를 이용하므로 해당 코드 제거

=>

board/add.jsp

ㄴ 해당 코드를 위로 올려준 후 수정

=>

board/add.jsp

ㄴ class 속성을 지정해주면 JSP 페이지에서 loginUser라는 ID로 bitcamp.report.vo.Member 클래스의 객체를 생성하고, 이를 세션 스코프에 저장하도록 함

ㄴ 세션 스코프에 저장된 객체는 해당 세션이 유지되는 동안 계속 사용할 수 있음

=>

board/add.jsp

ㄴ loginUser 가 0인 경우는 로그인을 하지 않은 경우를 나타냄

=>

board/add.jsp

ㄴ 로그인 페이지로 이동시켜줌

 

 

board/update.jsp

ㄴ class 속성을 지정해주면 JSP 페이지에서 loginUser라는 ID로 bitcamp.report.vo.Member 클래스의 객체를 생성하고, 이를 세션 스코프에 저장하도록 함

ㄴ 세션 스코프에 저장된 객체는 해당 세션이 유지되는 동안 계속 사용할 수 있음

=>

board/update.jsp

ㄴ 해당 코드는 제거해도 됨(이미 위에서 해줌)

=>

board/update.jsp

ㄴ 해당 코드를 위로 올려준 후 수정

=>

board/update.jsp

ㄴ loginUser 가 0인 경우는 로그인을 하지 않은 경우를 나타냄

=>

board/update.jsp

ㄴ 로그인 페이지로 이동시켜줌

 

 

board/fileDelete.jsp

ㄴ class 속성을 지정해주면 JSP 페이지에서 loginUser라는 ID로 bitcamp.report.vo.Member 클래스의 객체를 생성하고, 이를 세션 스코프에 저장하도록 함

ㄴ 세션 스코프에 저장된 객체는 해당 세션이 유지되는 동안 계속 사용할 수 있음

=>

board/fileDelete.jsp

ㄴ 해당 코드는 제거해도 됨(이미 위에서 해줌)

=>

board/fileDelete.jsp

ㄴ loginUser 가 0인 경우는 로그인을 하지 않은 경우를 나타냄

=>

board/fileDelete.jsp

ㄴ 로그인 페이지로 이동시켜줌

 

 

board/delete.jsp

ㄴ class 속성을 지정해주면 JSP 페이지에서 loginUser라는 ID로 bitcamp.report.vo.Member 클래스의 객체를 생성하고, 이를 세션 스코프에 저장하도록 함

ㄴ 세션 스코프에 저장된 객체는 해당 세션이 유지되는 동안 계속 사용할 수 있음

=>
board/delete.jsp

ㄴ 해당 코드는 제거해도 됨(이미 위에서 해줌)

=>

board/delete.jsp

ㄴ 해당 if 문을 위쪽으로 올려준 후 수정하기

ㄴ loginUser 가 0인 경우는 로그인을 하지 않은 경우를 나타냄 

=>

board/delete.jsp

ㄴ 로그인 페이지로 이동시켜줌

=>

ㄴ 게시글 > [삭제] 선택

=>

ㄴ 로그인 창으로 이동됨

ㄴ header 에 null 값이 노출되는 문제가 있음

=>

header.jsp

ㄴ loginUser라는 ID로 bitcamp.report.vo.Member 클래스의 객체를 생성하고, 이를 세션 스코프에 저장하도록 함

=>

header.jsp

ㄴ 해당 코드는 이제 필요 없으므로 제거

=>

header.jsp

ㄴ 해당 import 문도 필요 없으므로 제거

=>

header.jsp

ㄴ loginUser 가 0인 경우는 로그인을 하지 않은 경우를 나타냄 

 

 

board/add.java

ㄴ 해당 import 문 필요 없으므로 제거

 

 

board/update.java

ㄴ 해당 import 문 필요 없으므로 제거

 

 

board/fileDelete.java

ㄴ 해당 import 문 필요 없으므로 제거

 

 

board/delete.java

ㄴ 해당 import 문 필요 없으므로 제거

=>

ㄴ 첨부파일 > [삭제] 선택

=>

ㄴ 로그인 창으로 이동되며, header 에 null 값이 노출되지 않음을 확인

 

 

board/add.jsp

ㄴ 해당 코드 복사

=>

member/add.jsp

ㄴ 복사한 코드 붙여넣은 후 수정하기 (BoardDao -> MemeberDao)

=>

member/add.jsp

ㄴ 해당 코드 제거해주기

=>
member/add.jsp

ㄴ import 정리 해주기

 

 

member/delete.jsp

ㄴ 해당 코드 추가

=>
member/delete.jsp

ㄴ 해당 코드 제거

=>

member/delete.jsp

ㄴ import 정리

 

 

member/detail.jsp

ㄴ 해당 코드 추가

=>

member/detail.jsp

ㄴ 해당 코드 제거

=>

member/detail.jsp

ㄴ import 정리

 

member/list.jsp

ㄴ 해당 코드 추가

=>

member/list.jsp

ㄴ 해당 코드 제거

=>
member/list.jsp

ㄴ import 정리

 

 

member/update.jsp

ㄴ 해당 코드 추가

=>

member/update.jsp

ㄴ 해당 코드 제거

 =>

member/update.jsp

ㄴ import 정리

=>

ㄴ 회원 > 새 회원 선택 > 정보 입력  > [등록] 선택

=>

ㄴ 등록한 정보의 회원이 정상적으로 목록에 출력됨을 확인

 

 

error.jsp

ㄴ 해당 코드 추가

=>

error.jsp

ㄴ 해당 코드 제거

=>

error.jsp

ㄴ commit 이 아닌 rollback 으로 변경해줌



auth/form.jsp

ㄴ <%=phone%>  ==>  ${cookie.phone.value} 로 변경해주기 (스크립트릿 대신 EL 태그 이용하기)

=>

auth/form.jsp

ㄴ 이제 스크립트릿 대신 EL 태그를 이용하기 때문에 해당 코드는 필요 없으므로 제거해주도록 함

=>

auth/form.jsp

ㄴ 쿠키 객체의 phone 쿠키의 존재 여부를 확인하여, 해당 쿠키가 존재하면 체크된 상태로 출력하고, 존재하지 않으면 체크되지 않은 상태로 출력하도록 함

=>

ㄴ 전화번호 저장 체크박스 체그하기 > [로그인] 선택

=>

ㄴ 로그인 정상적으로 처리됨을 확인

ㄴ [로그아웃] 선택

=>

ㄴ 로그인 선택

=>

ㄴ 로그아웃 후에도 전화번호가 저장되어있어 다시 로그인 시 이전에 입력했던 전화번호가 노출됨을 확인



board/list.jsp

ㄴ <%=category%> 표현식 대신 ${param.category} EL 태그 이용하여 category 를 가져오도록 함

=>

ㄴ 로그인 상태

=>

ㄴ 게시글 > [새 글] 선택 시 category 값 정확히 넘어옴을 확인

=>

ㄴ 페이지 소스 보기를 통해 확인하기

 

 

board/list.jsp

ㄴ <%=board.getNo()%> 대신 ${board.no} 로 변경

=>

ㄴ 번호가 출력되지 않는 현상이 발생

=>

board/list.jsp

ㄴ JSP 페이지에서 board라는 이름으로 페이지 범위(scope)에서 사용할 수 있는 속성(attribute)을 설정

=>

=>

board/list.jsp

ㄴ 표현식 대신 EL 태그로 변경해주기

=>

board/list.jsp

ㄴ <%=board.getWriter().getName()%> 표현식 대신 ${board.writer.name} EL 태그 이용하기

=>

board/list.jsp

ㄴ <%=board.getViewCount()%> 표현식 대신 ${board.viewCount} EL 태그 이용하기

=>

listener/ContextLoaderListener.java

ㄴ simpleDateFormatter 라는 이름으로 날짜 형식 설정하는 코드 존재함을 확인

=>

board/list.jsp

ㄴ 해당 코드 제거해주기

=>

board/list.jsp

ㄴ listener/ContextLoaderListener.java 에 존재하는 simpleDateFormatter 이용하기

ㄴ <%=dateFormatter.format(board.getCreatedDate())%> 표현식 대신  EL 태그 사용하기

=>

ㄴ 등록일이 정상적으로 출력됨을 확인

 

 

board/detail.jsp

ㄴ JSP 페이지에서 board라는 이름으로 페이지 범위(scope)에서 사용할 수 있는 속성(attribute)을 설정

=>

board/detail.jsp

ㄴ 한 번만 쓰는 변수는 제거해주고 값을 직접 넣도록 함

=>

board/detail.jsp

ㄴ EL 태그 이용하도록 함

=>
board/detail.jsp

ㄴ EL 태그 이용하도록 함

=>

board/detail.jsp

ㄴ EL 태그 이용하도록 함

=>

board/detail.jsp

ㄴ EL 태그 이용하도록 함

=>

board/detail.jsp

ㄴ listener/ContextLoaderListener.java 에 존재하는 simpleDateFormatter 이용하기
ㄴ 표현식 대신  EL 태그 사용하기

=>

board/detail.jsp

ㄴ JSP 페이지에서 file라는 이름으로 페이지 범위(scope)에서 사용할 수 있는 속성(attribute)을 설정

=>

board/detail.jsp

ㄴ <%=file.getFilePath()%> 표현식 대신 EL 태그 이용하기

=>

board/detail.jsp

ㄴ <%=file.getFilePath()%> 표현식 대신 EL 태그 이용하기

=>

board/detail.jsp

ㄴ 표현식 대신 EL 태그 이용하기

=>

board/detail.jsp

ㄴ 표현식 대신 EL 태그 이용하기

=>

board/detail.jsp

ㄴ 표현식 대신 EL 태그 이용하기