개발자도구만 열면 CSS가 깨지는 이유? DevTools 재정의 문제 해결
프로젝트/서블릿 기반 쇼핑몰2025. 2. 13. 10:09개발자도구만 열면 CSS가 깨지는 이유? DevTools 재정의 문제 해결

개발 중 CSS가 어떻게 적용되는지 확인하기 위해 크롬 개발자도구(DevTools)를 열었는데 의도한 CSS가 적용되지 않는 문제가 생겼다.처음 페이지를 로드할 때는 제대로 보였지만, 개발자도구를 열기만 하면 이전의 CSS로 적용이 되는 현상이 발생했다.사파리나 다른 브라우저에서는 아무런 문제가 없었다.이 문제를 해결하는 과정에서 Chrome DevTools의 Override 기능을 알게 되었고, 이를 활용하는 방법까지 정리해 보았다.1. 이상한 점 발견 : "style.css"만 문제?내 프로젝트에서는 Tailwind를 사용 중이었고, 빌드 후에는 Tailwind CSS는 일반 CSS로 변환된다.(이 부분은 Tailwind CSS 사용하기(3 버전)에 정리해두었다.)처음엔 Tailwind의 빌드 문제를..

Tailwind CSS 사용하기(3 버전)
프로젝트/서블릿 기반 쇼핑몰2025. 2. 12. 11:21Tailwind CSS 사용하기(3 버전)

1. CLI로 사용하는 방법1.1 Tailwind 설치1.1.1 npm을 사용한 설치npm init -y npm install -D tailwindcssnpx tailwindcss init1.1.2 npm 없이 실행하기 (맥북용)curl -sLO https://github.com/tailwindlabs/tailwindcss/releases/latest/download/tailwindcss-macos-x64chmod +x tailwindcss-macos-x64mv tailwindcss-macos-x64 tailwindcss./tailwindcss init1.2 input.css 생성@tailwind base;@tailwind components;@tailwind utilities;이 파일을 통해 실제 CS..

DispatcherServet 커스텀 구현 시 주의할 점
프로젝트/서블릿 기반 쇼핑몰2025. 2. 11. 11:00DispatcherServet 커스텀 구현 시 주의할 점

스프링의 DispatcherServlet을 서블릿으로 커스텀 구현할 때 과거에는 *.do 방식으로 요청을 가로챘기 때문에 상관없었지만, 루트 경로(/)를 활용해서 모든 요청을 가로채는 방식에는 정적 리소스와 관련해서 주의해야 할 점이 있다.이 글에서는 주의할 점과 문제를 해결하는 방법, 그리고 실제 스프링에서 매핑을 처리하는 방식에 대해 알아보겠다.1. 과거의 '*.do' 방식과거에는 *.do로 요청을 가로채는 방식으로 DispatcherServlet을 만들었기 때문에 JSP나 정적 리소스 요청과 서블릿 요청이 섞이지 않았다.정적리소스는 DefaultServlet이 처리하고, jsp는 JspServlet이 처리하고 동적 요청은 *.do 끝나기 때문에 DispatherServlet이 처리했다.그런데 이 방..

Java Unchecked Warning 해결 방법
프로젝트/서블릿 기반 쇼핑몰2025. 1. 3. 11:52Java Unchecked Warning 해결 방법

ServletContext의 Attribute에서 List 값을 다운 캐스팅해서 가져올 때 Unchecked Warning이 발생했는데 이 경고를 해결하는 두 가지 방법을 소개해보겠다.1. Unchecked Warning 원인1.1 제네릭과 타입 소거Unchecked Warning은 주로 제네릭과 관련해서 발생한다. 제네릭은 컴파일 타임에만 타입을 유지하고 런타임에는 타입이 소거된다.이로 인해 컴파일 타임에는 타입 안전성을 보장하더라도 런타임에서는 이를 보장하지 못하게 된다.1.2 주요 원인은 Object로 저장해서 제네릭 타입으로 다운 캐스팅을 해야할 때반환 타입이 Object이므로 특정 타입으로 캐스팅할 때 컴파일러는 타입 안전성을 검증할 수 없다. 왜냐하면 런타임에는 제네릭이 소거되기 때문이다.아래..

첫 스프링 컨트리뷰트 도전기(feat.실패)
프로젝트/서블릿 기반 쇼핑몰2025. 1. 2. 11:31첫 스프링 컨트리뷰트 도전기(feat.실패)

얼마전 서블릿 컨테이너 초기화에 대해 공부했다.그리고 NHN Academy에서 진행했던 서블릿 기반 쇼핑몰을 다시 만들면서 스프링에서 서블릿 컨테이너 초기화를 어떻게 진행하는지 찾아보았다.코드가 그렇게 길지는 않아서 코드 첨부 후에 이어서 경험을 공유해보겠다.@HandlesTypes(WebApplicationInitializer.class)public class SpringServletContainerInitializer implements ServletContainerInitializer { @Override public void onStartup(@Nullable Set> webAppInitializerClasses, ServletContext servletContext) ..

Servlet으로 만드는 쇼핑몰 프로젝트
프로젝트/서블릿 기반 쇼핑몰2025. 1. 1. 18:19Servlet으로 만드는 쇼핑몰 프로젝트

옛날에 NHN Academy 부트캠프에서 Servlet과 JSP로 쇼핑몰을 만드는 프로젝트를 진행했었다.당시에는 주어진 TODO를 채우면서 Servlet을 설정하고 FrontController의 형태를 구현하는 방식으로 프로젝트를 진행했다.하지만 여러 이유로 완성하지는 못했고, 이후에 완성하려 했지만 관련 자료를 잃어버려서 하지 못했다. 그래서 공부했던 기록을 다시 남겨둘 겸 그 프로젝트를 다시 시작하려고 한다.과거의 아쉬움을 채우는 데 그치지 않고 더 발전된 방식으로 만들어보는 것이 목표다.이번에는 나만의 방식으로 조금 더 스프링의 DispatcherServlet의 형태를 만들어 볼 것이고 여러 방면에서 스프링의 철학을 담아보려고 한다.(이미 진행중이라서 느끼는건데 스프링을 모방하는 것은 쉽지 않고, ..

image