동음이의어 사이트
1. 메인화면
2. intro
3. no_login 시 intro를 제외한 모든사이트 접근차단
4. login 화면
4-1. 패스워드 찾기
4-2. 회원가입
5. 관리자로그인 [modify(수정), leave(탈퇴), admin(관리자페이지), logout]
+ 로그인하지 않은 사용자가 로그인 페이지에 접속할 경우[예외처리]
if (session.getAttribute("sid") == null) {
%>
<script>
alert("로그인한 사용자만 이용할 수 있습니다.");
location.href="index.jsp#info";
</script>
<%
//response.sendRedirect("index.jsp");
}%>
+ 일반 사용자가 관리자 페이지에 접속할 경우[예외처리]
} else {
if (session.getAttribute("sid") == null) {
%>
<script>
alert("로그인한 사용자만 이용할 수 있습니다.");
location.href="error.jsp";
</script>
<%
//response.sendRedirect("index.jsp");
} else {
//(String) session.getAttribute("sid");
//session.invalidate();
if (!ssid.equals("admin")) {
%>
<script>
alert("관리자 이외에 접속할 수 없습니다.");
<% //session.invalidate(); %>
location.href="index_login.jsp#info";
</script>
<%
//response.sendRedirect("index.jsp");
} else {
5-1. 관리자페이지[회원관리]
5-2. 관리자페이지[자료실관리]
5-3. 관리자페이지[게시판 관리]
6. 게시판[일반사용자]
+ 게시판 알고리즘
%>
request.setCharacterEncoding("utf-8");
BoardDBBean dbPro = BoardDBBean.getInstance();
List<BoardDataBean> articleList = null;
int pageSize = 5; //글개수
String pageNum = request.getParameter("pageNum");
if(pageNum == null) {
//글을 읽었는데 30개 글 중 10개씩 표시되는데 4페이지는 없기에 널이 나오고 이때 1번페이지로 지정
pageNum = "1";
}
int currentPage = Integer.parseInt(pageNum); // 현재페이지 (1페이지)
int startRow = (currentPage-1) * pageSize + 1; //2페이지는 11번부터 20번
int endRow = currentPage * pageSize; //startRow는 11, endRow는 20
int count = dbPro.getArticleCount(); //전체 글의 개수
if (count > 0) {
articleList = dbPro.getArticles(startRow, pageSize); //시작점부터 10개
}
int number = count - (currentPage - 1) * pageSize; //그 페이지에서 1씩 떨어뜨리면서 표시
//최근 글이 항상 재일 위에 글이 100개면 1페이지는 100번글부터 91번글.. 결국 number가 100이 된다.
//-------------------------------------------------------------------------------
FileDBBean fileDB = FileDBBean.getInstance();
List<FileDataBean> instances = fileDB.getFiles();
int pageSize1 = 5; //글개수
String pageNum1 = request.getParameter("pageNum1");
if(pageNum1 == null) {
//글을 읽었는데 30개 글 중 10개씩 표시되는데 4페이지는 없기에 널이 나오고 이때 1번페이지로 지정
pageNum1 = "1";
}
int currentPage1 = Integer.parseInt(pageNum1); // 현재페이지 (1페이지)
int startRow1 = (currentPage1-1) * pageSize1 + 1; //2페이지는 11번부터 20번
int endRow1 = currentPage1 * pageSize1; //startRow는 11, endRow는 20
int count1 = fileDB.getFileCount(); //전체 글의 개수
int number1 = count1 - (currentPage1 - 1) * pageSize1; //그 페이지에서 1씩 떨어뜨리면서 표시
%>
<table>
<thead>
<tr>
<th>Count</th>
<th>Name</th>
<th align=center>Subject</th>
<th>Readcount</th>
</tr>
</thead>
<tbody>
<%
String search = "";
for(int i=0; i<articleList.size(); i++){
BoardDataBean article = articleList.get(i);
%>
<tr>
<td><%=article.getNum() %></td>
<td><%=article.getWriter() %></td>
<td>
<a href="content.jsp?num=<%=article.getNum()%>&pageNum=<%=pageNum %>&readcount=<%=article.getReadcount() %>#board"> <!-- 상세게시물로링크 -->
<%=article.getSubject() %></a></td>
<td><%=article.getReadcount() %></td>
</tr>
<% } %>
</tbody>
<tfoot>
<tr>
<td colspan="4" align="center">
<%
int pageCount = count / pageSize + (count % pageSize == 0?0:1); //표시할 총 페이지개수
//50개 글이면 전체 50개 / 10개씩 + 자투리가 있으면 1을 더해서 페이지를 5개~6개 표시
int startPage = 1; //시작 페이지
//시작페이지가 몇번부터인지.. 11번페이지부터 20번페이지를 표시할때는 시작페이지는 11
int pageBlock = 5; //한 블럭의 페이지 수 1, 2, 3, 4...8, 9, 10 ,총 10개
if (currentPage % pageBlock != 0) {
startPage = (int)(currentPage/pageBlock)*pageBlock + 1;
//시작페이지가 11페이지면 11~시작
} else {
startPage = (int)((currentPage/pageBlock)-1)*pageBlock + 1;
//시작페이지가 10페이지면 1시작
}
int endPage = startPage + pageBlock - 1; //마지막페이지
if (endPage > pageCount) {
endPage = pageCount; // 120개.. 12페이지가 끝. endPage는 20,
//endPage가 pageCount보다 크면 pageCount를 endPage로
}
%>
<% if(startPage > pageBlock) { //전페이지가 있으면? %>
<a href="index_login.jsp?pageNum=<%=startPage-pageBlock %>#board">[proc]</a>
<% } %>
<% for (int i = startPage; i <= endPage; i++) { %>
<a href="index_login.jsp?pageNum=<%=i %>#board"> [<%=i %>] </a>
<% } %>
<% if(endPage < pageCount) { //다음페이지가 있으면? %>
<a href="index_login.jsp?pageNum=<%=startPage+pageBlock %>#board">[next]</a>
<% } %>
now : <%=currentPage %>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="button" class="special" value="Write" onClick="location.href='index_login.jsp#write'"/>
</td>
</tr>
</tfoot>
</table>
<% } else { %>
<h4>게시판에 저장된 글이 없습니다.</h4>
<h4><input type="button" value="Write" onClick="location.href='index_login.jsp#write'"/></h4>
<%} %>
+ 작성자면 수정 및 삭제버튼 활성화, 작성자가 아니면 글목록 버튼만 활성화
<%
String name = article.getWriter();
String sname = (String)session.getAttribute("sname");
if (name.equals(sname)) { %>
<input type="button" value="글수정" class="special" onClick="location.href='updateForm.jsp?num=<%=article.getNum() %>#board'">
<input type="button" value="글삭제" class="special" onClick="location.href='content.jsp?num=<%=article.getNum() %>#delete'">
<input type="button" value="글목록" onClick="location.href='index_login.jsp?pageNum=<%=pageNum %>#board'">
<% } else { %>
<span class="button special disabled">글수정</span>
<span class="button special disabled">글삭제</span>
<input type="button" value="글목록" onClick="location.href='index_login.jsp?pageNum=<%=pageNum %>#board'">
<% } %>
7. 실시간채팅
8. 데이터베이스 - mysql 5.7
댓글