기본 콘텐츠로 건너뛰기

Spring Security JSP 권한 처리 및 로그인 상태 표시

Spring Security JSP 권한 처리 및 로그인 상태 표시 AI 생성 이미지: Spring Security JSP 권한 처리 및 로그인 상태 표시 실무 가이드: Spring Security JSP 권한 처리 및 로그인 상태 표시 이 문서에서는 Spring Security를 활용해 JSP에서 로그인 상태에 따라 메뉴를 동적으로 보여주는 방법을 실제 예제로 설명합니다. 또한 CSS, JS 같은 정적 리소스에 대한 접근 제어 문제와 security="none" 설정이 예상대로 동작하지 않을 때 점검해야 할 사항을 함께 다룹니다. Spring Security JSP 권한 처리 및 로그인 상태 표시를 중심으로 실무 적용에 바로 쓸 수 있는 핵심 팁을 정리했습니다. 1. JSP에서 로그인 상태별 메뉴 표시 Spring Security의 JSP 태그 라이브러리를 쓰면 로그인 여부를 쉽게 검사해 메뉴를 분기할 수 있습니다. 간단한 태그만으로 익명 사용자와 인증된 사용자를 구분하고, 사용자 정보를 뷰에 안전하게 전달할 수 있습니다. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%> <!-- 익명 사용자만 로그인 링크 표시 --> <sec:authorize access="isAnonymous()"> <a href="/login.do">로그인</a> </sec:authorize> <!-- 로그인 사용자만 이름과 로그아웃 표시 --> <sec:authorize access="isAuthenticated()"> <sec:authentication var="mbrInfo" property="details.mbrInfo" /...

Spring Security 설정 완벽 가이드 — web.xml + security-context.xml 예제 총정리

Spring Security 설정 완벽 가이드 — web.xml + security-context.xml 예제 총정리 Spring Security 설정 완벽 가이드 — web.xml + security-context.xml 예제 총정리 Spring Security는 Java 웹 애플리케이션에서 인증(Authentication)과 인가(Authorization)을 처리하는 강력한 프레임워크입니다. 이번 포스팅에서는 web.xml 의 필터 등록부터 security-context.xml 의 구체적인 설정까지, 예제 코드와 함께 하나씩 살펴보겠습니다. 1️⃣ web.xml에 Spring Security 필터 등록 Spring Security를 사용하려면, 먼저 DelegatingFilterProxy 를 web.xml 에 등록해야 합니다. 이 필터는 Spring 컨테이너에서 관리되는 springSecurityFilterChain 을 서블릿 필터 체인에 연결하는 역할을 합니다. <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 위 설정을 통해 모든 요청( /* )이 Spring Security 필터 체인을 거치게 됩니다. 2️⃣ security-context.xml 설정 다음은 Spring Security의 주요 설정을 담은 s...

Spring Boot Access Log 구현 가이드 | AOP + Lombok + 실무 로그 분석

Spring Boot Access Log 구현 가이드 | AOP + Lombok + 실무 로그 분석 AI 생성 이미지: Spring Boot Access Log 구현 가이드 | AOP + Lombok + 실무 로그 분석 실무에서 바로 쓰는 Spring Boot Access Log 구현 전략 (AOP + Lombok 활용) Spring Boot 애플리케이션에서 HTTP 요청 로그(Access Log)를 자동으로 캡처하고, 요청자 IP, 요청 URI, HTTP 메서드, 파라미터까지 정확히 수집하는 방법을 단계별로 정리합니다. 이 가이드는 유지보수성과 확장성을 고려해 Lombok 과 AOP 를 결합한 구현 방식을 제시하며, 운영 환경에서 실무적으로 활용 가능한 패턴을 설명합니다. 본문 전체에서 Spring Boot Access Log 구현 가이드 | AOP + Lombok + 실무 로그 분석 키워드를 적절히 반영합니다. 1. Maven 의존성 설정 (Spring Boot + Lombok + AOP) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> Lombok을 도입하면 DTO와 빌더 코드를 대폭 줄여 가독성과 유지보수가 개선됩니다. 의존성 구성만으로도 AOP와 Lombok 결합에 필요한 기초를 마련할 ...

Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용

Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 AI 생성 이미지: Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용 이 글, Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용은 반복되는 접근자와 생성자 코드를 줄여 더 깔끔한 DTO/Entity 설계를 돕기 위해 작성되었습니다. Lombok 라이브러리를 적용하면 소스가 간결해지고 유지보수가 쉬워집니다. 실무에서 바로 쓸 수 있는 설정과 주의사항을 중심으로 정리합니다. 1. Lombok 설치 및 설정 Maven 기반 프로젝트에서는 pom.xml 에 Lombok을 의존성으로 추가해야 합니다. 아래 예시는 표준 설정이며, 프로젝트에 맞는 버전으로 변경해 사용하세요. <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> 또한 IDE(예: IntelliJ IDEA, Eclipse)에 Lombok 플러그인을 설치해야 어노테이션 기반 자동완성 및 컴파일 오류를 예방할 수 있습니다. 빌드 도구와 IDE 설정이 일치하는지 확인하세요. 2. Lombok 주요 애노테이션 @Getter : 각 필드에 대한 읽기 접근자(getter)를 자동으로 생성합니다. @Setter : 필요한 필드에 쓰기 접근자(setter)를 추가합니다. @AllArgsConstructor : 모든 필드를 매개변수로 받는 생성자를 생성합니다. @NoArgsCo...

JPA Egov

JPA Egov AI 생성 이미지: JPA Egov Spring 기반 애플리케이션에서 데이터 접근 계층을 XML로 구성하는 실무 가이드를 제공합니다. 이 문서는 데이터소스 연결, 엔티티 매니저팩토리 설정, 트랜잭션 관리까지 JPA Egov 환경에서 안정적이고 확장 가능한 설계를 목표로 핵심 설정과 의도를 설명합니다. 1. 📄 JPA 설정 XML 코드 아래 코드는 Spring에서 JPA를 XML로 설정할 때 필수적으로 포함해야 하는 빈 구성 예시입니다. JPA Egov 프로젝트에서 바로 적용 가능한 기본 골격을 보여줍니다. <!-- 데이터 소스 설정 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.mariadb.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/board?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=utf8" /> <property name="username" value="root"/> <property name="password" value="1234"/> </bean> <!-- JPA 벤더 어댑터 (Hibernate 설정) --...

spring jpa & egov & maria

spring jpa & egov & maria AI 생성 이미지: spring jpa & egov & maria 대부분의 Spring 애플리케이션에서는 `@PersistenceContext`로 `EntityManager`를 주입받고, `@Transactional`으로 트랜잭션을 처리합니다. 하지만 일부 환경(예: 전통적 서블릿 컨테이너에서의 독립 실행이나 Spring MVC가 아닌 구성)에서는 Spring의 프록시 주입과 트랜잭션 어드바이스를 기대할 수 없어, `EntityManagerFactory`를 직접 주입받아 JPA의 생명주기와 트랜잭션을 수동으로 관리해야 할 때가 있습니다. 1. 📄 핵심 JPA 설정 (XML) 다음 XML은 JPA를 구성하기 위한 기본 요소들입니다. `dataSource`와 `LocalContainerEntityManagerFactoryBean`을 정의하며, 예제에서는 `hibernate.hbm2ddl.auto`가 create 로 설정되어 있어 애플리케이션 시작 시마다 테이블을 재생성합니다. 운영 환경에서는 이 설정을 사용하면 데이터가 삭제되므로 절대로 권장되지 않습니다. <!-- 데이터 소스 (DBCP 사용) --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.mariadb.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0....

JSTL fmt:formatNumber로 백분율 처리하기 (SUM, COUNT 형변환)

JSTL fmt:formatNumber로 백분율 처리하기 (SUM, COUNT 형변환) AI 생성 이미지: JSTL fmt:formatNumber로 백분율 처리하기 (SUM, COUNT 형변환) eGovFramework 환경에서 PostgreSQL 집계 결과를 웹에 정확한 백분율로 보여주려면 몇 가지 실무 규칙을 따라야 합니다. 이 글은 데이터베이스 레벨의 형변환과 JSP에서의 포맷팅을 중심으로, "JSTL fmt:formatNumber로 백분율 처리하기 (SUM, COUNT 형변환)"에 대한 구체적인 방법을 정리합니다. 1. ❓ 문제 인식: SUM/COUNT 결과와 JSTL 연산의 충돌 PostgreSQL의 SUM() 이나 COUNT() 는 보통 정수형(BIGINT)이나 NUMERIC 타입으로 돌아옵니다. MyBatis(eGovMap 등)를 통해 JSP로 전달된 값으로 EL에서 나눗셈을 하면 의도치 않은 정수 연산이나 형 변환 오류가 발생할 수 있습니다. 현상: 정수끼리 연산하면 소수점 이하가 잘리거나, EL이 예상과 다른 타입으로 처리되어 백분율 계산이 틀리게 나옵니다. 예를 들어 ${total / denominator} 가 정수 나눗셈으로 처리되면 정확한 소수값을 얻을 수 없습니다. 따라서 백분율을 정확히 표시하려면 DB 또는 매핑 단계에서 실수 타입으로 보장하는 것이 안전합니다. 이 글은 "JSTL fmt:formatNumber로 백분율처리하기 (SUM, COUNT 형변환)"의 실무적 해법을 제시합니다. 2. 🛠️ 해결책: SQL 레벨에서 FLOAT/NUMERIC으로 형변환 가장 확실한 방법은 XML Mapper의 SQL에서 집계 결과를 명시적으로 실수 타입으로 변환하는 것입니다. ...