[Servlet] Servlet과 @WebServlet 어노테이션

소이뎁·2023년 11월 27일
1

Servlet

목록 보기
4/13
post-thumbnail

📍 Servlet

  • HttpServlet 클래스를 상속받은 클래스이다.
  • 클라이언트의 요청을 처리하고, 동적으로 웹 페이지를 생성하거나 데이터를 처리하여 응답을 생성한다.

📍 web.xml 파일의 Servlet 매핑 코드 흐름

  • 1️⃣ http://localhost/lesson01/ex1를 브라우저에 입력한 후 엔터
  • 2️⃣ /lesson01/ex1<url-pattern>을 탐색
  • 3️⃣ 매핑된 <servlet-name>UrlMappingEx01임을 확인
  • 4️⃣ <servlet> > <servlet-name>UrlMappingEx01인 것을 탐색
  • 5️⃣ 연결된 <servlet-class>com.test.lesson01.UrlMappingEx01임을 확인 후 해당 클래스 실행
<!-- 🔵 src/main/webapp/WEB-INF/web.xml -->

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
	<display-name>Test</display-name>
	
	<servlet>
		<servlet-name>UrlMappingEx01</servlet-name> <!-- 4️⃣ -->
		<servlet-class>com.test.lesson01.UrlMappingEx01</servlet-class> <!-- 5️⃣ -->
	</servlet>
	
	<servlet-mapping>
		<servlet-name>UrlMappingEx01</servlet-name> <!-- 3️⃣ -->
		<url-pattern>/lesson01/ex01</url-pattern> <!-- 2️⃣ -->
	</servlet-mapping>
</web-app>
// 🟢 src/main/java/com/test/lesson01/UrlMappingEx01.java

package com.test.lesson01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UrlMappingEx01 extends HttpServlet {

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
    	// 한글 깨짐 방지
		response.setContentType("text/html"); // 텍스트를 응답으로 보내고자 할 때는 text/plain을, HTML을 보내고자 할 때는 text/html을 사용
		response.setCharacterEncoding("utf-8");
		
		PrintWriter out = response.getWriter();
		out.print("<html><head><title>인사</title></head><body>");
		out.print("<h1>안녕하세요</h1>");
		out.print("</body></html>");
	}
}

📍 @WebServlet 어노테이션으로 Servlet 매핑 코드 대체하기

  • 매핑하려는 클래스에 @WebServlet("매핑 주소") 어노테이션을 추가한다.
  • web.xml 파일에 Servlet 매핑 코드를 작성하지 않아도 된다.
// 🟢 src/main/java/com/test/lesson01/UrlMappingEx01.java

package com.test.lesson01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/lesson01/ex01")
public class UrlMappingEx01 extends HttpServlet {

	@Override
	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
		response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
		
		PrintWriter out = response.getWriter();
		out.print("<html><head><title>인사</title></head><body>");
		out.print("<h1>안녕하세요</h1>");
		out.print("</body></html>");
	}
}

2개의 댓글

comment-user-thumbnail
2023년 11월 28일

이거 보고 web.xml 파일 흐름 이해했어요

1개의 답글