분류 전체보기

강의 정리하기/JSP와 Servlet

페이지 처리하기 및 detail을 Service를 이용하여 구현하기

1. 페이징 처리하기 검색을 적용한 후에 문제가 생긴 페이징 부분을 해결해보도록 하자. 현재 주소창을 보면 list?p=2를 통해서 2page로 넘어간 것을 볼 수 있다. 현재 총 11개의 데이터가 있는데 10개씩 끊으면 1번 게시물이 2page에 보여야하지만 보이지 않는다. 그 이유는 주소창을 보면 f(field)와 q(query) 파라미터가 전달되지 않았기 때문이다. 이는 키는 있지만 값이 전달되지 않은 것인데 서버 쪽에서는 값이 가지 않았기 때문에 null이 아닌 빈 문자열로 받는다. 따라서 아래와 같이 빈 문자열에 대한 처리를 해주도록 한다. String field = "title"; if(field_ != null && !field_.equals("")) { field = field_; } St..

강의 정리하기/JSP와 Servlet

NoticeService 클래스 작성하기

이전글에서 NoticeService 클래스의 메소드에 필요한 SQL문을 작성했었다. https://myblog1128.tistory.com/110 Service 클래스와 메소드 생성하기위한 SQL문 작성 공지 목록 조회 1. getNoticeList() 사용자는 공지사항의 링크를 클릭하는 것과 같이 페이지 요청을 통해 공지를 볼 수 있다. 공지사항의 목록을 default로 정해진 갯수만큼 보여준다. 2. getNoticeList(int pa myblog1128.tistory.com 이제 메소드의 JDBC 코드와 같이 나머지 부분을 작성해보도록 하자. 아래의 코드에서 SQL 부분을 보면 field를 ?로 값을 준다면 'field'의 형식과 같이 문자열로 들어가기 때문에 setXXX() 메소드를 사용하지 않..

국비 지원/SQL

[Oracle] ROWNUM과 사용할 시 주의할 점

ROWNUM은 오라클 내부적으로 생성되는 가상 컬럼으로 자료의 일부를 잘라내서 이용할 때 사용한다. 즉, ROWNUM을 통해 조회된 컬럼이 몇 번째 컬럼인지 알 수 있다. 위의 사진과 같이 ID와 별개로 순서를 알 수 있는 것이 ROWNUM이다. 1. 먼저 ROWNUM은 아래와 같이 *(모든)과 같이 사용할 수 없다. SELECT ROWNUM, * FROM MEMBER; 왜냐하면 모든이라는 것은 전부 출력한다는 의미인데 이미 전부를 출력했는데 여기서 다른 것이 포함될 수 없기 때문이라고 할 수 있다. 이 부분은 아래와 같이 명시적으로 정의해준다면 사용할 수 있다. SELECT ROWNUM, MEMBER.* FROM MEMBER; 2. 1부터 시작하는 ROWNUM이 아니라면 서브쿼리를 사용하자. 이게 무슨..

강의 정리하기/JSP와 Servlet

Service 클래스와 메소드 생성하기위한 SQL문 작성

공지 목록 조회 1. getNoticeList() 사용자는 공지사항의 링크를 클릭하는 것과 같이 페이지 요청을 통해 공지를 볼 수 있다. 공지사항의 목록을 default로 정해진 갯수만큼 보여준다. 2. getNoticeList(int page) 페이지 요청을 통해 이전 이후의 페이지들도 볼 수 있다. 특정 페이지의 번호를 인자값으로 받아서 보여준다. 3. getNoticeList(String field, String query, int page) 공지를 검색하는 요청을 할 수 있다. 검색할 때 키워드의 분류와 검색 단어뿐만 아니라 검색했을 때 여러 개의 검색이 되었을 떼 페이지 또한 여러 개가 된다. 따라서 검색된 결과물에서 페이지를 클릭할 수 있어야 한다. 4. getNoticeCount() 5. g..

강의 정리하기/JSP와 Servlet

기업형으로 만든다는 것은?

기업형으로 레이어를 나누는 이유 기업형으로 만든다는 것은 업무를 분담해서 프로그램을 만드는 것이라고 할 수 있다. DBMS에 접속해서 쿼리를 만들고, 입출력, 업무 처리 등을 하는 Controller와 View만으로 프로그램을 만들 수 있다. 하지만 업무가 커진다면 Controller(Servlet)에서 업무 서비스를 분리하는 것이 더 낫다. 업무 서비스를 분리함으로써 경험이 더 많은 사람이 관리하게 되면서 실수를 줄일 수 있고 유지보수도 더 편리해진다. 여기서 또 업무 서비스에서 데이터 서비스를 책임지는 DAO(데이터 서비스)를 분리해서 만들 수 있다. DAO를 만들게 되면 업무 서비스에서는 SQL 쿼리문 없이 JAVA만을 사용하고 DBMS에는 관여하지 않게 된다. 이렇게 데이터를 조작하는 역할을 DA..

강의 정리하기/JSP와 Servlet

JSTL의 function 이용하기

JSTL의 함수 사용하기 JSTL에서 funtion을 이용하기 위해서 아래의 taglib를 추가해주도록 한다. 이는 나 와 같이 사용한 것과 다르게 아래와 같이 ${fn : ...}을 이용해서 바로 사용할 수 있다. ${fn:toUpperCase(fileName)} toUpperCase는 말 그대로 대문자로 변환해주는 것으로 아래와 같이 파일명이 대문자로 변환된다. 이를 만약 데이터베이스에서 일일히 파일명을 바꾼다면 시간도 많이 걸리고 효율이 떨어져 불편할 것이다. 이 불편한 점을 개선할 수 있는 방법이 JSTL의 function이다. 대문자로 변환해주는 것뿐만 아니라 또 다른 다양한 기능들이 있다. 그 중에 하나인 endsWith을 설명해보고자 한다. ${fn:toUpperCase(fileName)} ..

강의 정리하기/JSP와 Servlet

JSTL의 format을 이용한 날짜 출력하기 및 숫자 출력 형식 지정하기

1) format을 이용한 날짜 출력하기 NOTICE 테이블의 regdate 컬럼을 보면 년/월/일 시:분:초로 이루어져있는 것을 볼 수 있다. 근데 위의 사진을 보면 데이터베이스에 있는 형식과 다르게 작성일이 년-월-일 형식으로 이루어진 것을 볼 수 있다. 이는 JSTL의 format을 이용한 것이다. 먼저 format을 사용하기 위해서는 아래의 taglib가 필요하다. 그러고나서 리스트(list.jsp)의 작성일 부분을 format을 사용하여 년-월-일 형식으로 지정해준다. 디테일(detali.jsp)의 작성일 부분은 날짜뿐만 아니라 시간까지 나오는 것이 더 좋다. 따라서 아래와 같이 format을 년-월-일 시:분:초 형식으로 지정해주면 된다. 작성일 2) format을 이용한 숫자 출력 형식 지정..

강의 정리하기/JSP와 Servlet

JSTL의 forTokens를 이용한 첨부파일 목록 출력하기

는 문자열을 지정한 구분자로 분리하여 하나씩 추출해주는 태그를 말한다. 글을 보면 첨부파일 목록이 있는 것을 확인할 수 있는데 이를 출력하고자 한다. ${fileName} , 위의 사진과 같이 데이터베이스에서 files가 ","를 기준으로 나누어져 있는 것을 확인할 수 있다. 그래서 forToken의 delims를 이용해서 "," 기준으로 파일 문자열을 구분했다. 이 이름을 fileName이라고 하고 하이퍼링크를 걸기 위해서 태그를 사용해주었다. 그러고나서 우리는 파일을 ","로 구분하고 싶어 위와 같이 코드를 작성했는데 실행 결과를 보니까 아래의 사진과 같이 마지막 파일 뒤에도 ","가 들어있는 것을 확인할 수 있다. 마지막 파일 뒤에는 ","를 포함하지 않게 하기 위해서 사용하는 것이 이다. ${fi..

아민_
'분류 전체보기' 카테고리의 글 목록 (4 Page)