Day 33 - JSP

haxxru log;·2026년 4월 16일
post-thumbnail

이 글은 2026년 04월 16일 작성된 글입니다.

오늘은 CLI 기반 명언앱의 영속성 처리 마무리와 파일 저장 기능,
그리고 JSP와 서블릿 기반 웹 개발의 기초를 정리했다.


1. 파일 저장 테스트 완료

파일 기반 저장소에서 명언을 저장하는 테스트를 통과시켰다.

@Test
void save() {
    // 저장 테스트
}
  • 파일 저장 로직 정상 동작 확인
  • 메모리 기반 → 파일 기반으로 확장

2. db 폴더 gitignore 처리

데이터 저장 폴더는 Git 관리 대상에서 제외했다.

db/
  • 실행 중 생성되는 데이터는 버전관리 불필요
  • 협업 시 충돌 방지

3. ID 증가 로직

명언을 여러 번 등록할 때 ID가 자동으로 증가하도록 구현했다.

WiseSaying wiseSaying = new WiseSaying(++lastId, content, author);
  • 1번 → 2번 → 3번 순차 증가
  • 데이터 식별 안정성 확보

4. 명언 삭제 기능

파일 저장소에서도 삭제 기능을 구현했다.

repository.deleteById(id);
  • 데이터 삭제 시 파일도 함께 제거
  • CRUD 완성

5. 영속성 처리 흐름

이전에는 메모리에만 저장되던 데이터를
파일로 저장하면서 프로그램 종료 후에도 유지되도록 개선했다.

  • 메모리 저장 → 프로그램 종료 시 데이터 소멸
  • 파일 저장 → 재실행 시 데이터 유지

6. JSON과 Map 변환

데이터를 파일에 저장하기 위해 JSON 형태로 변환하는 구조를 사용했다.

String json = jsonUtil.toJson(map);
Map<String, Object> map = jsonUtil.toMap(json);
  • 객체 → JSON → 파일 저장
  • JSON → 객체로 복원 가능

7. JSP 개념

JSP는 HTML 안에 Java 코드를 넣어 동적인 페이지를 만드는 기술이다.

  • 웹 브라우저는 HTML/CSS/JS만 해석 가능
  • JSP는 서버에서 실행되어 HTML로 변환됨
  • MVC 구조에서 View 역할 담당

8. Tomcat과 웹 구조

Tomcat은 JSP와 Servlet을 실행하는 웹 서버이다.

  • Tomcat = 서버(컨테이너)
  • 프로젝트 = 그 안에서 실행되는 애플리케이션

비유:

역할의미
톰캣건물
프로젝트입주자

9. Servlet 기초

서블릿은 HTTP 요청을 처리하는 자바 클래스이다.

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.getWriter().append("<h1>Hello</h1>");
    }
}
  • URL 요청 → 서블릿 실행
  • HTML을 직접 만들어 응답

10. 파라미터 처리 (웹)

웹에서도 쿼리 파라미터를 통해 값을 받는다.

String danStr = req.getParameter("dan");
// /gugudan?dan=5&limit=12
  • CLI의 Rq와 비슷한 개념
  • 문자열로 받아서 필요한 타입으로 변환

11. 개발 환경 설정

  • Tomcat 설치 및 연동

  • Lombok 설정

  • 자동 빌드 및 핫리로드 설정

  • 코드 수정 → 바로 반영되는 환경 구축


12. gitignore 설정

톰캣과 로그 관련 파일은 Git에서 제외했다.

logs/
*.log
.smarttomcat/
conf/
  • 불필요한 파일 관리 제거
  • 저장소 깔끔하게 유지

✅ 정리

  • 파일 저장소를 도입하면서 데이터가 프로그램 종료 후에도 유지되도록 만들 수 있었다.
  • JSON 변환을 통해 객체를 파일로 저장하는 구조를 이해할 수 있었다.
  • JSP와 Servlet을 통해 웹 요청과 응답이 어떻게 처리되는지 흐름을 알게 되었다.
  • CLI에서 사용하던 파라미터 처리 개념이 웹에서도 동일하게 적용된다는 점이 연결되었다.

0개의 댓글