Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- github
- jsp기본
- 관리자회원조회
- 페이지 재사용
- 내배카
- 배열
- 국취제
- 비밀번호암호화
- 로그아웃
- Git
- 페이징
- mvc
- jdbc환경설정
- redirect
- 회원정보수정
- 회원탈퇴
- 국민취업지원제도
- 별찍기
- 정처기
- live server 환경설정
- emmet환경설정
- forward
- 권한변경
- 비밀번호변경
- 입력메소드
- 국비학원
- 내일배움카드
- jdbc설정
- 검색기능
- 인코딩
Archives
- Today
- Total
기록
*81일차 (페이징 / 게시판) 본문
*페이징
1. Content 영역
- cPage 현재 페이지
- numPerPage 한 페이지당 표시할 콘텐츠수
- 페이징 쿼리
- -start
- -end
2. pagebar 영역
- cPage 현재페이지
- numPerPage 한 페이지당 표시할 컨텐츠 수
- totalContents 전체 페이지 수 (totalContents , numPerPage)
- pagebarSize 페이지바 길이 (5)
- pageNo 페이지 증감변수
- pagebarStart ~ pagebarEnd 페이지바 범위
- url 다음요청url
@페이징 쿼리
-- 페이징쿼리
-- 1. rownum
-- 2. row_number
select
*
from (
select
row_number() over(order by enroll_date desc) rnum,
m.*
from
member m) m
where
rnum between 21 and 30;
@memberListServlet - 페이징
@WebServlet("/admin/memberList")
public class AdminMemberListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private MemberService memberService = new MemberService();
/**
* select * from member order by enroll_date desc
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
// 1. 사용자입력값 처리
int numPerPage = MemberService.NUM_PER_PAGE;
int cPage = 1;
try {
cPage = Integer.parseInt(request.getParameter("cPage"));
} catch (NumberFormatException e) {
// 예외발생시 현재페이지는 1로 처리
}
Map<String, Object> param = new HashMap<>();
int start = (cPage - 1) * numPerPage + 1;
int end = cPage * numPerPage;
param.put("start", start);
param.put("end", end);
// 2. 업무로직
// 2.a. content영역
List<Member> list = memberService.findAll(param);
System.out.println("list = " + list);
// 2.b. pagebar영역
int totalContents = memberService.getTotalContents(); // select count(*) from member
String url = request.getRequestURI(); // /mvc/admin/memberList
String pagebar = HelloMvcUtils.getPagebar(cPage, numPerPage, totalContents, url);
System.out.println("pagebar = " + pagebar);
// 3. view단 처리
request.setAttribute("list", list);
request.setAttribute("pagebar", pagebar);
request.getRequestDispatcher("/WEB-INF/views/admin/memberList.jsp")
.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
@HelloMvcUtils - 페이징
public static String getPagebar(int cPage, int numPerPage, int totalContents, String url) {
StringBuilder pagebar = new StringBuilder();
int totalPages = (int) Math.ceil((double) totalContents / numPerPage) ; // 전체페이지수
int pagebarSize = 5;
int pagebarStart = (cPage - 1) / pagebarSize * pagebarSize + 1; // 1, 6, 11
int pagebarEnd = pagebarStart + pagebarSize - 1; // 5, 10, 15
int pageNo = pagebarStart;
url += "?cPage=";
// 이전 prev
if(pageNo == 1) {
// prev버튼 비활성화
}
else {
// prev버튼 활성화
pagebar.append("<a href='" + url + (pageNo - 1) + "'>prev</a>");
pagebar.append("\n");
}
// 번호
while(pageNo <= pagebarEnd && pageNo <= totalPages) {
if(pageNo == cPage) {
// 현재페이지인 경우
pagebar.append("<span class='cPage'>" + pageNo + "</span>");
pagebar.append("\n");
}
else {
// 현재페이지가 아닌 경우(링크필요)
pagebar.append("<a href='" + url + pageNo + "'>" + pageNo + "</a>");
pagebar.append("\n");
}
pageNo++;
}
// 다음 next
if(pageNo > totalPages) {
}
else {
pagebar.append("<a href='" + url + pageNo + "'>next</a>");
pagebar.append("\n");
}
return pagebar.toString();
}
@MemberDao - 추가
public int getTotalContents(Connection conn) {
PreparedStatement pstmt = null;
ResultSet rset = null;
int totalContents = 0;
String sql = prop.getProperty("getTotalContents");
try {
pstmt = conn.prepareStatement(sql);
rset = pstmt.executeQuery();
while(rset.next())
totalContents = rset.getInt(1); // 컬럼인덱스
} catch (Exception e) {
throw new MemberException("전체회원수 조회 오류!", e);
} finally {
close(rset);
close(pstmt);
}
return totalContents;
}
@MemberSerive - 추가
public static final int NUM_PER_PAGE = 10;
public List<Member> findBy(Map<String, String> param) {
Connection conn = getConnection();
List<Member> list = memberDao.findBy(conn, param);
close(conn);
return list;
}
public int getTotalContents() {
Connection conn = getConnection();
int totalContents = memberDao.getTotalContents(conn);
close(conn);
return totalContents;
}
*게시판
@게시판 테이블 생성
create table board (
no number,
title varchar2(100) not null,
member_id varchar2(20),
content varchar2(4000) not null,
read_count number default 0,
reg_date date default sysdate,
constraint pk_board_no primary key(no),
constraint fk_board_member_id foreign key(member_id) references member(member_id) on delete set null
);
create sequence seq_board_no;
create table attachment (
no number,
board_no number not null,
original_filename varchar2(255) not null, -- 업로드한 파일명
renamed_filename varchar2(255) not null, -- 저장된 파일명
reg_date date default sysdate,
constraint pk_attachment_no primary key(no),
constraint fk_attachment_board_no foreign key(board_no) references board(no) on delete cascade
);
create sequence seq_attachment_no;
'학원 > 강의' 카테고리의 다른 글
*83일차 (게시글 상세보기 / 조회수 / 파일 다운로드) (0) | 2022.05.25 |
---|---|
*82일차 (게시글 등록 / 파일업로드) (0) | 2022.05.24 |
*80일차- ncs테스트(요구사항 확인) (0) | 2022.05.20 |
*79일차 (UML) (0) | 2022.05.19 |
*78일차 (비밀번호 변경 / 관리자회원 조회 / 권한변경 / 검색) (0) | 2022.05.18 |