Java 275

Spring Boot 28강 - 게시글/댓글 수정(modify) 기능 구현 및 권한 체크

게시글(질문), 댓글(답변)을본인만 수정할 수 있도록"수정" 버튼과 기능을 제공수정 폼에서 기존 내용 자동 세팅수정 시 수정일자(modifyDate) 자동 저장수정/삭제 버튼은 오직 작성자 본인에게만 보임Spring Security + Principal로 권한 체크Thymeleaf로 동적 UI 제어JavaScript로 삭제 시 confirm 경고창📌 주요 코드 예제1) 게시글 상세 페이지 (question_detail.html) 수정    삭제 수정/삭제 버튼: 로그인 상태 && 작성자 본인에게만 표시수정일자가 있으..

Spring Boot 27강 - UserRole(회원 역할) 관리 및 MainController(메인 페이지) 분리

회원 역할 Enum(UserRole)으로 관리:ADMIN/USER 구분, 권한에 따른 기능 분리 기반 마련UserSecurityService에서 Role 자동 부여"admin" 계정은 관리자 권한, 그 외는 일반 유저MainController로 메인(/) 페이지 따로 분리이후 홈 화면, 공지사항, 최근글 등 커스터마이즈 가능📌 예제 코드UserRole.javapackage com.mysite.sbb.user;import lombok.Getter;@Getterpublic enum UserRole { ADMIN("ROLE_ADMIN"), USER("ROLE_USER"); private String value; UserRole(String value) { this.value..

Spring Boot 26강 - 질문(게시글) 수정/삭제/작성자 표시와 인증 기반 권한 체크

질문 등록/수정/삭제 시 로그인 필수작성자만 수정/삭제 가능, 권한 없으면 에러 반환질문 상세·댓글 모두 작성자/작성일/수정일 표시수정/삭제 버튼도 작성자 본인만 보임로그인하지 않은 사용자는 답변 입력 불가삭제는 JS confirm 창으로 추가 안전장치📌 예제 코드1) Question@Entitypublic class Question { // ... (생략) @ManyToOne private SiteUser author; private LocalDateTime modifyDate; // ... (생략)}author: 작성자 저장 (회원 엔티티 연관관계)modifyDate: 수정일2) QuestionServicecreate/modify/delete에 작성자 또는 수정일 저장/삭..

Spring Boot 25강 - 로그인·로그아웃·회원가입(동적 메뉴/예외처리/인증처리) 완성

이 글에서는로그인/로그아웃/회원가입 전체 구현Spring Security 연동 및 동적 메뉴(로그인/로그아웃)아이디/이메일 중복 등 예외처리UserDetailsService 구현으로 시큐리티 인증 연동을 모두 실전 수준으로 다룹니다.📌 1) 동적 네비게이션 메뉴 (navbar.html) 자유게시판 로그인 로그아웃 회원가입 ..

Spring Boot 24강 - 회원가입 기능 구현 (엔티티, 서비스, 컨트롤러, 폼 검증)

스프링 부트와 JPA, Validation, Thymeleaf를 활용해회원 정보를 안전하게 저장하고회원가입 폼의 유효성 검증 및비밀번호 암호화(BCrypt)까지 실제 서비스에 필요한회원가입 기능의 전체 과정을 구현합니다.📌 예제 코드 구성1) 회원 엔티티(SiteUser.java)package com.mysite.sbb.user;import jakarta.persistence.Column;import jakarta.persistence.Entity;import jakarta.persistence.GeneratedValue;import jakarta.persistence.GenerationType;import jakarta.persistence.Id;import lombok.Getter;import lo..

Spring Boot 23강 - Spring Security 기본 적용과 모든 경로 허용 설정

실제 웹 서비스를 만들 때 보안(인증/인가) 처리를 위해Spring Security는 거의 필수적으로 사용됩니다.하지만 초기에 도입하면 로그인 없이도 모든 기능을 테스트할 수 있도록전체 URL 허용(permitAll) 설정을 먼저 적용하는 것이 좋습니다.또한, 회원 기능을 구현할 때 사용할 비밀번호 암호화(PasswordEncoder) 설정도함께 추가해야 합니다.📌 주요 코드 및 설정1) Gradle dependencies 추가implementation 'org.springframework.boot:spring-boot-starter-security'implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6'spring-boot-star..

Spring Boot 22강 - 게시판 페이징 처리와 페이지네이션 구현

게시글이 많아질수록 한 번에 모두 보여주면화면도 복잡해지고 성능도 떨어집니다.Spring Data JPA의 Paging 기능을 이용하면자동으로 데이터를 쪼개서(page 단위로) 보여줄 수 있습니다.페이지네이션 UI도 손쉽게 구현할 수 있습니다.📌 예제 코드1) Repository: 페이징 쿼리 지원package com.mysite.sbb.question;import java.util.List;import org.springframework.data.domain.Page;import org.springframework.data.domain.Pageable;import org.springframework.data.jpa.repository.JpaRepository;public interface Questi..

Spring Boot 21강 - 네비게이션 바를 Thymeleaf Fragment로 공통화하기

웹 서비스에서 상단 메뉴(네비게이션 바)는모든 페이지에 공통으로 들어가는 대표 UI입니다.Thymeleaf의 fragment 기능을 활용하면네비게이션 바 코드를 별도 파일로 분리해모든 레이아웃/페이지에서 재사용할 수 있습니다.📌 예제 코드(1) 네비게이션 바 fragment 정의 (navbar.html) 게시판 로그인 th:fragment="navbarFrgment"네비게이션 바 영역을 fragment로 등록(2) 레이아웃(기본 템플릿)에서 fragment 호출 (layout.html) ..

Spring Boot 20강 - Thymeleaf Fragment로 폼 에러 메시지 공통화하기

여러 화면에서 입력 폼 오류 메시지를 반복적으로 출력해야 할 때,Thymeleaf의 fragment(조각 템플릿) 기능을 활용하면에러 메시지 영역을 한 곳에 정의해두고 손쉽게 불러올 수 있습니다.이렇게 하면 유지보수와 코드 재사용성이 크게 좋아집니다.📌 예제 코드(1) 에러 메시지 fragment 정의 (form_errors.html) (2) 상세/답변 폼에서 fragment 불러오기 💬 코드 설명form_..

Spring Boot 19강 - 질문 등록에 Validation 적용하고 에러 메시지 출력하기

질문 등록(글쓰기) 시제목/내용 입력이 비었거나, 제목이 200자를 초과하면폼 검증을 통해 에러 메시지를 표시하고정상 입력 시에만 질문을 저장합니다.이 과정은 웹 서비스에서 데이터 무결성을 지키는 데 매우 중요합니다.📌 예제 코드QuestionForm.javapackage com.mysite.sbb.question;import jakarta.validation.constraints.NotEmpty;import jakarta.validation.constraints.Size;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class QuestionForm { @NotEmpty(message = "제목을 입력해주세요.") @Size..

반응형