본문 바로가기

Spring

(9)
프로젝트 중 만난 오류 - Crawling NosuchElementException 팀 프로젝트를 진행하면서 만난 오류가 있었다. 타 사이트를 통해 웹 크롤링 정보를 DB에 담는 과정에서 발생한 오류이다. 로깅을 통해 상세정보: 까지는 정상적으로 출력이 되는 것을 확인하였는데 상세정보 다음에 들어올 내용인 상세이미지 값이 들어오지 못하고 NosuchElementException을 만났다. String detail_img = ".img_wrapper > img"; Elements eles8 = doc2.select(detail_img); // ... 생략 String detail_img2 = itr8.next().attr("src"); System.out.println("상세 이미지: "+detail_img2); 현재 이미지의 경로는 다음과 같이 해당 페이지의 .img_wrapper > ..
Spring - 다국어처리(국제화) [다국어 처리(국제화)] 하나의 페이지를 여러가지의 언어로 서비스하는 것 과거에는 언어별로 페이지를 다르게 제작함 -> 프레임워크의 다국어처리기능을 사용(별도 페이지 제작 xxx) 1) 메세지 파일 제작 1-1 .properties 언어 선택을 Locale 코드 정보로 수행 1-2) 파일명에 언어에 해당하는 Locale 코드를 추가 ex) xxx_en.properties, xxx_ko.properties, ... 1-3) 파일 내부에는 메세지 키+메세지 값을 작성 유니코드로 작성 1-1. src/main/resources에 패키지로 message 추가 1-2. New - 일반 File로 만들기 (ex) xxx_en.properties, xxx_ko.properties, ... 1-3. 파일 내부에는 메세..
Spring - 에러 페이지 설정 , 예외처리 ❗ 자주 햇갈리는 것 !! ✅ 에러처리 : 에러 자체가 발생되지 않게 선처리 (유효성 검사) 에러가 발생하더라도, 넘어갈 수 있게(try-catch) 처리 ✅ 에러 페이지 설정 : 에러는 발생할 수 있다. 에러발생 시, 왜 발생했는지 -1 어디로 가야하는지 안내 -2 해주는 페이지 ex) 웹툰에서 유료화의 링크로 가려하면 메인으로 돌려주는 방식 설정방법 공통 : 에러페이지 만들기 ${exception.message } 으로 에러상태 확인 가능 1) @ 어노테이션으로 설정 @을 앞으로 사용할 예정이라고 설정파일(.xml)에게 알려줘야함 DispatcherServlet-servlet.xml 에 네임스페이스 mvc추가 바디에 추가 복잡함(@으로 사용하려면 예외처리 클래스를 1개 이상 만들어줘야함) @Contr..
Spring 작동순서 개인적인 정리 1. 스프링 기본설정하기 ( JDK, 서버 , 등 ) 2. pom.xml 설정하기 ( java-version, DBCP, AOP, 등 jar를 넣어주는 설정 파일) 3. web.xml 설정하기 ( 특정 요청이 있을 때 DispatcherServlet을 참조하도록 = *.do 요청이 있을 때 , Encoding 설정 ) 4. Dispatcherservlet 설정하기 ( context:component-scan base-package 네임스페이스로 패키지 스캔하기 ) 5. VO와 DAO(핵심로직) 만들고 , AOP ( 횡단관심과 연결 ) -> DAO가 실질적으로 메서드를 사용하는 것이 아니니 참조할 수 있게 @Repasitory 어노테이션 사용 = @Aspect / @PointCut , 연결될 메서드에도 @..
Spring - 컨트롤러, 리퀘스트 매핑 @Controller / @RequestMapping , Spring에서 매핑하는법 Step1. @ 설정을 위해서는 스프링 컨테이너가 내가 설정한 패키지 범위를 scan 할 수 있도록 context 네임스페이스를 추가해야한다! ❗ NameSpaces에서 context를 체크하면 상단 xml schema는 자동 등록됨!! Step2. Controller 객체들에게 @Component()하자! ❗ import가 하단 사진처럼 됐으면 연결이 잘 된것이다. ✔ @Controller DS이 인식하는 C 객체로 설정해줌 implements가 필요없음 -> 오버라이딩 강제 필요없음 => 완전한 POJO가 됨 메서드 시그니쳐 변경가능 ex) public void selectOneMember(HttpServletRequest request) Setp3. 사용자의 요청과 수행메서드를 연결하자! ✔ @Re..
Spring - 디스패쳐서블릿 (DispatcherServlet) / 핸들러 매핑 (HandlerMapping) / 뷰 리졸버 (ViewResolver) DispatcherServlet이란?? - DS는 스프링MVC 프로젝트의 핵심이라고 할 수 있다. - FC 역할을 하는 서블릿을 DispatcherServlet 이라한다. - DS는 FC역할로써 클라이언트로부터 요청이 들어오게 되면 모든 요청을 먼저 받게 된다. - 이 때, DS는 자신이 직접 Controller들을 호출하지 않고, HandlerMapping을 통해서 호출하게 된다. - Controller의 수행 결과로 View의 경로(String타입)를 반환하는데, 이 경로는 ViewResolver(어떻게 가야하는지 처리해줄 수 있는 객체) 에게 전달되어 사용자에게 view 화면을 제공해준다. - 수행 후 HttpServletResponse에 있는 최정 결과를 서블릿 컨테이너에게 돌려주고, 컨테이너는 ..
AOP 용어 정리 [관점지향 프로그래밍] Aspect Oriented Programing AOP에서는 핵심로직에서 직접 공통관심을 호출하지 않고 위빙(Weaving)이라 불리는 작업을 해서 공통관심 기능 코드를 주입함 이러한 위빙작업을 하기 위해서는 어디에(Pointcut), 언제(Advice) 주입을 해야할지 알아야한다. 1) Pointcut (포인트컷 , 어디에 ) 어디에 공통관심 기능코드를 주입할 것인지 정의한다. 횡단관심을 적용할 핵심로직을 의미한다. 하나의 @Aspect 안에 여러개의 포인트 컷을 선언할 수도 있다. 2) aspect (결합) 흩어진 관심사를 모듈화한 것 (여러 핵심 기능에 적용될 관심사 모듈) 비즈니스 메서드가 시작/ 끝나면 그때 등록해둔 advice가 실행 → 스프링 컨테이너가 담당 및 관리 ..
Spring AOP ( 관점지향 프로그래밍 ) [관점지향 프로그래밍] Aspect Oriented Programing 횡단관심(cross-cutting concern)의 분리를 허용함으로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임 코드 자체를 수정하지 않고, 기존의 코드에 추가동작을 추가함으로써 수행한다. 이를 통해 기능을 수행하는 코드의 핵심부를 복잡하게 채우지 않고도 비즈니스 로직에 핵심적이지 않은 동작들을 프로그램에 추가할 수 있도록 한다. 즉 , 기능을 비즈니스로직과 공통 모듈로 분리한 후, 필요 시점에 비즈니스 로직에 삽입하여 실행하도록 한다. 핵심관점(비즈니스로직) + 횡단관점(트랜잭션 , 로그, 권한체크, 인증 ,예외처리 등)으로 관심의 분리를 이룬다. 쉽게말해 DI가 의존성(객체를 new)의 주입이라면 , AOP는 기능(lo..