Web Programming Language/JSP

동음이의어 사이트

D4tai1 2018. 8. 21.

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로
           }
          %>
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <% 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>
                  <% } %>
            &nbsp;&nbsp;&nbsp;&nbsp; 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'">
             &nbsp;&nbsp;&nbsp;&nbsp;
            <input type="button" value="글삭제" class="special" onClick="location.href='content.jsp?num=<%=article.getNum() %>#delete'">
             &nbsp;&nbsp;&nbsp;&nbsp;

             <input type="button" value="글목록" onClick="location.href='index_login.jsp?pageNum=<%=pageNum %>#board'">
             <% } else { %>
            
            
            <span class="button special disabled">글수정</span>
             &nbsp;&nbsp;&nbsp;&nbsp;
            <span class="button special disabled">글삭제</span>
             &nbsp;&nbsp;&nbsp;&nbsp;

             <input type="button" value="글목록" onClick="location.href='index_login.jsp?pageNum=<%=pageNum %>#board'">
             <% } %>

 

 

7. 실시간채팅

 

8. 데이터베이스 - mysql 5.7

'Web Programming Language > JSP' 카테고리의 다른 글

MySQL 연동  (0) 2018.08.12
JSP 액션태그  (0) 2018.08.12
JSP 기본상식  (0) 2018.08.12
JSP 기본문법  (0) 2018.08.12

댓글