[JSP] 서블릿과 서블릿 컨텍스트란?

2024. 7. 4. 16:52·JAVA/JSP 프로그래밍
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>todolist</title>
<style type="text/css">

	.list {
	  display:flex;
        border: 1px solid black;
        background-color: #f8f9fa;
        padding: 10px;
        flex-direction: column;
        align-content: center;
	
	}
	
	.list-item {
	   margin:5px;
        padding:10px;
        background-color:gray;
        color: white;
        text-align: center;
        border-radius:4px;
        text-decoration: none;
	
	}

</style>



</head>
<body>
	<h2>할 일 목록</h2>
	<div class="list">
	
	<a href="#shopping" class="list-item">쇼핑하기</a>
	<a href="book" class="list-item">책 읽기</a>
	<a href="sports" class="list-item">운동하기</a>
	<a href="c" class="list-item">코딩 공부하기</a>
	</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() {
        // TODO Auto-generated constructor stub
    }


    // 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 {
	
		
	}

}

 

1. 서블릿 컨텍스트 (ServletContext)

ServletContext는 웹 애플리케이션의 실행 환경을 나타내는 객체로, 애플리케이션 전반에 걸쳐 공유되는 정보를 제공하고 애플리케이션 자원에 접근할 수 있게 해준다. 

ServletContext는 웹 애플리케이션이 초기화될 때 서버에 의해 생성되며, 애플리케이션이 종료될 때까지 유지된다.

ServletContext의 주요 역할:

  • 초기화 파라미터 읽기: web.xml에 정의된 초기화 파라미터를 읽을 수 있다.
  • 로그 작성: 애플리케이션 수준의 로그를 작성할 수 있다.
  • 자원 접근: 웹 애플리케이션의 자원 (파일 등)에 접근할 수 있다.
  • 다른 서블릿과의 통신: 다른 서블릿이나 JSP와 정보를 공유할 수 있다.

2. getResourceAsStream 메서드

getResourceAsStream 메서드는 ServletContext의 메서드로, 지정된 경로에 있는 자원을 InputStream으로 반환한다. 이를 통해 웹 애플리케이션 내의 파일을 읽을 수 있다.

// 현재 서블릿의 ServletContext 객체를 가져옵니다.
ServletContext context = getServletContext(); 

// 지정된 경로에 있는 자원을 읽어들입니다. 
// 반환된 InputStream을 통해 파일의 내용을 읽을 수 있습니다.
InputStream inputStream = context.getResourceAsStream(htmlFilePath);

'JAVA > JSP 프로그래밍' 카테고리의 다른 글

[JSP] (잠깐!) server.xml과 context.xml 그리고 web.xml 파일 이란?  (0) 2024.07.04
[JSP] 서블릿과 데이터베이스 연동  (0) 2024.07.04
[JSP] Get, Post 요청 방식에 이해  (0) 2024.07.02
[JSP] 서블릿 작성, 배포, web.xml 설정에 이해  (0) 2024.07.02
[JSP] 서블릿 Life Cycle 이란?  (0) 2024.07.02
'JAVA/JSP 프로그래밍' 카테고리의 다른 글
  • [JSP] (잠깐!) server.xml과 context.xml 그리고 web.xml 파일 이란?
  • [JSP] 서블릿과 데이터베이스 연동
  • [JSP] Get, Post 요청 방식에 이해
  • [JSP] 서블릿 작성, 배포, web.xml 설정에 이해
미로910
미로910
개발자를 꿈꾸는 민경이의 기록 블로그
  • 미로910
    개발 note
    미로910
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 설치 메뉴얼
      • HTML
      • JAVA
        • Java 기초
        • Java 응용
        • 자료구조
        • HTTP
        • JSP 프로그래밍
      • MySQL
        • MySQL 기본
        • 1일 1쿼리
      • CSS
      • Spring boot
      • JS
        • 게시판 만들기
      • Git
      • Flutter
        • MVVM 활용
        • 심화 버전
        • 1일 1 Flutter
      • 디자인 패턴의 활용
      • error note
      • My Project
        • [졸작] LLM 기반 특허 유사도 분석 시스템
        • 도서 관리 프로그램 (final project)
        • amigo
        • 친구 매칭 프로그램(FMP)
      • Python
      • 딥러닝
      • 네트워크
      • 공부 노트
        • 연구회
        • 자료구조
      • 기타
  • 블로그 메뉴

    • 홈
    • 전체보기
    • -----------------------
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Flutter
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미로910
[JSP] 서블릿과 서블릿 컨텍스트란?
상단으로

티스토리툴바