마트철수

[055] 웹 애플리케이션 프로젝트 + JSP 본문

KB IT's Your Life/교육

[055] 웹 애플리케이션 프로젝트 + JSP

마트스 2024. 7. 25. 18:16

 

2024.07.25(목)
 
JSP, Selvlet 1일차


 
JSP, selvlet

PART01 시작하기

  • CH01.1 웹 애플리케이션 개요 
  • CH01.2 웹 애플리케이션  프로젝트

PART02

  • CH02.3 JSP 문법

PART03

  • CH03.1 HTML5 Form 태그화 서블릿
  • CH03.2 필터

PART04

  • CH04.1 서블릿 고급 - 세션, 쿠키
  • CH04.2 요청 포워딩, 리다이렉트

PART05

  • CH05 EL, JSTL
  • FrontController

 

CH01.1 웹 애플리케이션 개요

 
HTTP 클라이언트와 서버

  • URL: Uniform Resource Locator (위치 정보로 표현해서 유일하게 구분)
  • URI: Uniform Resource Information (유일하게 식별만 되면 됨)
    # URI가 더 넓은 개념

 

HTTP Request

  • 요청 라인(Request Line): POST   /selvlet/Simple/SimpleServlet   HTTP/1.1
    •  한 줄로 고정됨
  • 요청 헤더(Request Header): 키 : 값
    • 수많은 정보를 담을 수 있는 공간
  • Content-Type: application/x-www-form-urlencoded
    • 요청 본체(Request Body)
    • POST, PUT일 때 존재 (GET일 땐 없음)

HTTP Response

  • 상태 라인: HTTP/1.1   200   OK
    • 200:성공, 300: redirect, 400: 실패
  • 응답 헤더
  • 응답 본체
    • 응답에 필요한 내용 (HTML 문서)

1) statless ... 

2) 문자기반 ... 이미지 다운은? binary를 문자로 변환해서 통신해야함(base64 인코딩)

 

웹 애플리케이션

  • 인터넷을 기반으로 구성된 웹상에서 웹 브라우저를 이용한 클라이언트와 HTML (정적 웹 컴포넌트)

JSP/Servlet

  • Tomcat이 대신 실행해줌
  • 지역 변수로만 운영되면 신경쓰지 X

웹 컴포넌트

  • MVN: 모델, 뷰, 컨트롤러 → View는 JSP / Controller는 servlet

 

CH01.2 웹 어플리케이션 프로젝트

 

 

home 링크 넣기

//        charset 설정 추가해야 한글 안깨짐
        response.setContentType("text/html; charset=UTF-8");
        
        ...
        

// 첫 번째 방법
        out.println("<a href = '\'>Home</a>");
//        중간에 " 붙여줄 경우 \ 역슬래쉬 필수
        out.println("<a href =\"/\">홈으로</a>");

 

webapp/WEB-INF/web.xml

: 자체 스키마를 가짐

 

build.gradle

: dependencies에 입력된 기능들은 lib에 자동 배전됨

 

연결 페이지

: '/'로 끝나면, 인덱스 파일을 달라 (index jsp 가능한 상태)

 

  • Java 파일의 HelloServlet과 연결됨

 

  • 새로운 프로젝트 생성 시 구현 쉬움

 

서블릿 아키텍처 및 핵심 API

HttpServletRequest API

 

  • setCharacterEncoding(String encoding): 요청 본문의 문자 인코딩 설정
  • getParameter(String name): 요청 파라미터의 값 반환
  • getParameterNames(): Enumeration: 모든 요청 파라미터의 이름을 열거형(Enumeration)으로 반환
  • getParameterValues(String name): String[ ]
    • 동일한 이름의 여러 요청 파라미터 값을 문자열 배열로 반환 (체크박스에 사용)

 

# 없는 name을 사용하면? null 리턴됨

# getParameter의 리턴값은 String임

→ page = 2 에서 2가 문자열이 됨

→ 근데 나(개발자)는 int로 반환받고 싶음

→ ParseInt 했다가 null이 들어가면 오류 발생

→ 그래서 null 체크하는 습관 중요

 

서블릿 LifeCycle 메서드

  • 서블릿의 인스턴스를 init, service, dextroy 메소드로 관리
    • init 메서드: 인스턴스가 처음 실행될 때, 단 한번 호출
    • service 메서드: 클라이언트가 요청할 때마다 호출
    • destroy 메서드: 인스턴스가 웹 컨테이너에서 제거될 때 호출

 

  • 서블릿 응답 처리
    : 클라이언트에서 서블릿으로 요청
  • 서블릿은 처리한 결과를 html 형식으로 응답처리
  • '문자셋 설정'이 매우 중요함 ... response.setContentType("text/html;charset=UTF-8");