개발/Java/Spring7 DispatcherServlet은 어떻게 View와 Controller를 구별할까 - DispatcherServlet은 class의 annotation 유무를 보고 구분을 한다 실제 코드는 Github 링크를 참고하면 된다! 아래는 예제 프로젝트의 파일들이다. 딱 보니, 여러 개의 controller와 Spring의 @RequestMapping이 보인다 프로세스 public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); String uri = sc.nextLine(); Set classes = componentScan("ex03"); findUri(classes, uri); } 처음 프로젝트를 실행시키면, URI 입력 받고, 입력 받은 데이터를 잘라서 findURI에 넣는다 .. DEV/Java 2023. 7. 5. DispatcherServlet 왜 필요한가 DispatcherServlet 왜 필요한가 **요약** - DispatcherServlet은 모든 웹 요청에 대해 적절한 Controller로 라우팅을 해준다 예제 코드를 분석하면서 DispatcherServlet이 왜 필요한가 알아봅시다 아래 코드는 RequestMapping 어노테이션을 사용하여 특정 URI를 메서드에 연결하고 있습니다. 이는 스프링 프레임워크의 RequestMapping과 유사한 동작을 수행합니다. 코드 분석 public class App { public static void findUri(UserController uc, String uri) throws Exception { boolean isFind = false; Method[] methods = uc.getClass().g.. DEV/Java 2023. 7. 5. Spring의 @RequestMapping @RequestMapping 왜 쓰냐? - 특정 URL에 메서드를 맵핑 함으로써 유지보수와 가독성 상승 - @RequestMapping이 없으면, 경로를 직접 분기를 경로가 생길 때마다 해줘야 한다 Spring을 사용하면 자주 쓰는 @RequestMapping 왜 쓰는지 알아봅시다 예제 코드 아래 예시에서는 사용자가 /login을 입력하면 login() 메서드가, /join을 입력하면 join() 메서드가 호출됩니다. import java.util.Scanner; public class App { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String path = sc.nextLine(); // path = .. DEV/Java 2023. 7. 5. 생성자 VS 빌더 패턴 생성자 Vs 빌더 패턴 1. 생성자(Constructor) 사용하기 CartRespFindAllDTO responseDTO = new CartRespFindAllDTO(productDTOList, 104500); 생성자를 사용하면 객체를 만들기 위해 필요한 파라미터를 모두 제공해야 합니다. 생성자를 통한 객체 생성은 간단하고 직관적입니다. 위 예시에서는 productDTOList와 104500이라는 두 개의 파라미터를 이용해 CartRespFindAllDTO 인스턴스를 생성합니다. 단점은 생성자에 전달된 파라미터의 순서나 의미를 즉시 이해하기 어려울 수 있습니다. 또한, 파라미터의 수가 많아지면 관리하기 어려워집니다. 2. 빌더 패턴(Builder 패턴) 사용하기 CartRespFindAllDTO res.. Computer Science/디자인패턴 2023. 7. 5. Builder 패턴 Builder 패턴 Builder 패턴은 객체 생성에 관련된 디자인 패턴으로, 객체를 생성하는 방법과 표현하는 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 합니다. DTO에 Builder를 사용하는 주요 이유는 다음과 같습니다: 1. 가독성 향상 객체 생성시에 원하는 매개변수를 선택적으로 입력하고 가독성 좋은 코드를 작성할 수 있습니다. 생성자에 많은 수의 매개변수가 있는 경우, 어떤 값이 어떤 변수에 할당되는지 이해하기 어렵습니다. 반면, Builder 패턴을 사용하면 각 변수에 어떤 값이 설정되는지 명확하게 파악할 수 있습니다. // Without Builder Product product = new Product(1, "Book", 1500, "Good book", ".. Computer Science/디자인패턴 2023. 7. 5. 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 예외처리 🐥 카카오테크캠퍼스 - 2단계 2주차 과제 - 예외처리 1. 전체 상품 목록 조회 Method : Get Local URL : http://localhost:8080/products Param : page= @GetMapping("/products") public ResponseEntity findAll(@RequestParam(defaultValue = "0") int page) { List responseDTO = new ArrayList(); // 상품 하나씩 집어넣기 responseDTO.add(new ProductRespFindAllDTO( 1, "기본에 슬라이딩 지퍼백 크리스마스/플라워에디션 에디션 외 주방용품 특가전", "", "/images/1.jpg", 1000 )); responseDT.. 프로젝트/카카오 테크 캠퍼스 2023. 7. 4. Spring Security Spring Security Spring Security는 Spring 기반의 애플리케이션의 보안(인증 및 권한, 인가 등)을 담당하는 프레임워크입니다. 웹 보안 및 메소드 보안, CSRF(Cross Site Request Forgery) 방지, 세션 관리 등 다양한 보안 기능을 제공합니다. 의존성 설치 방법은 build.gradle에 아래 한 줄을 추가하면 된다 implementation 'org.springframework.boot:spring-boot-starter-security' // 스프링 시큐리티 제공 Spring Security의 주요 특징 Comprehensive and extensible support: 인증, 인가, 세션 관리, 비밀번호 인코딩 등 다양한 보안 기능을 지원하며, 이를 .. DEV/Java 2023. 7. 4. 이전 1 다음