Burninghering's Blog
article thumbnail
패스트캠퍼스 챌린지 - 28일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 19. 00:05

객체 컨테이너(Application context) : 객체 저장소 Map에다 객체 저장소를 만들 것이다. 빨간 코드 부분이 변경되어야 하는 부분이므로, 오른쪽 하얀 코드 상자처럼 바꾸면 코드를 바꿀 부분이 적어진다. properties는 String,String 으로 저장되고 Map은 String,Object로 저장되기 때문에 이번에는 Map을 사용한다. package com.fastcampus.ch3.diCopy2; import java.io.FileReader; import java.util.HashMap; import java.util.Map; import java.util.Properties; class Car{} class SportsCar extends Car{} class Truck ext..

article thumbnail
패스트캠퍼스 챌린지 - 27일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 18. 00:05

조상(Car) 타입의 참조변수를 사용하면 변경에 더 유리하다. (왼쪽 위 번째 상자는 변경 사항이 2개, 아래 상자는 변경 사항이 1개) 더 변경 사항을 줄이려면 별도의 메소드를 통해 객체를 생성한다. 메소드는 "기능"을 제공하고, Car car = getCar(); 와 같이 "사용"하는 코드는 바뀌지 않는다. Properties 클래스는 String,String 쌍으로 저장한다. p.load와 같이 읽어오는 메소드를 사용할 때 편해서 사용한다. config.txt처럼 key와 value가 한 줄씩 적혀있으면 읽어와서 Map처럼 등록이 가능하다. 만약 Truck으로 바꾼다면, config.txt파일만 바꾸면 되고 코드는 전혀 변경하지 않아도 된다. 컴파일이나 테스트를 하지 않아도 된다. 프로그램의 변경이..

article thumbnail
패스트캠퍼스 챌린지 - 26일차 : STS3의 프로젝트 import/export
패캠 챌린지 2023. 3. 17. 00:04

export import 위와 같이 프로젝트를 인텔리제이로 import하면 Configurations 설정을 해줘야한다. Servlet이 없다고 뜰텐데, apach tomcat 폴더의 lib를 하나씩 다 불러와준다. 다 설정하고 나면 아래의 코드에 아무런 에러가 안뜨고 빌드도 정상적으로 작동되며 서버도 실행되는 것을 볼 수 있다 package com.fastcampus.ch2; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServl..

article thumbnail
패스트캠퍼스 챌린지 - 25일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 16. 00:05

데이터의 검증 Validator에는, 맨 위처럼 메서드 2가지가 있다. 1. 매개변수로 들어온 클래스가 검증기로 검증 가능한지 알려주는 메서드 2. 실제로 검증하는 메서드 (첫번째 타겟이 검증할 객체, 에러가 검증하다 발생한 결과를 저장하는 것) 인터페이스를 구현해서, UserValidator라는 클래스를 구현해보았다. (주석 확인) 컨트롤러에서 검증을 하기엔 코드가 지저분해져서, 왼쪽과 같이 검증하는 부분을 별도로 분리해놓았다. 분리하고 나면 노란색 칸과 같이 간단해진다. 자동 검증 하는 방법 아래 파란색 칸 코드와 같이 @InitBinder를 이용해서 검증기를 등록해준다. 검증하려는 객체에다가 @Valid 어노테이션만 붙여주면 된다. binder.setValidator()라는 코드로 validator..

article thumbnail
패스트캠퍼스 챌린지 - 24일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 15. 00:04

데이터의 변환과 검증 요청을 하면 데이터가 파라미터로 값이 바뀌는데, 컨트롤러에서 MyDate를 매개변수로 하면 요청할 때 넘어온 값을 바인딩하는데 중간에 WebDataBinder가 있다. (맵에 있는 값은 String인데, MyDate의 값은 int이다) 1. 타입을 변환하고 결과를 BindingResult에 저장한다 그 다음에, 2. 데이터를 검증한다.(넘어온 값이 날짜 형식에 맞는지) 문제가 없으면 BindingResult에 저장한다 Controller가 BindingResult에 담긴 결과를 적절히 판단해서 처리할 수 있도록 한다. 실습 변환 기능 추가하는 방법 2 1.toDate() 메소드같은 변환 메서드 사용하기 2.바인딩할 객체의 타입에다가 직접 적어주기 위와 같던 회원가입 화면... 실습 ..

article thumbnail
패스트캠퍼스 챌린지 - 23일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 14. 00:05

DispatcherServlet이란? - 스프링 MVC의 요청 처리 과정 역할 1) 입력/처리/출력을 하는 서블릿들(왼쪽 3개) 에서도 입력 부분같은 공통된 처리 부분을 앞으로 따로 빼내서 컨트롤러들의 공통 부분을 제거하는 것이 역할이다. 각 서블릿이나 컨트롤러가 해야될 공통된 부분을 디스패처서블릿이 앞에서 전처리를 해주는 것이다. 역할 2) 요청이 오면 디스패처서블릿이 요청을 해당 컨트롤러의 메소드를 호출하고 그 결과로 뷰 이름을 받는다. 그 뷰 이름으로 해당 뷰를 찾아서 뷰가 응답한다. 디스패처서블릿이 핸들러매핑과 연결되어 있는데, 핸들러매핑은 key-value로 URL-메소드를 매핑시켜놓는다. 그 정보를 저장하고 있다가 요청이 왔을 때 요청을 어떤 메소드와 연결시키면 좋을 지 핸들러매핑에게 물어본다..

article thumbnail
패스트캠퍼스 챌린지 - 22일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 13. 00:05

예외 처리 이론 컨트롤러 안에 메소드에서 예외가 발생했을 때 예외처리를 처리할 메소드를 만들 수 있다. 메소드 파라미터 안에는 처리할 예외를 넣어주고 @ExceptionHandler 어노테이션을 붙인다. 두 번째와 세 번째 메소드의 Model m은 서로 다른 객체이다. 두번째 메소드는 모델에다 예외를 넣어 전달했다. @ControllerAdvice로 전역 = "모든 컨트롤러" 에서 처리하는 클래스를 작성 가능하다. 같은 NullPointerExeption 예외를 처리하는 메소드가 있다면, 전역처리 클래스보다는 같은 컨트롤러 내의 예외 처리 메소드가 우선된다. 400번대는 클라이언트 에러 500번대는 서버 에러 첫 번째 catcher2 메소드는 200 ok 상태 코드가 나오는데, 405번으로 바꾸려고 하는..

article thumbnail
패스트캠퍼스 챌린지 - 21일차 [스프링의 정석:남궁성과 끝까지 간다]
패캠 챌린지 2023. 3. 12. 00:05

예외 처리 ExceptionController.java package com.fastcampus.ch2; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class ExceptionController { @RequestMapping("/ex") public String main() throws Exception { try { throw new Exception("예외가 발생했습니다."); } catch (Exception e) { return "error"; } } } error.jsp 예외가 발생했습니다. 발생한 예외..