back/Servlet

Servlet) HTML 응답을 Servlet에서 직접 생성하기

pogun 2025. 2. 27. 22:55

**일반적으로는 JSP를 사용하는 게 더 효율적으로 HTML 작성 가능합니다!!**

Servlet : Java 코드 안에서 HTML을 작성 (지금 해볼 것!)

JSP : HTML 코드 안에 Java를 작성 (일반적!)


1. web.xml (Deployment Descriptor) 설정

: web.xml 파일은 Servlet을 설정하고 URL 매핑을 정의하는 역할

<servlet>
    <servlet-name>hello</servlet-name>    
    <servlet-class>com.mulcam.edu.servlet.HelloSvl</servlet-class>
</servlet>       

<servlet-mapping>
    <servlet-name>hello</servlet-name>    
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

: <servlet> 태그: Servlet 클래스를 등록

    - servlet-name: 해당 Servlet의 논리적 이름 (URL 매핑에서 사용됨)

    - servlet-class: 실제 Servlet 클래스 경로

: <servlet-mapping> 태그: 특정 URL 요청을 해당 Servlet으로 연결

    - url-pattern/hello이므로 http://localhost:8080/프로젝트명/hello 요청 시 HelloSvl 실행


2. HelloSvl.java 구현

package com.mulcam.edu.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloSvl extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet doGet");

        // 응답 데이터 타입 및 인코딩 설정
        response.setContentType("text/html; charset=utf-8");

        // HTML을 출력하기 위한 PrintWriter 생성
        PrintWriter pw = response.getWriter();

        // HTML 응답 생성
        pw.println("<html>");
        pw.println("<head>");
        pw.println("<title>HelloServlet</title>");
        pw.println("</head>");
        pw.println("<body>");
        pw.println("<h1>Hello Servlet</h1>");
        pw.println("<p>welcome</p>");
        pw.println("</body>");
        pw.println("</html>");

        pw.close();  // PrintWriter 닫기
    }
}

** Servlet에서 HTML 응답을 직접 생성할 수 있지만, 일반적으로는 JSP를 사용하여 더 효율적으로 HTML을 작성 **

: doGet() 메서드

    - 사용자가 GET 요청을 보내면 실행된다.

    - response.setContentType("text/html; charset=utf-8")

        - 브라우저가 응답을 HTML 문서로 인식하도록 설정

        - 한글 깨짐 방지를 위해 UTF-8 인코딩 설정

    - PrintWriter 객체를 이용해 HTML 응답을 직접 작성


3. index.html (클라이언트 페이지)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<a href="./hello">Hello Servlet 으로 이동</a>

</body>
</html>

: 브라우저에서 index.html을 열면 "Hello Servlet으로 이동" 링크가 표시됨

: 사용자가 링크 클릭 시 /hello로 요청이 전송되며 HelloSvl 실행


4. 실행 흐름

1. 브라우저에서 index.html을 열기

2. 링크 클릭( /hello 요청 전송)

3. web.xml에서 /hello 요청을 HelloSvl과 연결

4. HelloSvl.doGet() 실행 (HTML 응답 생성)

5. 브라우저에 "Hello Servlet" 페이지 표시

 

결과: