개인 공부/TIL

TIL #220603 #JSP

kaleb 2022. 6. 3. 17:22
728x90

연휴 전의 불타는 금요일입니다. 오늘은 오전 JSP수업 후에 오후에는 직업기초수업으로 자습이 어느정도 주어졌습니다.

여유롭게 JSP 복습을 완료하고 알고리즘을 풀다가 처음 접하는 개념 덕분에 양껏 두들겨 맞은 상태입니다.

연휴에는 적당히 맞았으면 좋겠네요 ㅎㅎ


오전 JSP

 

JSP 는 특별한 개념을 배우기보다는 활용하여서 하나씩 더 만들어 가고 있는 과정에 있습니다.

다음 주 이후에는 개별과제를 한다는 소식을 어렴풋이 들었는데 기대가 됩니다.

 

오늘은 게시판에서 페이징 처리 하는 방법을 배웠습니다.

그 전에 몇 가지 개념을 정리하였습니다.

 

 

이전에는 Connection클래스와 PreparedStatement 클래스를 사용했을 때  throws exception을 사용해서

예외처리를 하지 않고 그냥 넘어갔었는데 오늘은 그 부분에 대해서 처리 방법(?) 을 배웠습니다.

 

Surround with try/catch Block

 

단축키: Alt + Shift+ Z

Suround withh try/catch Block 을 검색해서 찾아 보면

• Try-catch blocks are ways of safeguarding your code from blowing up if there are errors.

라고 뜹니다. 에러가 떴을 때의 세이프가드 라고합니다.

try {
			pstmt.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
  • try 블록에서 수행해야할 부분을 작성합니다.
  • catch 블록에서 에러가 났을 경우에 어떤 처리를 해야할 지 작성하면됩니다.

오버XX

오버 로딩 : 같은 이름 명에 ‘파라미터의 데이터 타입 또는 개수’가 다릅니다.

오버 라이딩 : ‘상속이 전재’되어야 실행가능합니다. ‘같은 이름에 다른 수행구문으로 실행’됩니다.

 

Static

Static은 변수나 메서드 키워드로 사용 됩니다.

Staitc 키워드를 사용한 변수/메서드는 클래스가 메모리에 올라갈 때 자동으로 생성됩니다.

프로그램이 실행되어 메모리에 올라갔을 때 메모리 공간에 할당 됩니다.

 

즉, 객체(인스턴스)를 생성없이 클래스를 통해서 메서드를 직접 호출할 수 있습니다.

인스턴스를 선언해서 값을 바꿀 필요가 없는 유틸리티 성 메소드를 작성할 때 많이 사용됩니다.

 

모듈화

: 소프트웨어의 성능을 향상키시거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하도록 하는 소프트웨어 설계 기법입니다.

 

모듈화의 장점

  • 프로그램의 효율적인 관리 및 성능 향상
  • 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소
  • 소프트웨어 시험, 통합 수정 시 용이성을 제공해줍니다.
  • 기능의 분리가 가능하고 인터페이스가 단순해집니다.
  • 오류의 범위를 최소화 할수 있습니다.
  • 모듈의 재사용 가능으로 개발과 유지보수가 용이해집니다.

 

페이징처리 과정에서 Static을 활용하여 반복되는 과정을 줄일 수 있었는데 그런 과정을 모듈화 과정의 예라고 할 수 있습니다.!

 

 

페이징 처리하기

페이징처리 순서

 

순서

  • DAO에 Static 형태로 리턴타입이 int형이고 int형 파라미터pageNum 과 listLimit을 받는 selectList(pageNum, listLimit) 을 정의 해줍니다.
  • int listCount를 통해서 총 게시물의 수를 전달 받습니다.
  • “SELECT COUNT(*) FROM board;” 의 구문을 사용합니다.

 

 

페이지 번호 설정하기

 

게시물의 페이지를 표현하기 위해서는

총 페이지의 수, 첫번째 페이지 번호, 끝 페이지 번호를 알아야 합니다.

int pageNum = 1; // 현재 페이지 번호
int listLimit = 10; // 한 페이지당 표시할 게시물 수
int pageLimit = 10; // 한 페이지당 표시할 페이지 목록
if (request.getParameter("pageNum") != null) {
	pageNum = Integer.parseInt(request.getParameter("pageNum"));

 

 

페이지를 이동할 때 pageNum 값을 전달하여 받고 그 값에 따라 다른 수행을 하게 처리합니다.

  • 총 페이지의 수 (int maxPage) : 전체 페이지 번호의 개수입니다.
// 1번 방법
int maxPage = (int)((double)listCount / listLimit + 0.9);

// 2번 방법
int maxPage = (int) Math.ceil((double)listCount / listLimit);


총 페이지 / 한 페이지당 표시할 게시물로 나누었을 경우에 나머지의 게시물을 표시할 페이지 까지 필요하기 때문에 0.9를 더해줍니다. (반올림의 목적)


Math클래스의 ceil메서드를 사용하면 좀더 편리하게 계산할 수 있습니다.

  • 첫번째 페이지 번호 (int startPage) : pagtLimit이 10임으로 1, 11, 21, 과 같은 페이지 첫번째 번호입니다.
int startPage = ((int)((double)pageNum / pageLimit + 0.9) - 1) * pageLimit + 1;

 

  • 끝 페이지번호 (int endPage) : 10, 20, 30 과 같은 페이지 끝 번호입니다.
int endPage = startPage + pageLimit - 1;
	if(endPage > maxPage) {
		endPage = maxPage;
	}

 


현재 페이지 번호 출력의
스클립틀릿과 out.println의 비교

저희가 배운 내용을 바탕으로 현재 페이지 번호를 두 가지 방법으로 출력할 수 있습니다.

스크립틀릿을 여러번 사용하는 방법과 out.pritln을 이용한 방법이 있습니다. 비교해서 편한 방법으로 사용해봅시다.!

<% for(int i = startPage; i <= endPage; i++) {%>
	<%	if(pageNum == i) { %>
		<%=i %>
	<%	} else { %>
		<a href="list.jsp?pageNum=<%=i %>"><%=i %></a> 
	<% }
	}%>	

	||

	<% for(int i = startPage; i <= endPage; i++) {
		if(pageNum == i) {
			out.println(i);			
		} else {
			out.println("<a href='list.jsp?pageNum="+ i +"'>"+ i +"</a> ");
		}
	}
	%>

연휴에 JSP 게시판 한번 새로 만들어서  연습해봅시다~ 

 

반응형

'개인 공부 > TIL' 카테고리의 다른 글

TIL #220608 #JSP # DB  (0) 2022.06.08
TIL #220607 #DB # JAVA  (0) 2022.06.07
TIL #220602 #DB #WEB  (0) 2022.06.02
TIL #220531 #DB # JAVA  (0) 2022.05.31
TIL #220530 #JSP #JAVA  (0) 2022.05.30