BackEnd 87

@ExceptionHandler

스프링에서 API예외 처리 문제를 해결하기 위해 @ExceptionHandler를 제공한다. 매우 편리하여 사용하기 쉽다. package com.example.exception.api;import com.example.exception.Exception.UserException;import com.example.exception.exhandler.ErrorResult;import lombok.AllArgsConstructor;import lombok.Data;import lombok.extern.slf4j.Slf4j;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.sprin..

스프링 부트 - ExceptionResolver

스프링 부트에서 제공하는 ExceptionResolverExceptionHandlerExceptionResolver - @ ExceptionHandler를 처리함, API 예외 처리는 대부분 이 기능으로 해결한다.ResponseStatusExceptionResolver - HTTP 상태 코드를 지정해준다DefaultHandlerExceptionResolver - 스프링 내부 기본 예외를 처리한다   ResponseStatusExceptionResolver  1. @ResponseStatus 사용하여 예외 처리package com.example.exception.Exception;import org.springframework.http.HttpStatus;import org.springframework.w..

HandlerExceptionResolver

HandlerExceptionResolver을 통해 발생하는 예외에 따라서 400,404등등 다른 상태 코드로 처리하는 방법에 대해서 공부했다. @GetMapping("/api/members/{id}")public MemberDto getMember(@PathVariable("id") String id) throws IllegalAccessException { if(id.equals("ex")){ throw new RuntimeException("잘못된 사용자"); } if(id.equals("bad")){ throw new IllegalArgumentException("잘못된 입력 값"); } return new MemberDto(id,"hello"+..

스프링 오류페이지

스프링 부트는 기본적으로 오류페이지를 제공한다. BasicErrorController ==> 스프링이 기본적으로 제공하는 오류관련 컨트롤러로 기본적인 로직이 모두 개발되어 있다. //// Source code recreated from a .class file by IntelliJ IDEA// (powered by FernFlower decompiler)//package org.springframework.boot.autoconfigure.web.servlet.error;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.util.Collections;import j..

스프링 인터셉터 - 인증 체크

로그인 처리를 쉽게 구현 할 수 있는 스프링 인터셉터에 대하여 공부 했다. 스프링 인터셉터는 스프링MVC가 제공하는 기술로 서블릿 필터를 이용하여 로그인을 구현 할때보다 쉽게 개발 가능하다.  HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러  스프링 인터셉터를 구현하기 위해서는 HandlerInterceptor를 구현 해주면 되는데, 총 3개의 메서드가 존재한다.preHandle  : 컨트롤러 호출 전에 호출된다.postHandle  : 컨트롤러 호출 후에 호출된다.afterCompletion : 뷰가 렌더링 된 이후에 호출된다.  로그인 처리 구현 package hello.login.web.interceptor;import hello.login.web.Session..

서블릿 필터 - 인증 체크

구현 해야하는 기능로그인을 하지 않은 유저는 허용되지 않은 페이지로 접근 불가(로그인 페이지로 이동)허용되는 페이지들만 따로 설정로그인 하지 않은 사용자가 앞으로 개발될 페이지에 대해서 접근 못하도록 하기 package hello.login.web.filter;import hello.login.web.SessionConst;import lombok.extern.slf4j.Slf4j;import org.springframework.util.PatternMatchUtils;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servle..

로그인 처리 - 서블릿 HTTP 세션,@SessionAttribute,세션 타임아웃 설정

HttpSession을 이용하여 로그인, 로그아웃 처리를 구현 해보았다. HttpSession을 사용하면 기존에 구현했던 로그인 로그아웃 처리를 더욱 쉽게 구현 가능하다. 서블릿을 통해 HttpSession을 생성하면  쿠키가 생성된다. 이때 쿠키의 이름은 JSESSIONID이고, 값은 추정 불가능한 랜덤값이 부여된다.  코드 public interface SessionConst { String LOGIN_MEMBER = "loginMember";}HttpSession에 데이터를 보관하고 조회할때 같은 이름이 중복되어 사용되므로 인터페이스를 활용하여 상수 정의  @PostMapping("/login")public String loginV3(@Valid @ModelAttribute LoginForm..

로그인 처리 - 세션 직접 만들어 보기

세션을 직접 개발하여 적용 해보았다. package hello.login.web.session;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Arrays;import java.util.Map;import java.util.UUID;import java.util.concurrent.ConcurrentHashMap;public class SesseionManager { public static final String SESSION_COOKIE_NAME = "mySessionId"; private..

로그인 처리하기 - 쿠키 사용

단순히 쿠키만을 이용하여 로그인, 로그아웃 기능을 구현 해보았다.  @PostMapping("/login")public String login(@Valid @ModelAttribute LoginForm form, BindingResult bindingResult, HttpServletResponse response) { if (bindingResult.hasErrors()) { return "login/loginForm"; } Member loginMember = loginService.login(form.getLoginId(),form.getPassword()); log.info("login? {}", loginMember); if (loginMemb..

회원가입 로그인 구현

우선 맴버를 정의 해준다( 로그인 아이디, 패스워드를 가짐)package hello.login.domain.member;import lombok.Data;import javax.validation.constraints.NotEmpty;@Datapublic class Member { private Long id; @NotEmpty private String loginId; //로그인 아이디 @NotEmpty private String name; @NotEmpty private String password;}@NotEmpty를 넣어 줌으로써 아이디 비밀번호의 공백을 방지해준다.  @Controller@RequiredArg..

BackEnd/spring 2024.08.19