대부분의 웹사이트는 사용자의 편의성을 위해 메인페이지에 인기 게시글을 소개합니다.
이는 방문자에게 빠른 정보 접근성을 제공하고, 사용자의 요구를 신속하게 충족시키는 효과적인 방법입니다.
이번 글에서는 서버의 noticeboard 테이블에 저장된 공지사항 중 최신 5개를 메인 페이지에 표시하는 방법을 알아보겠습니다.
공지사항 게시판에는 일반 공지와 중요 공지로 나눠서 구성되어 있으며, 중요 공지는 게시판 상단에 위치하도록 설정되었습니다.
그리고 메인 페이지에 표시될 공지사항 정보는 공지사항의 제목과 등록일(년/월/일)입니다.
우선, 아래의 SQL 쿼리를 사용하여, 중요 공지(highlight='Y')와 일반 공지(highlight='N')를 구분하고, 게시된 순서대로 최상위 5개의 글을 선택합니다.
<%
//메인페이지 공지글 5개 시작
String sql1 = " select unq, title, to_char(rdate,'yy/mm/dd') rdate from noticeboard ";
sql1 += " where highlight = 'N' order by unq desc fetch first 5 rows only";
ptmt = con.prepareStatement(sql1);
ResultSet rs1 = ptmt.executeQuery();
//메인페이지 공지글 5개 끝
%>
이후, 메인 페이지에 적절한 위치에 해당 정보를 표시하기 위해 while 반복문을 활용하여 5개의 공지사항을 나열하도록 합니다.
메인 페이지의 공간 제한을 고려하여, 공지사항의 제목은 최대 20자까지만 표시되도록 설정합니다.
또한, 각 공지사항은 해당 공지의 고유 번호(unq)를 이용하여 링크를 생성함으로써, 사용자가 클릭 한 번으로 해당 공지사항 페이지로 바로 이동할 수 있도록 합니다.
이렇게 구성하여 웹사이트의 사용자 경험(UX)과 접근성을 개선하는 데 초점을 맞추면서 동시에 사용자의 편의성을 최대화하는 방식으로 구성하였습니다.
<ul>
<%
while ( rs1.next() ) {
int unq = rs1.getInt("unq");
String title = rs1.getString("title");
String rdate = rs1.getString("rdate");
String stitle = title.length() <= 20 ? title : title.substring(0, 20) + "...";
%>
<li>
<a href="../board/board1Detail.jsp?unq=<%=unq %>"><%=stitle %></a><span class="lt_date"><%=rdate %></span>
</li>
<%
}
%>
</ul>
위의 코드에서 글 5개를 갖고오는 조건을 SQL에서 처리를 하고 있습니다.
하지만 sql에는 글을 갖고오는 조건문만 사용하고 글 5개로 제한하는 조건을 while 조건문에 작성하여 글 표출 수를 제한할 수 있습니다.
하지만 이 방법은 서버에 있는 모든 글을 확인해서 갖고 와야 하기게 서버에서 갖고오는 데이터 양이 많을 수 있어 메인페이지에 표출하는 속도가 느려질 가능성이 있습니다.
모든 데이터를 다 갖고와서 5개만 선택하는 것보다
서버에서 5개만 갖고와서 메인페이지에 표출하는것이 효율적인 데이터 처리 속도를 보여 줄 것입니다.