전체 글473 64. ServletContextListener와 객체 공유 (1) 서블릿 컨테이너는 웹 애플리케이션의 상태를 모니터링 할 수 있도록 웹 애플리케이션의 시작에서 종료까지 주요한 사건에 대해 알림 기능을 제공한다. 이런 알림 기능을 이용하고 싶다면, 규칙에 따라 객체를 만들어 DD 파일(web.xml)에 등록하면 된다. 이렇게 사건이 발생했을 때 알림을 받는 객체를 '리스너(Listener)'라고 부른다(그림 1). 다음은 서블릿 컨테이너가 알려주는 주요 사건과 그 규칙이다. 분류 사건 인터페이스 웹 애플리케이션 시작하거나 종료할 때 javax.servlet.ServletContextListener ServletContext에 값을 추가하고, 제거하고, 대체할 때 javax.servlet.ServletContextAttributeListener 세션 생성, 소멸 할 때 j.. 2022. 7. 9. 63. DAO 만들기 (2) 3. 서블릿에서 DAO 사용하기 web05 프로젝트의 spms.servlets 패키지의 MemberListServlet 클래스의 doGet() 메서드를 수정한다. @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = null; Statement stmt = null; ResultSet rs = null; //데이터베이스 관련 코드를 위한 try ~ catch 블록 (JDBC API 사용시 예외가 발생할 수 있기 때문) try { //JDBC 드라이버를 로딩하고 데이터베이스 연결 시 컨텍스트 초기화 매.. 2022. 7. 7. 62. DAO 만들기 (1) 이번 절에서는 서블릿이 하는 일 중에서 일부 기능을 분리한다. 완전하지는 않지만 MVC 아키텍처의 구색을 갖추게 되었다. 서블릿으로부터 분리해야 하는 기능은 데이터베이스와 연동하여 데이터를 처리하는 부분이다. 이렇게 데이터 처리를 전문으로 하는 객체를 'DAO(data access object)'라고 부른다(그림 1). DAO는 데이터베이스나 파일, 메모리 등을 이용하여 애플리케이션 데이터를 생성, 조회, 변경, 삭제하는 역할을 수행한다. DAO는 보통 하나의 DB 테이블이나 DB 뷰에 대응한다. 물론 여러 개의 테이블을 조인(join)한 데이터를 다루기도 한다. 업무 로직에서 데이터 처리 부분을 분리하여 별도의 객체로 정의하면, 여러 업무에서 공통으로 사용할 수 있기 때문에 유지보수가 쉬워지고 재사용성.. 2022. 7. 6. 61. JSTL 사용하기 (6) 3. JSTL 활용 - 회원 목록 페이지에서 자바 코드 없애기 JSTL 태그를 활용하여 회원 목록 페이지를 변경한다. EL과 더불어 JSTL을 사용하면 JSP 페이지에서 자바 코드를 완전히 제거할 수 있다. JSP 페이지에서 자바 코드를 제거하는 이유는 2가지가 있다. 첫째, JSP 페이지에 자바 코드가 있으면 웹 디자이너와 웹 퍼블리셔와 함께 작업하기 어렵다. 둘째, JSP 페이지에 자바 코드를 넣지 않으면, 자연스럽게 JSP 페이지에 비즈니스 로직을 작성하지 않게 된다. MVC 아키텍처의 핵심은 비즈니스 로직은 모델 객체에게, 화면은 JSP에게 맡기는 것이다. 회원 목록 화면을 출력하는 MemberList.jsp에서 page 지시자로 임포트 되어있는 Member 클래스와 ArrayList 클래스를 삭.. 2022. 7. 5. 60. JSTL 사용하기 (5) - 태그 여러 사이트의 내용을 가져와서 새로운 서비스를 만드는 매쉬업(Mashup)에 매우 유용한 태그이다. url 속성에 콘텐츠가 있는 주소를 지정하면, 해당 주소로 요청하고, 응답 결과를 받아서 반환한다. RSS 피드 가져오기 앞의 원래 예제는 ZDNET 사이트의 RSS 피드를 가져와서 상자에 출력하지만 지금은 페이지가 사라져서 현재 사용되는 페이지를 사용했다. 다음은 웹 브라우저의 실행 결과 화면이다(그림 1). var 속성을 설정하면, URL 응답 결과를 바로 출력하지 않고 var에 설정된 이름으로 보관소에 저장한다. 물론 scope를 통해 저장할 보관소를 지정할 수 있다. 다음 예제의 실행 결과는 다음과 같다(그림 2). RSS 피드 가져오기 - 보관소에 저장 ${zdnetRSS} 이렇게 서버에.. 2022. 7. 4. 59. JSTL 사용하기 (4) - 태그 반복적인 작업을 정의할 때 사용한다. 목록에서 값을 꺼내어 처리하고 싶을 때 이 태그를 사용하면 된다. ● 문법 콘텐츠 item 속성의 값으로 다음의 값이 올 수 있다. 더보기 ▶ 배열 ▶ java.util.Collection 구현체. 예) ArrayList, LinkedList, Vector, EnumSet 등 ▶ java.util.Iterator 구현체 ▶ java.util.Enumeration 구현체 ▶ java.util.Map 구현체 ▶ 콤마(,) 구분자로 나열된 문자열. 예) 홍길동, 임꺽정, 일지매 var 속성은 반복문을 돌면서 items에서 꺼낸 항목 값을 가리키는 참조 변수이다. begin과 end 속성은 items를 반복할 때 몇 번째 인덱스에서 시작하고, 몇 번째 인덱스에서 종.. 2022. 7. 3. 58. JSTL 사용하기 (3) - 태그 보관소에 값을 저장하는 태그가 있으면, 보관소에 저장된 값을 제거하는 태그는 태그이다. var 속성에 이름을 지정하면, 보관소에서 해당 이름을 가진 값을 제거한다. 물론 scope 속성으로 보관소를 명시할 수 있다. scope의 기본값은 page 이다. ● 문법 다음 예제 코드를 테스트 한다. c:remove 태그 보관소에 저장된 값 제거 1) ${username1} 2) ${username1} 앞의 코드를 실행한 결과는 다음과 같다(그림 1). 태그를 사용하기 전에는 usename1 값이 정상적으로 출력되지만, 사용한 후에는 값이 출력되지 않는다. JspContext 보관소에서 제거되었기 때문이다. - 태그 이 태그의 test 속성값이 참이면, 콘텐츠가 실행된다. 참거짓 테스트 결과를 보관소에.. 2022. 6. 30. 57. JSTL 사용하기 (2) - 태그 출력문을 만드는 태그다. 문법은 다음과 같다. ● 문법 또는 기본값 value 속성의 값으로 EL 표현식을 사용할 수 있다. value 값이 null이면, 기본값이 출력된다. 기본값마저 없다면 빈 문자열이 출력된다. 다음 예제 코드를 JSP 페이지에 넣고 테스트한다. 1) 2) 반갑습니다. 3) 반갑습니다. 4) 앞의 코드를 실행한 결과는 다음과 같다(그림 1). - 태그 태그는 변수를 생성하거나 기존 변수의 값을 덮어쓸 때 사용한다. 이 태그로 생성한 변수는 JSP 페이지의 로컬 변수가 아니라 보관소(JspContext, ServletRequest, HttpSession, ServletContext)에 저장된다. ● 문법 값 scope 속성의 기본값은 page 이다. scope를 생략하면 Js.. 2022. 6. 29. 56. JSTL 사용하기 (1) 'JSTL(JSP Standard Tag Library)'이라는 JSP 확장 태그의 사용법을 배워본다. JSTL은 JSP의 기본 태그가 아니므로 사용하려면 JSTL API 및 이를 구현한 자바 라이브러리를 별도로 내려받아야 한다. JSTL 태그를 이용하면 JSP 페이지에서 자바 코딩을 줄일 수 있으므로 웹 디자이너나 웹 퍼블리셔와의 공동 작업을 원활하게 진행할 수 있다. 1. JSTL 라이브러리 준비 https://stbhg5.tistory.com/67?category=910651 53. EL 사용하기 (2) ※ JSTL 설치 참고링크 : https://chrismare.tistory.com/entry/JSTL-%EA%B0%9C%EC%9A%94-%EB%B0%8F-%EC%84%A4%EC%B9%98-Core.. 2022. 6. 28. 이전 1 ··· 42 43 44 45 46 47 48 ··· 53 다음