Spring Boot
[Spring] 예외처리와 오류 페이지
[Spring] 예외처리와 오류 페이지
2022.01.041. 서블릿 예외처리 서블릿은 2가지로 예외를 처리합니다. Exception response.sendError(Http 상태 코드, 오류 메시지) "정상적인 흐름" WAS -> 필터 - > 서블릿 -> 인터셉터 -> 컨트롤러 Exception "컨트롤러에서 예외가 발생한 경우" WAS 컨트롤러(예외 처리해주는 경로) 컨트롤러에서 발생한 예외가 WAS까지 전파가 됩니다. 서버 내부에서 처리할 수 없는 오류가 발생한 것으로 판단하여 HTTP 상태 코드를 500을 반환합니다. WAS에서 오류를 처리하는 페이지 경로로 다시 수행이 됩니다. WAS에서 오류를 처리하는 페이지 경로를 컨트롤러에서 호출을 하여 오류 페이지를 보여줍니다. Exception 오류 페이지 예 @Controller public class E..
[Spring] 서블릿 Filter와 스프링 Interceptor의 개념과 사용방법
[Spring] 서블릿 Filter와 스프링 Interceptor의 개념과 사용방법
2021.12.301. Filter와 Interceptor 개념 Filter와 Interceptor은 공통적인 관심 사항이 있을 때 사용합니다. 공통적인 관심 사항 : 여러 로직에서 공통으로 관심있는 관심사 Filter와 Interceptor는 HttpServletRequest를 제공합니다. 예) 로그인을 안하면 회원 수정, 삭제, 게시물 삭제, 등록 등을 보지를 못합니다. 여기서 공통으로 로그인에 대한 인증을 관심을 가지고 있습니다. 이 관심사를 Filter와 Interceptor로 해결할 수 있습니다. 2. 서블릿 Filter 필터의 흐름 적절한 요청이 왔을때 : Http 요청 -> 서버 -> 필터 -> 서블릿 -> 컨트롤러 적절하지 않은 요청이 왔을 때 : Http요청 -> 서버 -> 필터 -> X 적절한 요청이 왔..
[Spring] @ScriptAssert 오류내용 및 해결방법
[Spring] @ScriptAssert 오류내용 및 해결방법
2021.12.281. 오류 내용 및 원인 @ScriptAssert(lang="javascript" script="내용")을 적을 때 밑에와 같은 오류가 발생할 수 있습니다. org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException: HV000232: No JSR 223 script engine found for language "javascript". 이 오류가 발생하는 이유는 JDK 버전이 11버전이 아니기 때문입니다. 2. 해결방법 해결방법은 JDK버전을 변경해주면 됩니다. 인텔리제이에서 JDK 버전을 변경하는 방법은 [파일] -> [프로젝트 구조] -> 프로젝트 -> version 11를 하면 해결이 됩니다.
[Spring] 메시지, 국제화 개념 및 사용 방법
[Spring] 메시지, 국제화 개념 및 사용 방법
2021.12.26메시지와 국제화의 개념과 사용방법을 설명하기 전에 먼저 예시를 먼저 들어보겠습니다. 여기서 이름, 나이, 아이디, 비밀번호가 적힌 페이지수가 20개라고 예시를 들어보겠습니다. 근데 여기서 아이디와 비밀번호를 ID, Password로 변경을 하고 싶으면 20개의 페이지를 다 들어가서 하나씩 하나씩 변경을 해줘야 되는 됩니다. 이런 번거로운 일을 줄이기 위해 사용하는 것이 메시지 기능입니다. 1. 메시지란? 위에 예시처럼 여러 페이지에 있는 다양한 메시지를 한 곳에서 관리하는 기능입니다. 2. 국제화란? 메시지랑 비슷한 기능을 하는데 Accept-Lange에서 나라언어 우선순위에 따라 메시지를 해당하는 나라 언어로 변경해주는 기능입니다. 예를 들어보면 구글에서 영어로 된 부분을 한국어로 번역 이런 것을 본 ..
Thymeleaf 사용 방법 및 특징
Thymeleaf 사용 방법 및 특징
2021.12.241. 스프링 부트에서 Thymeleaf 사용법 2. Thymeleaf의 특징 1. Thymeleaf 사용법(인텔리제이) 프로젝트 생성할 때 패키지, 경로 등 다 설정을 하고 next(다음)을 누른다. 누르면 밑에 사진과 같이 나올 것이다. 그러면 검색 부분에 thymeleaf를 검색한다. 검색을 하면 아래와 같은 사진처럼 나오는데 체크박스를 체크를 해준다. 그 후 완료 버튼을 누르고 build.gradle를 확인하고 설정이 다 될 때까지 기다린다. *build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' } 이와 같이 되어있을 것이다. 만약 프로젝트 생성할 때 까먹고 thymelea..
[Spring]@RestController, @Controller 개념 및 예시
[Spring]@RestController, @Controller 개념 및 예시
2021.12.191.@RestController 2.@Controller 3.@RestController과 @Controller예시 1. @RestController @RestController을 확인해보면 @ResponseBody와 @Controller이 들어있다. @ResponseBody : 응답할 내용을 HTTP 메시지 바디에 담아서 응답한다. @ResponseBody로 인해서 return 되는 것들은 view 이름을 탐색하는 게 아니라 HTTP 메시지 바디에 담겨서 응답이 된다. 2. @Controller @RestControlle와 달리 @ResponseBody가 없다. @RestController과 @ResponseBody가 없고 그냥 @Controller인 상태에서 return을 하게 되면 view 이름을 ..
[Spring]프론트 컨트롤 개념 및 예제(단순하고 실용적인 컨트롤러)
[Spring]프론트 컨트롤 개념 및 예제(단순하고 실용적인 컨트롤러)
2021.12.18프론트 컨트롤 개념 및 예제(Model 추가) 이 부분은 잘 설계된 것이다. 그런데 조금 더 고치자면 ModelView를 항상 생성하고 반환해야 하는 것을 고칠 것이다. 프론트 컨트롤 실행 순서(단순하고 실용적인 컨트롤러) 클라이언트가 FrontController에 Http 요청을 한다. 요청을 받은 FrontController은 요청을 확인하고 컨트롤러를 조회를 한다 조회한 컨트롤러를 호출하고 viewName을 반환받는다 반환받은 viewName을 viewResolver를 호출하고 MyView를 반환받는다. 반환받고 render를 호출하고 응답을 해준다. public interface Controller{ String process(Map paramMap, Map model); } public clas..
[Spring]프론트 컨트롤 개념 및 예제(Model 추가)
[Spring]프론트 컨트롤 개념 및 예제(Model 추가)
2021.12.02프론트 컨트롤 개념 및 예제(view 분리) 여기에서 MemberInputController, MemberSaveController, MemberListController 컨트롤들이 HttpServletRequest, HttpServletResponse를 꼭 필요로 하지 않습니다. HttpServletRequest로 요청을 받던 정보들을 Map으로 받으면 컨트롤러가 서블릿 기술을 몰라도 동작합니다. 그리고 request 객체를 Model로 사용하는 대신에 별도의 Model 객체를 만들어서 반환을 해주면 됩니다. 그리고 뷰 이름이 중복되어 컨트롤러는 뷰의 논리 이름만 반환하고 프론트 컨트롤에서 물리적 위치를 처리하면 됩니다. 프론트 컨트롤 실행 순서(Model 추가) 클라이언트가 프론트 컨트롤에 요청을 합..
[Spring]프론트 컨트롤 개념 및 예제(View 분리)
[Spring]프론트 컨트롤 개념 및 예제(View 분리)
2021.11.28https://hoestory.tistory.com/12 이곳에서 보면 String path = "경로"; RequestDispatcher dispatcher = request.getRequestDispatecher(path); dispatcher.forward(request, response); 이 코드들이 controller마다 중복되어 나타나고 깔끔하지 않다. 그래서 깜끔하게 분리하기 위해 view를 분리한다. 프론트 컨트롤 실행 순서(view 분리) 클라이언트가 FrontController에게 HTTP 요청을 한다. 요청을 받은 FrontController은 매핑 정보를 조회하여 컨트롤러를 조회한다. 조회한 컨트롤을 호출하고 호출한 컨트롤러에서 뷰를 반환 받는다. 반환받은 뷰를 호출한다. jsp ..
[Spring]프론트 컨트롤 개념 및 예제(프론트 컨트롤러 도입)
[Spring]프론트 컨트롤 개념 및 예제(프론트 컨트롤러 도입)
2021.11.28프론트 컨트롤이란 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출한다. 프론트 컨트롤이 실행되는 순서 클라이언트가 FrontController로 요청 FrontController는 요청된 매핑정보 확인 매핑 정보 확인 후 controller 호출 해당 controller에 맞는 jsp로 이동 jsp로 이동후 클라이언트에게 응답 공통 코드 @Getter @Setter @ToString public class Member { private Long id; private String username; private int age; public Member(String username, int age) { this.username = usernam..
[Spring]Servlet(HttpServletRequest,HttpServletResponse)개념 및 예제
[Spring]Servlet(HttpServletRequest,HttpServletResponse)개념 및 예제
2021.11.25Servlet객체 생성 방법 Servlet객체를 생성하려면 클래스를 만들고 만든 클래스에 HttpServlet를 상속을 받는다. 그 후 @WebServlet를 등록한다. @WebServlet(name="servletTest", urlPatterns="/test") // name = 서블릿 이름 // urlPatterns = URI주소 public ServletTest extends HttpServlet{ } * HttpServlet 상속을 받으면 HttpServletRequest와 HttpServletResponse를 사용할 수 있다. HttpServletRequest의 역할 Http 요청 메시지를 개발자가 편하게 파싱 할 수 있도록 도와주고 결과를 HttpServletRequest객체에 담아서 제공한다..
[Spring]싱글톤 패턴의 개념 및 예제
[Spring]싱글톤 패턴의 개념 및 예제
2021.11.19싱글톤 패턴이란? 싱글톤 패턴이란 객체의 인스턴스가 1개만 생성되는 것을 보장하는 디자인 패턴입니다. -> 객체 인스턴스를 2개 이상 생성하지 못하도록 막아야 하고 private를 사용해서 외부에서 new 키워드를 사용해서 객체를 인스턴스 생성하는 것을 못하도록 막아야 합니다. 싱글톤 패턴 만드는 방법 public class Singleton { private static final Sigleton instance = new Singleton(); public static Singleton getInstance() { return instance; } 위에 있는 코드처럼 하면 객체의 인스턴스는 1개만 생성할 수 있습니다. 그런데 이렇게 작성할 경우 문제점이 있습니다. 문제점은 아래에서 확인해 보겠습니다...