전체 글 17

Servlet & Dispatcher-Servlet(서블릿 & 디스패처 서블릿)

사용자가 서버에 요청을 보내면 서버 내부에서 어떤 경로와 방식으로 처리되는지 궁금해진다. 오늘은 그 중심에 있는 서블릿에 대해서 이해하기 쉽고 아주 간단하게 정리해 보고자 한다. 목차- Servlet(서블릿)이란?- Dispatcher Servlet(디스패처 서블릿)이란?- Dispatcher Servlet(디스패처 서블릿) 동작 과정Servlet(서블릿)이란? 서블릿은 Java 기반 웹 서버(WAS)가 HTTP 요청을 처리하기 위해 사용하는 자바 클래스다. 쉽게 말하면 '브라우저가 보낸 요청을 받아서 그에 대한 응답을 만드는 자바 프로그램'이다. 서블릿 특징HTTP 요청을 받아서 처리 가능요청/응답 객체(HttpServletRequest, HttpServletResponse) 사용doGet(), do..

공개 글 2025.11.28

예외 처리(Exception Handling)

JAVA에서 예외가 무엇인지부터 예외 처리를 어떻게 하는지, 또 이게 실무에서 왜 중요한지에 대해서 정리해볼까 한다.목차- 에러와 예외의 차이- 예외의 종류- 예외 처리 방법- 예외 처리의 중요성에러와 예외의 차이에러(Error) 메모리 부족이나 시스템 오류처럼 복구 불가능한 심각한 문제를 뜻한다. 시스템 수준에서 발생하여 프로그램 종료로 이어지는 경우가 많고, 에러는 컴파일 시점에 확인할 수 없으며 주로 실행 중에 발생한다. 즉 예측이 불가능해 개발자가 따로 코드 수정과 같은 것들로 처리할 수 없다.ex) OutOfMemoryError, StackOverflowError 예외(Exception) 개발자가 코드를 통해 처리할 수 있는 비교적 덜 심각한 오류를 뜻한다. 정상적인 프로그램 흐름을 방해하는 ..

공개 글 2025.11.14

세션(Session), 쿠키(Cookie), 토큰(Token), JWT 완벽 정리

로그인과 사용자 인증 관련 단골 용어인 세션, 쿠키, 토큰, JWT에 대해서 정리해 보고자 한다. 이 용어들을 정리하기 전에 로그인과 사용자 인증에 대해서 먼저 얘기해보자.사용자 인증? 사용자 인증은 쉽게 말해 '이 요청을 보낸 사람이 누구인지 확인하는 과정'이다. 크게 나눠 설명해 보자면 '로그인 인증'과 '지속 인증'으로 나눌 수 있을 거 같다. 평상시에 어떤 서비스를 이용하기 위해 로그인 할 때를 생각해보자. 우리는 처음에 어떤 페이지에 들어가서 아이디와 패스워드를 입력하는 '로그인 인증'을 한다. 이는 사용자가 아이디와 비밀번호를 입력했을때 가입이 되어있는 사용자인지 확인하는 과정이다. 여기까지는 누구나 알고 있을 것이다. 하지만 사용자를 인증하는 과정은 여기서 끝이 아니다. 로그인을 하고 ..

공개 글 2025.10.28

Spring Batch(Tasklet)에서 트랜잭션 롤백(rollback)이 되지 않는 경우와 해결 방법

최근에 프로젝트에서 개발자들이 배치 작업 중 에러가 발생해도 rollback이 되지 않는다는 문의가 들어왔다. 문제의 원인과 해결 방법을 찾아냈고, 그것을 기록해둘까 한다.원인 코드를 살펴보니 배치에서는 예외를 catch만 하고 throw는 하지 않고 있었다. 온라인 서비스에서는 예외를 throw하면 상위 계층(Controller, @ControllerAdvice 등)에서 받아서 후처리할 수 있지만, 배치는 예외를 throw하면 Step이 실패 처리되며 Job 실행이 중단되고 예외를 받아서 후처리해줄 곳이 없기 때문이다. 해결 방법 & 예시 코드 롤백되지 않는 코드@Slf4j@Componentpublic class SampleTasklet implements Tasklet { @Autowire..

공개 글 2025.09.12

Reflection과 Class 객체

Reflection에 대해 쓰기 전에 먼저 Class 객체에 대해서 먼저 정리해보자.Class 객체 정의 Class는 모든 자바 클래스의 '메타데이터(설계도)'를 담는 그릇 일반 객체(new Person())는 실제 사람 인스턴스 Class은 사람이라는 설계도 자체 왜 Class를 쓰는가? 어떤 클래스가 올지 모를때 사용한다.(추가로, 어떤 객체가 올지 모를때 사용된다는 점은 비슷하지만 Object는 실제 객체를 담는 것이고, Class는 클래스의 메타데이터를 담는다.) Object obj = new Person(); // 실제 Person 객체가 들어감 Class clazz = Person.class; // Person의 설계도Object obj = clazz.getDeclaredConstruc..

공개 글 2025.07.31

static

자바 소스를 보다보면 자주 보이는 녀석. 오늘은 static 변수와 메서드에 대해서 글을 쓴다.static? static은 '정적인', '고정된'이라는 뜻을 가지고 있는 만큼, 클래스 안에서 static으로 선언된 변수나 메서드는 객체 없이 클래스 자체에 고정되어 공유되는 형태로 동작한다. 보통 우리가 어떤 클래스 안에 변수나 메서드를 다른 곳에서 사용하려면 객체 생성을 해줘야 한다. 예를 들어,public class MathUtil { public int square(int x) { return x * x; }}MathUtil util = new MathUtil();int result = util.square(5); 이런 식으로 귀찮게 객체 생성을 한 번 해주고 메서드를 사용..

공개 글 2025.05.02

트랜잭션(Transaction)

대학생 시절에 정보처리기사 공부하다가 트랜잭션의 특성을 외웠던 게 기억난다. 사실 그때 개발을 아예 안해봐서 뭔 뜻인지도 모르고 그냥 달달 외웠던 게 기억난다. 현재 프로젝트에서 개발 가이드 문서를 보다가 트랜잭션 처리하는 쪽이 나와서 보다가 오랜만에 찾아보게 되었고 그런 김에 간단하게 트랜잭션에 대해서 글을 써본다.트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스 작업을 하나의 묶음으로 처리하는 단위다. 트랜잭션은 반드시 모두 성공하거나, 모두 실패해야 한다. 중간에 오류가 발생하면 이전까지의 작업도 모두 취소되어 데이터가 꼬이지 않게 해야한다. 트랜잭션이 필요한 이유 예를 들어, 콘서트 좌석 예약 시스템에서는 좌석을 동시에 여러 명이 선택할 수 있다. 만약 트랜잭션이 없다면 같은 좌석이 중..

공개 글 2025.04.28

JavaScript 기본

script 태그 자바 스크립트는 html 위에서 동작하는 언어다. 자바 스크립트를 html 안에 작성하기 위해서는 script 태그를 사용하는 방법이 있다. Event 웹 브라우저 위에서 일어나는 사건을 Event(이벤트)라고 한다. 마우스를 클릭했을때, 키보드를 눌렀을때, 스크롤 바를 움직였을때 등 모두 이벤트라고 할 수 있다. 사용자가 어떤 이벤트를 발생시켰을 해당 이벤트에 대응하여 처리하는 것을 'Event Handler(이벤트 핸들러)'라고 하는데, 이벤트 이름 앞에 'on'을 붙이고 이벤트에 대한 동작(함수)을 처리해주면 된다. 아래 코드에서처럼 on______ 뒤에는 자바스크립트 문법이 와야한다. 제어할 태그 선택하기 'querySelector()', 'getElementById..

공개 글 2025.03.24

Web Server와 WAS

Web Server와 WAS, 그들의 역할 Web Server 웹 서버는 정적인 요청(HTML, CSS, JavaScript, image 등)을 처리하는 서버다. 대표적인 웹 서버로는 Apache HTTP Server, NginX, Microsoft IIS 등이 있다. WAS(Web Application Server) WAS는 동적인 요청(서버에서 처리해야 하는 로직이 필요한 요청)을 처리하는 서버로, Servlet과 JSP를 처리할 수 있는 Web Container를 제공한다. 대표적인 WAS로는 Tomcat, JBoss, WebLogic, WebSphere 등이 있다.   클라이언트로부터 요청이 Web Server로 들어오면 정적인 요청일 경우 WAS까지 가지 않고 Web Server에서 처리한다. ..

공개 글 2025.03.17