## 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 태그 이용하기
'네이버클라우드 > JAVA 웹 프로그래밍' 카테고리의 다른 글
JAVA 67일차 (2023-08-28) 자바 프로그래밍_JSTL (0) | 2023.08.28 |
---|---|
JAVA 66일차 (2023-08-25) 자바 프로그래밍_EL 사용법 (0) | 2023.08.26 |
JAVA 66일차 (2023-08-25) 자바 프로그래밍_JSP 사용법(ex05.jsp~ex20.jsp) (0) | 2023.08.26 |
JAVA 65일차 (2023-08-24) 자바 프로그래밍_JSP 사용법(ex01~ex04), Servlet 사용법(ex12) (0) | 2023.08.24 |
JAVA 65일차 (2023-08-24) 자바 프로그래밍_64. JSP를 이용하여 MVC 모델1 구조로 변경하기(계속)_Board_JSP_개인프로젝트 - 마트 관리 시스템 (0) | 2023.08.24 |