이 포스팅을 읽기전에 이전의 작성한 포스팅들과 연관되어 설명하는 것이 많기때문에 이전 포스팅들을 읽고오는 것을 추천한다.아래 링크는 포스팅 순서대로 첨부한 것이다.2024.09.04 - [Framework/Spring] - [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답 [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다. Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com2024.09.06 - [Frame..
[Spring] - API예외 처리를 이해하기위한 기본 개념!이 포스팅은 이전에 작성한 아래 포스팅을 읽었다는 가정하에 작성한다.이전포스팅을 읽어야만 현재 포스팅이 이해되는 것은 아니지만 글의 흐름을 이전포스팅과 연관지어서 작성하며 코드를lee-dev-log.tistory.com [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다. Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com먼저 이 포스팅을 읽기전에는 이전에 작성했던 위의 포스팅을 읽은 후에 ..
이 포스팅은 이전에 작성한 아래 포스팅을 읽었다는 가정하에 작성한다.이전포스팅을 읽어야만 현재 포스팅이 이해되는 것은 아니지만 글의 흐름을 이전포스팅과 연관지어서 작성하며 코드를 이전 포스팅의 것을 재사용하기때문에 이전 포스팅을 읽어보는것을 권장한다 ! [Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다. Exception으로 처리하기기본적으로 자바는 예외가 발생하lee-dev-log.tistory.com 이전 포스팅에서는 예외 처리, HTTP 상태코드에 맞는 에러 페이지를 작성하여 /template..
![[Spring] 쉬우면서 정확하게 익혀보는 필터와 인터셉터의 예외처리 흐름과 예외 페이지 응답](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj4gyE%2FbtsJq7NQgDq%2FcVKtQs6oWGv2eM8qel2l9k%2Fimg.png)
스프링을 사용하지 않는 순수 서블릿 컨테이너는 Exception과 response.sendError(Http상태코드, 오류메시지)두 가지 방식으로 예외를 처리한다. Exception으로 처리하기기본적으로 자바는 예외가 발생하면 예외를 다음 메서드로 계속 넘기다가 main()메서드가 종료될 때 까지 예외를 처리하지 못할 경우 예외 정보를 남기고 해당 쓰레드는 종료된다.웹 애플리케이션은 쓰레드가 하나만 있는것이 아니라 사용자별로 각각의 쓰레드가 할당된다.애플리케이션 어딘가에서 예외가 발생하고 그 예외를 처리하지 않고 서블릿 밖으로 까지 예외가 전달된다면 어떻게 될까?컨트롤러(예외발생) -> 인터셉터 -> 서블릿 -> 필터 -> WAS예외는 타고타고 올라가서 WAS까지 전달되며 WAS는 서버에서 발생한 예외..
![[Spring] 서블릿 필터와 스프링 인터셉터 비교하기!](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqNoS3%2FbtsIWfzYzbv%2FhmAK74KUYgkqWhgImKRAA0%2Fimg.png)
일반적인 웹 페이지는 로그인한 사용자와 로그인하지 않은 사용자를 구분하여 역할에 맞는 기능을 제공해야한다.먼저, 프론트 화면처리로 로그인하지 않은 사용자에게는 상품관리라는 버튼을 숨겨서 기능을 제공하지 않을 수 있지만, URL경로를 직접 호출하게 된다면 프론트 처리만으로는 서비스에 제한을 둘 수 없다.이런 로그인 여부확인은 회원가입, 정보수정, 삭제 등등 많은 서비스에서 사용되는데 여러 곳에서 공통으로 사용되는 로직을 웹에서는 스프링인터셉터를 사용하여 웹과 관련된 공통 관심사를 처리할 수 있다.서블릿 필터필터는 서블릿 스펙의 일부로 스프링 MVC와는 독립적으로 동작하며 모든 요청에 대해 동작할 수 있다.javax.servlet.Filter인터페이스를 사용한다.모든 HTTP요청에 대해 공통적으로 처리해야 ..
em.find() vs em.getReference()em.find()데이터베이스를 통해서 실제 엔티티 객체를 조회em.getReference()데이터베이스 조회를 미루는 가짜 엔티티 객체 조회Member member = new Member(null, "memberA"); em.persist(member); em.flush(); em.clear(); Member findMember = em.find(Member.class, member.getId()); System.out.println("findMember = " + findMember); tx.commit();find()로 멤버를 조회할 시에는 findMember변수의 사용 여부와 관계없이 메서드가 실행되는 시점에 즉시 실제 데이터베이스로부..
![[Spring] JdbcTemplate](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUcipi%2FbtsH1LS8T6o%2FegrHQ9hRRJPJmIUOnNHp60%2Fimg.png)
JDBCJDBC가 무엇인지 알기위해서는 JDBC가 어떤이유로 탄생했는지에 대해 먼저 알아보자웹 서비스의 동작방식사용자인 클라이언트가 웹 브라우저를 통해 데이터를 사용하기위해 어떤 요청을 보내면 애플리케이션 서버는 요청한 데이터를 데이터베이스로부터 꺼내어 클라이언트에게 응답하는 방식이 가장 기초적인 웹 서비스의 기본동작 방식이다.이 때 애플리케이션 서버가 데이터베이스로부터 데이터를 받기위해 아래 세 가지 동작이 필요하다Connection: 서버와 DB를 연결, 이 때 네트워크 통신은 TCP/IP를 사용한다SQL전달: 원하는 데이터를 받기위해 DB가 이해할 수 있는 SQL을 전달한다.응답: DB에서 요청받은 SQL을 수행하여 결과로 나온 데이터를 애플리케이션 서버에 전달한다여기서 문제가 생기는데,Connec..

메시지 기능이란? 만약 아래 HTML코드에서 label태그에 명시되어있는 '상품명', '가격', '수량'등을 수정해야한다면 하나씩 일일이 파일을 찾아가며 변경하거나 IDE의 replace기능사용해서 수정해야 할 것이다. 이렇게 수정할 경우 너무 번거로울뿐만아니라 repalce방식으로 수정을 할 경우 잘 못 수정되는 경우도있을 것 이다. 상품명 가격 수량 이런 불편함을 해결해주기위해 '메시지'라는 기능이 사용된다. Spring에서는 이 메시지기능을 어떻게 제공하고 어떻게 사용하게하는지 알아보자 HTTP 메시지에 담긴 accept-language헤더의 값을 서버에서 인지하고 해당 국가에 맞는 메시지 언어를 제공한다. 국가에 맞는 언어 메시지를 제공하기위해 아래와 같이 properties파일을 생성한다. 이 ..