목표: getPrevNotice 메서드의 SQL 쿼리를 작성한다. ID가 5인 NOTICE의 REGDATE가 NOTICE의 REGDATE보다 작은 ID를 출력 -> 2, 3, 4로 출력되어있다. 4가 출력해야 하는데 순서가 반대로 되어있다. NOTICE를 REGDATE로 역 정렬한 후의 NOTICE내의 REGDATE와 ID가 5인 REGDATE보다 작은 경우의 아이디를 출력 -> 4, 3, 2 순으로 잘 정렬되어있다. SQL 코드: getPrevNotice함수 구현 SELECT ID FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) WHERE REGDATE < (SELECT REGDATE FROM NOTICE WHERE ID=5) AND ROWNUM = 1 SELE..
목표: getNextNotice 메서드의 SQL 쿼리를 작성한다. SQL 코드: getNextNotice함수 구현 SELECT * FROM NOTICE WHERE ID = ( SELECT ID FROM NOTICE WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHERE ID=3) AND ROWNUM = 1); SELECT * FROM NOTICE ☞ NOTICE의 모든 데이터를 가져온다. WHERE ID = ( ☞ ID 값이 서브쿼리 인 경우를 선택한 후 SELECT ID FROM NOTICE ☞ NOTICE의 ID를 선택하는 서브 쿼리 WHERE REGDATE > (SELECT REGDATE FROM NOTICE WHERE ID=3) ☞ ID가 3인 NOTICE로부터 ..
목표: getNoticeList메서드 SQL 쿼리를 작성한다. SQL 코드: SELECT * FROM( SELECT ROWNUM NUM, N.* FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N ) WHERE NUM BETWEEN 6 AND 10; SELECT * FROM( ☞ 전체 데이터를 가져온다 SELECT ROWNUM NUM, N.* ☞ ROWNUM의 별칭 NUM과 아래의 서브 쿼리 전체 별칭 N의 데이터를 가져오는 서브 쿼리 FROM (SELECT * FROM NOTICE ORDER BY REGDATE DESC) N ) ☞ NOTICE내의 데이터를 REGDATE의 역순으로 정렬한 모든 데이터를 가져오는 별칭 N인 서브 쿼리내의 서브쿼리 WHERE NUM..
목표: 서비스 클래스의 큰 틀을 구현한다. 클래스 생성 클래스를 생성하면서 package를 추가한다. 코드: - NoticeService.java package com.newlecture.web.service; import java.util.List; import com.newlecture.web.entity.Notice; public class NoticeService { public List getNoticeList(){ return getNoticeList("title", "", 1); } public List getNoticeList(int page){ return getNoticeList("title", "", page); } public List getNoticeList(String field..
목표: 업무 서비스에서 필요한 서비스 함수를 어떻게 찾는지 알아본다. - 업무 서비스에서 구현해야 할 클래스 Servlet에서 업무 서비스를 분리해서 별도의 클래스를 만들고, 데이터베이스를 사용하는 코드들을 옮긴다. Servlet에서는 데이터 서비스를 받으면 된다. 관리자(회원의 기능은 모두 물려받는다): - 공지등록 - 공지 일광 공개 - 공지 수정 - 공지 삭제 - 공지 일괄 삭제 회원 - 공지 목록 조회 - 공지 상세조회 클래스 찾을 부분? NOTICE 공지 목록 조회 - 사용자 페이지 요청 getNoticeList() - 사용자 페이지 요청(번호) getNoticeList(int page) - 사용자 검색 요청 getNoticeList(String field, String query, int pa..
목표: 코드 분리를 위한 사전 설명 기업형으로 만들 경우 업무를 분담해서 프로그램을 만들게 된다. 그러한 모델에 대해서 자세히 알아본다. 서블릿으로도 충분히 프로그램을 만들 수 있다. 그리고 Controller(servlet)와 View(문서 출력 jsp)로 나누어서 만들 수도 있다. Controller가 DBMS에 접속해서 쿼리를 만들고 사용자 입출력, 업무처리를 모두 했다. 하지만 업무가 커지게 되면 입출력을 담당하는 Servlet에서 업무 서비스를 또 분리하는 것이 바람직하다. 보통은 경험이 적은 사람은 servlet에서는 사용자 입출력을 관리하고 경험이 조금 더 많은 사람이 업무 서비스를 관리한다. 왜냐하면 servlet에서는 입출력을 실수를 하더라도 입출력 문제이지만, 만약 업무 서비스에서 예를..
목표: EL에서 functions를 이용한다 functions는 EL문 내에서 사용이 가능하다. 예) ${fn:toUpperCase(fileName) } functions에도 여려가지 함수가 있고, 함수를 직접 만들수도 있다. 하지만 함수를 직접 만들어서 사용할 정도라면 다시한번 지금 작성중인 코드를 살펴볼 필요가 있다. 만약 문자를 대문자로 변경하고 싶다면, 데이터베이스내의 대문자를 변경해야하는가? X , 절대로 데이터베이스 내의 문자를 변경해서는 안된다. 모든 자료들이 영향을 받게 된다. 그러때는 functions와 같은 함수로 출력에만 대문자로 변경해주면 된다. 코드: - detail.jsp functions를 사용하기 위한 라이브러리 추가 ${fn:toUpperCase(fileName) } EL문..
목표: format태그로 숫자 형식을 변경한다 조회수에 숫자 형식을 변경한다 형식을 지정하는 여러 가지 옵션들이 있지만 태그 라이브러리만 추가해주어도 기본으로 세 자리씩 끊어준다. 옵션 정리 잘된 곳 https://www.javatpoint.com/jstl-fmt-formatnumber-tag JSTL fmt:formatnumber Tag - javatpoint JSTL fmt:formatnumber Tag for beginners and professionals with examples on JSTL core tags, function tags, formatting tags, sql tags and miscellaneous tags. www.javatpoint.com 코드: - detail.jsp 다른..