메모장

리스너 ( jsp 크롤링 ) 본문

JSP/개념정리

리스너 ( jsp 크롤링 )

Itchild 2024. 4. 29. 11:40
728x90
반응형

 

[리스너]

: 특수한 형태의 서블릿

: 특정시간에 기능을 추가함

(서블릿이 동작되었을때 , 서버가 시작할때 ,서블릿이 변경되었을때 ...)

서블릿을 개발하는 일은 굉장히 드물지만

: 샘플데이터 확보시에 쓰일수 있다. 포폴에 눈에 띄자

-> 서버가 시작되었니?

샘플데이터를 크롤링 해서 , 크롤링 완료된 데이터들을 DB에 insert()해줘 !

 

(저번에 배웠던 필터와 같이 알아두기 )

필터

: 특수한 형태의 서블릿

: 특정 요청(필터 맵핑)에 대해 기능을 추가하고 원래의 요청을 정상 수행

: 인코딩

https://tjdals9219.tistory.com/212

 

필터와 리스너 둘다 서블릿파일이다 . 서블릿파일은 Not POJO 인데 필터와 리스너가 그걸 상속받은 자식 클래스들이다 .

 

정리

 

필터는 요청 맵핑, 리스너는 시간 타이밍에 기능을 추가할 수 있다.

필터는 인코딩에 적용하고 리스너는 샘플데이터에 적용하자

 

리스너 - 어떠한 상태를 감지하는 클래스 이다. 서블릿 동작했나? 서버 동작했나? 감지한다.

특정 이벤트(특정 사건)가 발생하기를 기다리다가 실행되는 컴포넌트(메서드나 함수)를 말한다.

Servlet / JSP의 리스너와 같이 웹 애플리케이션의 시작이나 종료, 특정 객체의 생성, 소멸과 같은 것도 이벤트라고 말할 수있다. 서버 시작을 감지해서 샘플 데이터를 만들수 있다.

서블릿이 처음 만들어지면 동작해 서버 시작을 동작해 맨 첫번째만 체크

 

 

리스너 서블릿 파일을 생성해보자 !

 

 

 

Servlet / JSP 이벤트소스와 리스너 종류

이벤트 소스
이벤트 리스너
발생 이벤트 객체
설명
ServletContext

ServletContextListener
ServletContextEvent
웹 애플리케이션의 시작,
종료, 이벤트에 대한
이벤트 리스너.
핸들러 메서드에서는
ServletContext에 대한 참조를 얻을 수 있다.
ServletContextAttributeListener
ServletContextAttributeEvent
ServletContext에 setAttribute, removeAttribute 했을때
이벤트 리스너.
핸들러 메서드에서는
추가하거나, 제거, 수정된
attribute 정보를
얻을 수 있다.
HttpSession

HttpSessionListener
HttpSessionEvent
Http 세션의 시작, 종료 이벤트에 대한 이벤트 리스너.


핸들러 메서드에서는
현재 세션 객체를 얻을 수
있다.
HttpSessionAttributeListener
HttpSessionBindingEvent
HttpSession에 attribute를
추가하거나, 제거, 수정됐을
때에 이벤트 리스너.


핸들러 메서드에는 추가,
제거, 수정된 attribute를
얻을 수 있다.
ServletRequest

ServletRequestListener
ServletRequestEvent
클라이언트로부터의
요청으로 인한 ServletRequest 생성과
응답 이후 servletRequest
제거시에 대한 이벤트 리스너


핸들러 메서드에서는 요청에
관련된 정보와 ServletContext에 대한 참조
가능
ServletRequestAttributeListener
ServletRequestAttributeEvent
ServletRequest에 attribute를
추가하거나, 제거, 수정했을때에 대한 이벤트 리스너.


핸들러 메서드에서는
추가 하거나, 제거, 수정된
attribute 정보를 얻을 수
있다.

우리는 여기서 제일 첫번째 ( ServletContextListener ) 웹 애플리케이션의 시작, 종료, 이벤트에 대한 이벤트 리스너를 클릭한다. 이것은 서블릿이 처음 만들어지면 동작해~ 서버 시작을 동작해~.

서버 동작 우리가 맨처음 실행을 했을 때 리스너가 먼저 서버를 감지해줘를 클릭했다.

1. 서버동작 -----> 2. 리스너가 서버 시작을 감지 -----> 3. 필터에서 init( ) 메서드 호출 같은 그 부분이 리스너 에서는 contextInitialized( ) 함수이다 ! 여기에 크롤링할 샘플 데이터 정보를 가져올 기능을 수행하면 된다.

그러고 DB에 insert() 해줘 ~

 

크롤링할 내용들을 datas 라는 새로 선언한 배열 리스트에 담아줘 , DAO 안에서 insert 기능을 해야 하기 때문에 BoardDAO 의 객체도 하나 만들어줘 . 우리는 for문을 돌려서 하나씩 차곡차곡 정보를 집어넣어야 하는데 얼마만큼 해야되냐면 크롤링 하는 datas의 크기 (사이즈) 만큼 ! for문을 돌린 정보들을 차례로 객체의 인덱스 번호 0번부터 차례차례 insert 해줘 !

 

크롤링할때 샘플 데이터 추가

라이브러리 크롤링할때 필요한 jsoup.jar 파일 까먹지 말고 꼭 넣기 !

라이브러리 잊지말고 꼭!

원래 있던 코드에서 수정하느라 VO의 이름이 정확하진 않지만

음악 제목/가수를 크롤링하기 위해 멤버변수만 바꾸었다.

 

DAO

 

 

결과

번호를 클릭하면 가수/ 제목이 들어가 있는 모습 ~ ! 작성자는 편의상 admin으로 고정시켰다.

 

 

728x90
반응형

'JSP > 개념정리' 카테고리의 다른 글

FrontController  (0) 2024.04.29
커스텀 태그  (0) 2024.04.29
필터 (.java 클래스)  (0) 2024.04.26
session  (0) 2024.04.26
JSTL 실습 & EL 식  (5) 2024.04.26