class_servlet_01 프로젝트 webapp/todolist.html 생성
flexbox 사용

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>할 일 목록</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.container {
background-color: white;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 300px;
text-align: center;
}
.title {
font-size: 24px;
font-weight: bold;
margin-bottom: 20px;
}
.task-list {
display: flex;
flex-direction: column;
gap: 10px;
}
.task {
background-color: #e0e0e0;
padding: 10px;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="container">
<div class="title">할 일 목록</div>
<div class="task-list">
<div class="task">쇼핑하기</div>
<div class="task">책 읽기</div>
<div class="task">운동하기</div>
<div class="task">코딩 공부하기</div>
</div>
</div>
</body>
</html>
서블릿 컨택스트를 활용해 서블릿 클래스 작성
package com.tenco.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@WebServlet("/todolist")
public class TodoListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public TodoListServlet() {
super();
}
// GET방식
// http://localhost:8080/class_servlet_02/todolist
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 다시 HTML 형식을 만들어서 클라이언트에게 내려주는 것은 서블릿에서 매우 불편함.
// 그렇기 때문에 서블릿 컨텍스트 객체를 활용해 코드를 만들어 보자.
response.setContentType("text/html; charset=UTF-8");
// HTML 파일 읽기
String htmlFilePath = "/todoListPage.html"; // 파일 명과 같아야 한다.
InputStream inputStream = getServletContext().getResourceAsStream(htmlFilePath);
if (inputStream == null) {
response.getWriter().write("<html><body>해당 파일을 찾을 수 없음 404</body></html>");
}
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer htmlContent = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
htmlContent.append(line);
}
reader.close();
response.getWriter().write(htmlContent.toString());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
서블릿 컨텍스트 (ServletContext)
ServletContext는 웹 애플리케이션의 실행 환경을 나타내는 객체로, 애플리케이션 전반에 걸쳐 공유되는 정보를 제공하고 애플리케이션 자원에 접근할 수 있게 해준다. ServletContext는 웹 애플리케이션이 초기화될 때 서버에 의해 생성되며, 애플리케이션이 종료될 때 까지 유지된다.
ServletContext 주요 역할 :
- 초기화 파라미터 읽기 : web.xml 에 정의된 초기화 파라미터를 읽을 수 있다.
- 로그 작성 : 애플리케이션 수준의 로그를 작성할 수 있다.
- 자원 접근 : 웹 애플리케이션의 자원(파일 등)에 접근할 수 있다.
- 다른 서블릿과의 통신 : 다른 서블릿이나 JSP와 정보를 공유할 수 있다.
getResourceAsStream 메서드
getResourceAsStream 메서드는 ServletContext의 메서드로, 지정된 경로에 있는 자원을 InputStream으로 반환한다. 이를 통해 웹 애플리케이션 내의 파일을 읽을 수 있다.
// 현재 서블릿의 ServletContext 객체를 가져옵니다.
ServletContext context = getServletContext();
// 지정된 경로에 있는 자원을 읽어들입니다.
// 반환된 InputStream을 통해 파일의 내용을 읽을 수 있습니다.
InputStream inputStream = context.getResourceAsStream(htmlFilePath);'Java' 카테고리의 다른 글
| 서블릿 필터와 리스너 (0) | 2024.07.05 |
|---|---|
| server.xml과 context.xml 그리고 web.xml 파일 (0) | 2024.07.04 |
| Get, Post 요청 방식 (1) | 2024.07.03 |
| 서블릿 작성, 배포, web.xml 설정 (0) | 2024.07.03 |
| 서블릿 Life Cycle (0) | 2024.07.03 |