본문 바로가기
반응형

👨‍💻 2. 웹개발_Back end/2-4 JSP & Servlet25

[JSP & Servlet] 7장 미니 프로젝트 만들기 프로젝트 추가/수정/삭제하기 0) 파일 구조 확인 1) PRJ_MEMBS 테이블 생성 쿼리 - PRJ_MEMBS 테이블 역할 : PROJECT 테이블과 MEMBERS 테이블을 연결해줌 CREATE TABLE PROJECTS ( PNO INTEGER NOT NULL COMMENT '프로젝트 일련번호', PNAME VARCHAR(225) NOT NULL COMMENT '프로젝트명', CONTENT TEXT NOT NULL COMMENT '설명', STA_DATE DATETIME NOT NULL COMMENT '시작일', END_DATE DATETIME NOT NULL COMMENT '종료일', STATE INTEGER NOT NULL COMMENT '상태', CRE_DATE DATETIME NOT NULL .. 2021. 10. 19.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (6) 애노테이션을 이용한 객체 관리 6.6절 애노테이션을 이용한 객체 관리 1. 기존 방식 -> 프로퍼티를 이용한 방식 2. 기존 방식의 문제점 - DAO 또는 페이지 컨트롤러를 추가할 때 마다 프로퍼티 파일을 변경해야 함. 3. 해결 방안 - 애노테이션을 이용하여 클래스 파일에 객체 정보를 담는다. - DAO 객체 이름을 클래스 파일에 보관 - 페이지 컨트롤러의 서블릿 경로 정보를 클래스 파일에 보관 - DAO 객체나 페이지 컨트롤러를 추가할 때도 단지 애노테이션만 클래스에 선언해 주면 된다. 4. 실습 시나리오 1단계. 객체 이름을 보관할 애노테이션 정의 2단계. DAO 및 페이지 컨트롤러에 애노테이션 적용 3단계. 프로퍼티 파일변경 4단계. ApplicationContext 클래스 변경 - 애노테이션 정보 추출 : 페이지 컨트롤러는 .. 2021. 10. 19.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (5) 프로퍼티를 이용한 객체관리 6.5 프로퍼티를 이용한 객체 관리 1. 학습할 내용 2. 기존 방식 public void contextInitialized(ServletContextEvent event) { // 객체 준비 } - 객체를 보관할 때 사용할 서블릿 컨텍스트 객체를 준비 ServletContext sc = event.getServletContext(); //톰캣 서버가 관리하는 객체를 얻기 위한 준비 InitialContext initialContext = new InitialContext(); //DAO가 사용할 DataSource 객체를 얻기 DataSource ds = (DataSource)initialContext.lookup("java:comp/env/jdbc/studydb"); //페이지 컨트롤러가 사용할 DA.. 2021. 10. 18.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (4) 리플랙션 API를 이용하여 프런트 컨트롤러 개선하기 6.4절 리플랙션 API를 이용하여 프런트 컨트롤러 개선하기 1. 학습할 내용 - 파라미터 값을 페이지 컨트롤러에게 전달하는 방법을 자동화 2. 기존 방식 //서블릿 컨텍스트 보관소에서 페이지 컨트롤러를 찾는다. ServletContext sc = this.getServletContext(); … //페이지 컨트롤러를 찾아 주면, Controller pageController = (Controller) sc.getAttribute(servletPath); //페이지 컨트롤러가 누구냐에 따라 if ("/member/add.do".equals(servletPath)) { … } else if ("/member/update.do".equals(servletPath)) { … } else if ("/member.. 2021. 10. 18.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (3) DI를 이용한 빈 의존성 관리 6.3 DI를 이용한 빈 의존성 관리 1. 의존 객체 - 의미 : 특정 작업을 수행할 때 사용하는 객체 2. 의존 객체 관리 1) 사용할 때 마다 의존 객체 생성하기 - 문제점 : 많은 가비지(garbage) 생성, 실행시간 지연 2) 의존 객체를 미리 생성해 두었다가 필요할 때 꺼내쓰기 3) 필요한 의존 객체를 사용 전에 미리 주입해 두기 ★★★ - 의존성 주입(Dependency Injection; DI) - 의존 객체 주입을 위한 코드 준비 - MemberDao 인스턴스 변수와 셋터 메서드 추가 public class ContextLoaderListener implements ServletContextListener { public void contextInitialized(ServletContex.. 2021. 10. 18.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (2) 페이지 컨트롤러의 진화 6.2 페이지 컨트롤러의 진화 1. 페이지 컨트롤러의 진화 - 기존의 페이지 컨트롤러는 프런트 컨트롤러와 마찬가지로 서블릿이다. - 클라이언트 요청은 프런트 컨트롤러가 받기 때문에 페이지 컨트롤러는 서블릿이 될 필요가 없다. - 페이지 컨트롤러가 서블릿이 아니기 때문에 include 기법으로 실행을 위임할 수 없다. - 페이지 컨트롤러로 실행을 위임할 새로운 규칙이 필요! - 프런트 컨트롤러와 페이지 컨트롤러 사이에 호출 규칙을 정의한다. - 기존의 페이지 컨트롤러를 변경해야 한다. - 기존의 MemberListServlet은 Servlet 인터페이스를 구현한 서블릿이다. - 이제 서블릿 구현을 버리고, Controller 규칙을 따르게 하자. - 클래스 이름도 그에 맞추어 Controller 접미사를 .. 2021. 10. 18.
[JSP & Servlet] 6장 미니 MVC 프레임워크 만들기 (1) 프런트 컨트롤러 6장 개요 1) 스프링 MVC를 모방한 간단한 MVC 프레임워크 만들어 보기 2) 스프링 프레임워크의 구동 원리와 내부 구조를 이해하기 3) 디자인 패턴 적용하는 방법과 오픈 소스 라이브러리를 사용하는 방법을 경험하기 4) 리플렉션 API 사용법 익히기 5) 애노테이션을 정의하고 사용하는 방법 익히기 6.1 프런트 컨트롤러의 도입 1. 프런트 컨트롤러 도입 전 2. 컨트롤러 역할 3. 프런트 컨트롤러가 하는 일 4. 프런트 컨트롤러 만들기 - 프런트 컨트롤러의 클래스 이름은? DispatcherServlet - 클라이언트 요청을 받아야 하기 때문에 서블릿이어야 함 - 페이지 컨트롤러를 실행하기 전에 공통 작업을 처리해야 하기 때문에, 요청 URL의 규칙을 정의할 필요 있음 - 즉 .do 접미사가 붙은 요.. 2021. 10. 18.
[JSP & Servlet] 5장 MVC 아키텍처 (7) - DB 커넥션풀 5.12 DB 커넥션풀 1. 싱글 커넥션 - 지금까지 우리가 만든 애플리케이션이 바로 싱글 커넥션 시스템이다. - 싱글 커넥션을 사용하면 여러 개의 DAO가 같은 커넥션을 바라보게 됨 - 하나라도 롤백 작업이 일어나면 모든 작업이 취소가 됨 2. 싱글 커넥션 문제점과 해결책 1) 문제점 - 싱글 커넥션을 사용하면 같은 커넥션을 이용하는 DAO들의 작업에 영향을 준다. 2) 해결책1 - 하나의 DAO 객체마다 새로운 커넥션을 할당받아서 사용하는 시스템 - 이 방식의 문제점 : 일을 하지 않을 때도 커넥션을 물고 있어서 자원 낭비 3) 해결책2 (진짜 해결책) - 한정된 자원을 효율적으로 사용하는 방법 : 대여 = 풀링(pooling) 기법 - DB 커넥션풀에다가 DB커넥션을 여러 개 만들어놓고 커넥션 요청.. 2021. 10. 17.
[JSP & Servlet] 5장 MVC 아키텍처 (6) - ServletContextListener를 이용한 객체 공유 5.11 ServletContextListener와 객체 공유 1. ServletContextListener를 이용한 공유 객체 준비 - AppInitServlet을 대신해서 MemberDAO를 객체로 만들어서 사용함 2. ServletContextListener란? - 서블릿 컨테이너 역할 : 웹 애플리케이션 상태를 모니터링할 수 있도록 알림 기능을 제공 - 서블릿 내에서 사건이나 이벤트가 발생하게 되면 이 ServletContextListener를 통해서 사건이 발생한 것을 알려줌 - 이벤트 리스너 클래스를 하나 만들어서 web.xml에 등록해주면 이벤트가 발생할 때마다 관련 메소드를 호출할 수 있음 - ServletContextListener 인터페이스를 상속받은 ContextLoaderListen.. 2021. 10. 15.
[JSP & Servlet] 5장 MVC 아키텍처 (5) - DAO객체 만들기 5.10 DAO 만들기 1. Model 역할 분리 전 - 서블릿이 컨트롤러와 모델 역할을 모두 하는 형태임 - 이제 모델 역할을 분리할 것임 2. Model 역할 분리 - Dao에서 결과 값을 리턴받는 형식임 3. 클라이언트 요청을 처리하는 흐름도 - Dao에서 쿼리를 날리면 Member 객체를 생성한다음에 서블릿에서 화면 생성을 위임 - 결과 화면을 출력 - 로그인 서블릿을 DAO를 분리해서 구성하는 작업을 통해 웹 애플리케이션을 만듬 4. DAO객체 실습 ( _20_MVC_DAO ) MemberDAO.java package spms.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import j.. 2021. 10. 14.
[JSP & Servlet] 5장 MVC 아키텍처 (4) - 뷰와 서블릿 분리 및 JSP 컨텍스트와 Action Tag 뷰와 서블릿 분리 실습1) 뷰와 서블릿 분리 - 회원 등록 MemberAddServlet.java 두 부분 주석 처리 package spms.servlets; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet;.. 2021. 10. 14.
[JSP & Servlet] 5장 MVC 아키텍처 (3) - 데이터 보관소 5.6 데이터 보관소 1. 생성과 소멸 시점 - 4가지의 보관소로 이루어짐 1) ServletContext : 시작될 때 만들어지고 종료될때 삭제가됨 2) HttpSession : 클라이언트의 요청이 들어왔을때 최초 생성되고 세션이 닫히면 삭제가 됨 3) ServletRequest : 클라이언트의 요청이 왔을때 생성되고 응답이 끝날 때 사라짐 4) JspContext : jsp 페이지가 실행되는 동안에만 데이터를 사용할 수 있는 보관소로 지정됨 2. 웹 애플리케이션 1) ServletContext : 웹 애플리케이션 시작 시 준비됨 웹 애플리케이션 당 1개 2) HttpSession : 최초 요청 시 생성되고 세션이 무효화 되기 전까지 유지됨 세션 ID를 통해 사용자 별 3) ServletRequest .. 2021. 10. 14.
[JSP & Servlet] 5장 MVC 아키텍처 (2) - 뷰 분리 및 포워딩과 인클루딩 5.4 서블릿에서 뷰 분리하기 1. 서블릿에서 뷰 분리하기 2. 뷰 분리 3. VO 객체 생성 실습 ( _13_MVC_jsp_VO ) MemberListServlet package spms.servlets; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import javax.servlet.GenericServlet; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import.. 2021. 10. 14.
[JSP & Servlet] 5장 MVC 아키텍처 (1) - MVC 이해하기 5.1절 MVC 이해하기 1. 올인원방식 (클라이언트 요청 처리) 2. MVC 아키텍처 3. MVC 아키텍처의 등장 배경 4. MVC 아키텍처의 특징 5. MVC의 실행 흐름 5.2 뷰 컴포넌트와 JSP 1. MVC 아키텍처 - 화면 만들기가 쉽기 때문에 2. JSP 사용 전 2. JSP 사용 후 3. JSP 구동원리 4. JSP 클래스의 상속 관계 5. JSP 구동실습 ( _11_MVC_jsp ) Hello.jsp 안녕하세요 실행 화면 클래스와 jsp파일이 들어있는 디렉터리 경로 5.3 JSP의 주요 구성요소 1. 템플릿 데이터 2. JSP 지시자 3. 스크립트릿 4. JSP 선언문 5. JSP 표현식 6. JSP 실습 계산기 만들기 ( _12_MVC_jspCalculator ) Calculator.j.. 2021. 10. 14.
[JSP & Servlet] 4장 서블릿과 JDBC (4) - 필터 사용하기 1. 필터 사용하기 1. 필터 사용하기 - 필터가 없는 경우 2. 필터 넣기 - 필터가 있는 경우 요청과 응답을 하기전에 필터를 거쳐서 진행 - 필터는 한 개 또는 여러 개 넣어줄 수 있음 3. 필터 실행 - 서블릿에서 필터를 거처 웹 페이지로 가게됨 - 추상객체에서 init(), doFilter(), destroy() 메소드를 상속받아서 구현하게됨 4. 필터 용도 예시) charset을 쓸때도 사용 가능 request.setCharacterEncoding("UTF-8"); 5. 필터 만들기 6. 필터 만들기 실습 CharacterEncodingFilter.java package spms.filter; import java.io.IOException; import javax.servlet.Filter; .. 2021. 10. 14.
반응형