서버프로그래밍_02 Servlet/JSP, 세션/쿠키

aggapang·2025년 6월 26일

kb IT's Your Life

목록 보기
20/20

1 Servlet

요청에 의해 컨텐츠로 응답 가능한 자바 기반 웹 컴포넌트

  • Server + Applet (Application + let(작은) = 작은 어플리케이션)
  • 웹 컨테이너에 의해 관리
  • 클라이 언트 요청 처리 후 동적 응답 HTML 생성
@WebServlet(name="MyServlet", urlPatterns={"/xxx", "/yyy" })
public class MyServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
  }
  @Override
  public void destroy() {
  System.out.println("destroy 호출");
  }
  @Override
  public void init() throws ServletException {
  System.out.println("init 호출");
  }
}

서블릿 맵핑

요청을 처리할 서블릿 지정

  1. 배포 서술자(web.xml)을 이용해 서블릿 등록/매핑

  2. @WebServlet 어노테이션 이용한 서블릿 등록/매핑
    @WebServlet(name="서블릿이름", value="/맵핑명"
    서블릿을 URL에 매핑하여 등록

    # 서블릿 맵핑 설정
    @WebServlet("/맵핑명")
    public class MyServlet extends HttpServlet {}
    
    # urlPattern 속성 여러개
    @WebServlet(name="서블릿별명",
    value={"/맵핑명", "/맵핑명2"})
    public class MyServlet extends HttpServlet {}
    

Apache + Tomcat 요청/응답 구조


웹브라우저(url 요청/응답) ↔ Apache ↔ Tomcat ↔ DB

  • 웹 컨테이너에서 URL 요청에 맞는 Servlet 실행
  • 요청 처리 결과값을 HTML 형태 구성하여 클라이언트에 응답

HttpServletRequest

  • 클라이언트(웹 브라우저)가 보낸 HTTP 요청에 대한 정보를 담고 있는 객체

HttpServletResponse

  • 서블릿이 클라이언트에게 보낼 HTTP 응답을 생성하는데 사용되는 객체
  • 응답 내용(html, json), 헤더, 쿠키, 상태 코드 등 설정

서블릿 아키텍처 및 생명주기(Life Cycle)

init()

서블릿 초기화

  • 처음 실행 될때, 한번 호출
  • 서블릿에서 필요한 초기화 작업 시 사용

service()

doGet(), doPost()

  • 클라이언트가 요청할 때마다 호출
  • 스레드를 통해 동시에 실행

destroy()

서블릿 종료

  • 인스턴스가 웹 컨테이너에서 제거 될때 호출

WAR 파일 배포

Web Application Archive

  • 웹 어플리케이션을 배포하기 위해 모든 파일을 하나로 묶어 압축한 형식의 파일
  • for : 배포 용이성, 표준화된 구조

2 JSP

  • .jsp 확장자
  • 태그 기반의 웹 컴포넌트
  • 클라이언트 요청 시 동적으로 실행
  • 자동으로 Servlet(Java 코드)로 변환되어 실행
  • 서블릿 → HTTP 통신 요청/응답 처리
  • MVC 패턴에서 View 역할

JSP 동작

index.jspindex_jsp.javaindex_jsp.class 로 컴파일

  1. 변환 단계 :
    • 요청된 파일명.jsp 파일을
      → 파일명_jsp.java 파일명을 가진 서블릿으로 변환
  2. 컴파일 단계 : 변환된 서블릿을 컴파일하는 단계
    • 컴파일 에러가 발생하면 변환되지 않음
    • 파일명_jsp.class 형식의 파일 생성
  3. 실행 단계 : .class 파일 실행
    • 컴파일 된 파일명_jsp.class 파일을 실행

JSP 문법

  • html과 태그로 구성
  • 태그 안에 자바 코드 삽입하여 구현

JSP 스트립팅 요소

<% %>

  • jsp 페이지가 서블릿으로 변환 시 JSP 엔진에 의해 처리
JSP 문법
<%-- 주석 --%>
<%@ 지시자 %>
<%! 자바 선언문 %>
<% 자바 코드 %>
<%= 자바 표현식 %>

Servlet vs JSP

서블릿JSP
형식Java 코드 ⊃ HTML 코드HTML 코드 ⊃ Java 코드
특징java 코드 안에 html 코드 삽입되어 있는 형태
html 작성하는 java 코드 작업 복잡
html 코드 안에 java 코드 삽입 되어 있는 형태
서블릿에 비해 html 코드 쉽게 작성 가능
목적java 코드 이용한 Business logic 처리에 적합
-> MVC 패턴의 Controller 역할
tag 이용한 Presentation logic 처리에 적합
-> MVC 패턴의 View 역할

3 Form 태그

<form action="action">  <!-- method 생략 기본값 get -->
<form action="action" method="get">
<form action="action" method="post">
  • action : 웹 서버에서 처리할 컴포넌트
    • jsp 파일 경로 or servlet 요청 주소
  • method : 웹서버로 요청 방법
    • get or post

GET 방식

  • 요청 파라미터 값이 URL에 명시되어 웹 서버로 전송
  • http://서버IP:포트/컨텍스트명/경로명/login**?name=홍길동&age=20**
  • 서블릿에서 doGet() 메서드 실행
  • url에 데이터가 노출되어서 보안에 취약

POST 방식

  • 요청 파라미터 값이 HTTP Request 요청 body에 포함되어 전송
  • http://서버IP:포트/컨텍스트명/경로명/login
  • url 명시 X
  • 서블릿에서 doPost() 메서드 실행
  • 새로 고침 시 재요청 의사를 묻는 정보창 실행

파라미터값

  • request 객체 메서드
  • .jsp : <input type=”” name=”name명”/>
  • .java : request.getParameter(name명)

서블릿 한글 처리

  • get : url이 utf-8 인식
  • post : http body에 한글 인코딩 작업 필요 request.setCharacterEncoding("UTF-8");

4 세션

5 쿠키

0개의 댓글