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

JAVA 69일차 (2023-08-30) 자바 프로그래밍_65. 서블릿을 결합하여 MVC 모델2 구조로 변경하기(계속)_개인프로젝트 - 마트 관리 시스템

by prometedor 2023. 8. 31.
- 서블릿 프로그래밍
  - 프론트 컨트롤러 도입: 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 재시작

=>

=>

=>

ㄴ 다른 사람이 등록한 글 삭제하려고 함

=>

=>

ㄴ 게시글 목록으로 이동됨