본문 바로가기
JSP

[JSP] 14. 서블릿과 서블릿 컨텍스트

글: Song hyun 2024. 7. 3.
728x90
반응형

[JSP] 14. 서블릿과 서블릿 컨텍스트

 

1. 정적 자원이란?

-> 정적 자원은 클라이언트가 요청하면, 요청한 자원 그대로 돌려주면 되기 때문에 웹 서버에서 요청을 처리하게 된다.

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_01/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 {
		doGet(request, response);
	}

}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">

	.main{
	
	box-sizing:border-box;
		background-color:white;
		align:center;
		width:400px;
		height:500px;
		padding:10px;
		margin:5px;
	}
	.head {
		background-color: #dcdcdc;
		padding:10px;
		margin:5px;
	}
	.container {
		padding:50px;
		margin:5px;
	}
	.list {
		background-color: #dcdcdc;
		display:flex;
		padding:10px;
		margin:5px;
		border-radius: 8px;
	}
</style>
</head>
<body>
	<div class="main">
		<div class="head"></div>
			<h1 align=center>할 일 목록</h1>
			<div class="container">
			<div class="list">쇼핑하기</div>
			<div class="list">책 읽기</div>
			<div class="list">운동하기</div>
			<div class="list">코딩 공부하기</div>
		</div>
	</div>
</body>
</html>

 

 

2. 서블릿 컨텍스트란?

(1) 서블릿 컨텍스트의 개념

 서블릿 컨텍스트란 웹 애플리케이션의 실행 환경을 나타내는 객체로, 애플리케이션 전반에 걸쳐 공유되는 정보를 제공하고, 애플리케이션 자원에 접근할 수 있게 해준다. 서블릿 컨텍스트는 웹 애플리케이션이 초기화될 때 서버에 의해 생성되며, 애플리케이션이 종료될 때까지 유지된다.

 

(2) 서블릿 컨텍스트의 주요 역할

-초기화 파라미터 읽기

-로그 작성

-자원 접근

-다른 서블릿과의 통신

 

(3) getResourceAsStream 메서드

 getResourceAsStream 메서드는 서블릿 컨텍스트 내에 존재하는 메서드로, 지정된 경로에 있는 자원을 InputStream으로 반환한다. 이를 통해 웹 애플리케이션 내의 파일을 읽을 수 있다.

728x90
반응형

'JSP' 카테고리의 다른 글

[JSP] 16.server.xml과 context.xml, web.xml  (0) 2024.07.03
[JSP] 15. 서블릿과 DB 연동  (0) 2024.07.03
[JSP] 13. 쿼리 스트링  (0) 2024.07.03
[JSP] 12. URI와 URL  (0) 2024.07.03
[JSP] 11. Servlet을 사용하여 JSON 파싱하기  (0) 2024.07.03