본문 바로가기

개발자노트/Spring

(12)
프로젝트 중 만난 오류 - 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에 있는 최정 결과를 서블릿 컨테이너에게 돌려주고, 컨테이너는 ..
Spring AOP Joinpoint 바인드 변수 ※ joinpoint(조인포인트) 수행중인 포인트컷 joinpoint를 인자로 가지게되면(pjp처럼) 현재 수행중인 비즈니스메서드의 시그니처 등을 알 수 있음 pjp = ProceedingJoinPoint ※ 바인드 변수 Object returnObj 설정을 해준다면, 비즈니스메서드의 반환값을 바인드 변수에 자동으로 매핑해준다. 동적바인딩에 바인딩과 비슷하다! @ 어노테이션을 이용하여 AOP 설정하는 방법 xml파일에서 스프링 컨테이너에게 지금부터 AOP 설정을 @ 으로 한다는 것을 명시해주어야함 → aspect를 하려면 포인트컷 + 횡단관심 1) 포인트컷을 설정 연결하고자하는 횡단관심이 작성된 클래스에서 설정가능 @Pointcut 2) 횡단관심이 aspectj 될 시기를 설정 3) 객체를 Service..
AOP 용어 정리 [관점지향 프로그래밍] Aspect Oriented Programing AOP에서는 핵심로직에서 직접 공통관심을 호출하지 않고 위빙(Weaving)이라 불리는 작업을 해서 공통관심 기능 코드를 주입함 이러한 위빙작업을 하기 위해서는 어디에(Pointcut), 언제(Advice) 주입을 해야할지 알아야한다. 1) Pointcut (포인트컷 , 어디에 ) 어디에 공통관심 기능코드를 주입할 것인지 정의한다. 횡단관심을 적용할 핵심로직을 의미한다. 하나의 @Aspect 안에 여러개의 포인트 컷을 선언할 수도 있다. 2) aspect (결합) 흩어진 관심사를 모듈화한 것 (여러 핵심 기능에 적용될 관심사 모듈) 비즈니스 메서드가 시작/ 끝나면 그때 등록해둔 advice가 실행 → 스프링 컨테이너가 담당 및 관리 ..