- 서블릿 프로그래밍
- 프론트 컨트롤러 도입: GoF의 Facade 패턴 적용
- 프론트 컨트롤러와 페이지 컨트롤러의 관계 이해
- 페이지 컨트롤러를 POJO 로 전환하기
- Spring IoC 컨테이너 도입
- 프로젝트 실습
# 65. 서블릿을 결합하여 MVC 모델2 구조로 변경하기(계속)
- MVC 모델2 특징 이해
- 서블릿과 JSP의 역할 및 구동 원리
ㄴ App 실행
=>
ㄴ 게시글 선택
=>
ㄴ 게시글 상세보기 정상적으로 출력됨
ㄴ [목록] 선택 후 [메인] 선택
=>
=>
ㄴ 공지사항 상세보기 정상적으로 출력됨
ㄴ 이렇게 링크에 list.jsp 를 입력하면 이동이 가능하여 옳지않은 정보를 출력할 수 있음
=>
=>
=>
ㄴ WEB-INF 에 jsp 라는 이름의 새로운 디렉토리를 추가
=>
=>
ㄴ jsp 디렉토리에 board 라는 이름의 새로운 디렉토리 추가
=>
ㄴ webapp/board/list.jsp 파일을 webapp/WEB-INF/jsp/board 로 이동하기
=>
=>
ㄴ 정확한 경로를 입력해도 null 이 출력됨을 확인
BoardListController.java
ㄴ 해당 코드 추가
ㄴ 해당 파일들 복사
=>
ㄴ WEB-INF/jsp 에 복사한 파일 붙여넣기
=>
ㄴ 게시글 목록 정상적으로 출력됨을 확인
ㄴ webapp/board/detail.jsp 파일, webapp/board/form.jsp 파일을 webapp/WEB-INF/jsp/board 로 이동하기
ㄴ webapp/member 폴더를 webapp/WEB-INF/jsp 로 이동하기
ㄴ upload 폴더 삭제
ㄴ webapp/board 폴더 삭제
ㄴ webapp/error.jsp 파일을 webapp/WEB-INF/jsp 로 이동하기
ㄴ webapp/index.jsp 파일을 webapp/WEB-INF/jsp 로 이동하기
ㄴ webapp/header.jsp, webapp/footer.jsp 파일 삭제
ㄴ App 실행
=>
=>
ㄴ LoginController.java 파일 복사
=>
ㄴ 같은 위치에 HomeController 라는 이름으로 붙여넣기
=>
HomeController.java
ㄴ /index.jsp 로 변경
=>
HomeController.java
ㄴ /WEB-INF/jsp/index.jsp 로 변경
저장 시 자동 import 해주는 기능 켜기
ㄴ App 실행
=>
=>
ㄴ 회원 선택 시 해당 에러 발생
BoardListController.java
ㄴ/WEB-INF/jsp 추가
BoardDetailController.java
ㄴ/WEB-INF/jsp 추가
LoginController.java
ㄴ/WEB-INF/jsp 추가
MemberDetailController.java
ㄴ/WEB-INF/jsp 추가
MemberListController.java
ㄴ/WEB-INF/jsp 추가
=>
ㄴ App 재시작
=>
=>
WEB-INF/jsp/member/list.jsp
ㄴ list -> ${list}
ㄴ value -> var
=>
WEB-INF/jsp/member/list.jsp
ㄴ 태그 라이브러리 설정 빠져있어 추가함
=>
MemberListController.java
package bitcamp.report.controller;
import bitcamp.report.dao.MemberDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/member/list")
public class MemberListController extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MemberDao memberDao = (MemberDao) this.getServletContext().getAttribute("memberDao");
request.setAttribute("list", memberDao.findAll());
response.setContentType("text/html;charset=UTF-8");
request.getRequestDispatcher("/WEB-INF/jsp/member/list.jsp").include(request, response);
}
}
=>
MemberDetailController.java
package bitcamp.report.controller;
import bitcamp.report.dao.MemberDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/member/detail")
public class MemberDetailController extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
MemberDao memberDao = (MemberDao) this.getServletContext().getAttribute("memberDao");
request.setAttribute("member", memberDao.findBy(Integer.parseInt(request.getParameter("no"))));
response.setContentType("text/html;charset=UTF-8");
request.getRequestDispatcher("/WEB-INF/jsp/member/detail.jsp").include(request, response);
}
}
=>
ㄴ 회원 목록 정상적으로 출력됨을 확인
ㄴ webapp/auth 폴더를 webapp/WEB-INF/jsp 로 이동시킴
web.xml
ㄴ /WEB-INF/jsp 추가
=>
App 재시작
=>
=>
=>
ㄴ 다른 사람이 등록한 글 삭제하려고 함
=>
=>
ㄴ 게시글 목록으로 이동됨