JSP와 서블릿: 동적 웹 개발의 기초

2024. 10. 18. 14:22·🗄️ Backend/JSP

서블릿(Servlet)과 JSP

서블릿이란?

서블릿은 클라이언트의 요청을 처리하고 동적 웹 콘텐츠를 생성하는 Java 프로그램입니다. 서블릿은 순수 자바 코드로 작성되며, 클라이언트 요청에 따라 HTML 응답을 생성합니다. 서블릿은 자바 쓰레드를 이용하여 다수의 요청을 효율적으로 처리할 수 있는 강력한 구조를 가지고 있습니다.

URL 매핑

서블릿은 여러 개가 있을 수 있으며, 브라우저에서 웹 컨테이너에 요청할 때 서블릿을 구분하기 위해 URL 매핑이 필요합니다. URL 매핑을 통해 보안을 강화하고, 사용자에게 이해하기 쉬운 URL을 제공할 수 있습니다.

WebServlet 어노테이션

@WebServlet 어노테이션을 사용하여 서블릿 클래스를 선언하고 구성할 수 있습니다. 이를 통해 다음과 같은 작업을 수행할 수 있습니다:

  • URL 매핑: 특정 URL 패턴에 서블릿을 매핑하여 해당 URL로 요청이 오면 서블릿이 실행되도록 설정합니다.
  • 서블릿 이름 설정: 서블릿의 이름을 지정합니다.
  • 로드 순서 지정: 여러 서블릿을 로드하는 순서를 조정할 수 있습니다.

GET과 POST 방식

1. GET 방식

  • 개념: 서버에서 데이터를 요청할 때 사용됩니다.
  • 특징:
    • URL에 데이터를 포함하여 전송합니다 (주소에 노출됨).
    • 데이터 크기 제한이 있으며 (약 255자), 캐시 및 히스토리에 저장될 수 있습니다.
    • 민감한 데이터 전송에는 부적합합니다.

2. POST 방식

  • 개념: 서버로 데이터를 전송할 때 사용됩니다.
  • 특징:
    • URL에 데이터가 포함되지 않아 주소에 노출되지 않습니다.
    • 데이터 크기 제한이 없으며, 캐시 및 히스토리에 저장되지 않습니다.
    • 대용량 데이터 전송에 적합합니다.

GET과 POST 방식의 차이

GET 방식 POST 방식
URL에 데이터 포함 URL에 데이터 포함 안 됨
데이터 크기 제한 있음 데이터 크기 제한 없음
캐시 및 히스토리에 저장 캐시 및 히스토리에 저장 안 됨
보안에 취약 보안에 강함

서블릿의 주요 메서드

  • doGet(HttpServletRequest request, HttpServletResponse response): GET 요청 처리
  • doPost(HttpServletRequest request, HttpServletResponse response): POST 요청 처리
  • service(HttpServletRequest request, HttpServletResponse response): 클라이언트 요청에 따라 doGet 또는 doPost 메서드 호출

서블릿 예제

@WebServlet("/banana")
public class ServletBasic extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<body>");
        out.println("오 이게 서블릿이야?");
        out.println("</body>");
    }
}

웹.xml 설정

<servlet>
    <servlet-name>basic</servlet-name>
    <servlet-class>kr.co.koo.ServletBasic</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>basic</servlet-name>
    <url-pattern>/peach</url-pattern>
</servlet-mapping>

URL 매핑

URL 매핑을 통해 사용자가 이해하기 쉽고 간결한 URL을 생성할 수 있습니다. 예를 들어, URL 매핑 전에는 http://localhost:8181/JSPBasic/servlet/kr.co.park.HelloWorld와 같이 길고 복잡한 URL을 사용해야 하지만, URL 매핑 후에는 http://localhost:8181/JSPBasic/HelloWorld와 같이 간단한 URL을 사용할 수 있습니다.

GET과 POST 방식의 한글 처리

GET 방식 한글 처리

  • 방법: server.xml 파일에서 URIEncoding="utf-8" 속성 추가.
    <Connector port="8080" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443"
             URIEncoding="utf-8" />

POST 방식 한글 처리

  • 방법: 서블릿 코드에서 request.setCharacterEncoding("utf-8"); 메서드 호출.
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      request.setCharacterEncoding("utf-8");
      // 나머지 코드
    }

HTTP 프로토콜

HTTP(하이퍼텍스트 전송 프로토콜)는 클라이언트와 서버 간의 요청/응답 프로토콜입니다. 클라이언트가 서버에 요청을 보내면 서버는 이를 처리하고 응답을 생성합니다. 요청과 응답은 여러 헤더 필드로 구성되어 있으며, 이로 인해 통신의 내용과 형식을 제어할 수 있습니다.

주요 헤더 필드

  • Request Header:
    • Host: 요청한 서버의 호스트명과 포트 번호.
    • User-Agent: 클라이언트 소프트웨어 정보.
    • Accept: 클라이언트가 수락할 수 있는 MIME 타입.
  • Response Header:
    • Content-Type: 응답 본문의 MIME 타입.
    • Set-Cookie: 서버가 클라이언트에 전송한 쿠키.

요청 객체 관련 주요 메서드

  • getContextPath(): 웹 애플리케이션의 컨텍스트 루트 경로를 반환.
  • getMethod(): 사용한 HTTP 요청 방식 반환 (예: "GET", "POST").
  • getParameter(name): 요청 파라미터의 값을 반환 (없으면 null).

HttpRequest 방식 비교 정리

1. GET 방식

  • 목적: 서버에 데이터를 요청
  • 보안: 취약 (데이터가 URL에 노출)
  • 장점: 간단하고 사용하기 쉬움, 캐싱 가능
  • 단점: 보안 취약, 전송 가능한 데이터 크기 제한

2. POST 방식

  • 목적: 서버에 데이터 전송
  • 보안: 비교적 안전 (데이터가 URL에 노출되지 않음)
  • 장점: 높은 보안성, 대용량 데이터 전송 가능
  • 단점: GET 방식보다 복잡, 캐싱 불가능

JSP 태그

JSP 태그 종류

  1. 스크립트릿(Scriptlet): <% %> - 모든 자바 코드를 기술 가능.
  2. 지시자(Directive): <%@ %> - 페이지 속성을 지정.
  3. 표현식(Expression): <%= %> - 결과 값을 출력할 때 사용.
  4. 주석(Comments): <%-- --%> - 코드 주석 처리 시 사용.

JSP 태그 사용 예시

<%
    if(num > 0) {
%>
    <p>참!</p>
<%
    } else {
%>
    <p>거짓!</p>
<%
    }
%>

경로(PATH)

경로(Path)는 웹 개발에서 파일이나 폴더의 위치를 지정하는 방법으로, 상대 경로와 절대 경로로 나뉩니다.

상대 경로와 절대 경로

  • 상대 경로: 현재 위치한 파일을 기준으로 경로를 지정.
  • 절대 경로: 웹 서버의 루트(root) 디렉토리부터 시작하여 경로를 지정.

JSP와 서블릿을 이용한 웹 개발은 동적인 웹 콘텐츠를 생성하는 데 필수적입니다.
이 두 기술은 HTTP 프로토콜을 통해 클라이언트와 서버 간의 효율적인 통신을 가능하게 하며,
웹 애플리케이션의 구조를 탄탄하게 만들어 줍니다.


'🗄️ Backend > JSP' 카테고리의 다른 글

JSP와 MVC2 패턴  (1) 2024.10.18
JSP와 MVC 패턴: DAO/DTO, 커넥션 풀, EL, JSTL  (1) 2024.10.18
쿠키(Cookie)와 세션(Session) 완벽 가이드  (0) 2024.10.18
HTML 기초 및 태그 정리  (2) 2024.10.17
웹 프로그래밍 기초 (SERVER/CLIENT/HTML)  (0) 2024.10.17
'🗄️ Backend/JSP' 카테고리의 다른 글
  • JSP와 MVC 패턴: DAO/DTO, 커넥션 풀, EL, JSTL
  • 쿠키(Cookie)와 세션(Session) 완벽 가이드
  • HTML 기초 및 태그 정리
  • 웹 프로그래밍 기초 (SERVER/CLIENT/HTML)
hjwjo
hjwjo
백엔드 및 풀스택 개발에 관심 있는 초보 개발자의 개발 블로그입니다.
  • hjwjo
    Jeongwoo's Devlog
    hjwjo
  • 전체
    오늘
    어제
    • Devlog
      • 🗄️ Backend
        • Java
        • Spring
        • JPA
        • SQL
        • JSP
        • AWS
        • GCP
        • Linux
        • GitHub
        • ML
        • Security
      • 🖥️ Frontend
        • React
        • CSS
      • 🏅 Project
        • Hackathon
        • Team Project
      • 📊 Algorithm
        • BOJ
      • 📜 Certs
        • ADsP
        • SQLD
        • 정보처리기사
      • 📖
        • JavaScript
      • 일상
        • 면접후기
  • 블로그 메뉴

    • 홈
    • Devlog
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    백준
    스프링부트
    정보처리기사
    스프링
    ADsP
    데이터베이스
    java
    GCP
    http
    AWS
    java기초
    jsp
    쿼리
    백엔드
    DML
    정처기
    Spring
    자바
    SQL
    springboot
  • 최근 댓글

  • 최근 글

hjwjo
JSP와 서블릿: 동적 웹 개발의 기초
상단으로

티스토리툴바