| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스프링
- Model
- frontController
- @RequestParam
- .xml
- Java
- jointpoint
- springmvc
- @ResponseBody
- @Valid
- application.properties
- AOP
- PointCut
- springjdbc
- after-throwing
- 의존주입
- 비즈니스레이어
- 유효성검사
- MVC
- 어노테이션
- @
- 서비스레이어
- 바인딩변수
- @RequestMapping
- 생성자주입
- gradle
- produces
- c:if
- SpringBoot
- spring
- Today
- Total
메모장
리스너 ( jsp 크롤링 ) 본문
[리스너]
: 특수한 형태의 서블릿
: 특정시간에 기능을 추가함
(서블릿이 동작되었을때 , 서버가 시작할때 ,서블릿이 변경되었을때 ...)
서블릿을 개발하는 일은 굉장히 드물지만
: 샘플데이터 확보시에 쓰일수 있다. 포폴에 눈에 띄자
-> 서버가 시작되었니?
샘플데이터를 크롤링 해서 , 크롤링 완료된 데이터들을 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으로 고정시켰다.
'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 |