240131 게시판만들기(댓글 수정 삭제/ 아이피 정렬)
2024. 2. 1. 11:24ㆍ2023.11.21-2024.05.31
ip.jsp, ip.java 서블릿 만들기
ip.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>관리자 페이지 - 댓글관리</title>
<link href="../css/admin.css?ver=0.19" rel="stylesheet"/>
<link href="../css/member.css" rel="stylesheet"/>
<script type="text/javascript" src="../js/menu.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/xeicon@2.3.3/xeicon.min.css">
</head>
<body>
<div class="wrap">
<!-- menu -->
<%@ include file="adminmenu.jsp" %>
<div class="main">
<article>
<h2>댓글관리</h2>
<div class="nav-lists">
<ul class="nav-lists-group">
<li class="nav-lists-item" onclick="url('./comments?del=1')"><i class="xi-close-circle-o"></i> 보임</li>
<li class="nav-lists-item" onclick="url('./comments?del=0')"><i class="xi-close-circle-o"></i> 숨김</li>
</ul>
<div class="search">
<input type="text" id="search">
<button id="searchBtn">검색</button>
</div>
</div>
<table>
<thead>
<tr>
<th>번호</th>
<th>제목</th>
<th>글쓴이</th>
<th>날짜</th>
<th>IP</th>
<th>방문자</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list }" var="row">
<tr class="row${row.del }">
<td class="d1">${row.cno }</td>
<td class="title"><a href="../detail?no=${row.board_no }">${row.comment }</a></td>
<td class="d2">${row.mname }</td>
<td class="d1">${row.cdate }</td>
<td class="d1">${row.ip }</td>
<td class="d1">${row.clike }</td>
<td class="d1">
<input type="hidden" class="del" value="${row.del }">
<c:if test="${row.del eq 1}"><i class="xi-eye changeDel"></i></c:if>
<c:if test="${row.del eq 0}"><i class="xi-eye-off-o changeDel"></i></c:if>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</article>
</div>
</div>
</body>
</html>
ip.java 서블릿
package com.sukgi.admin;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sukgi.dao.AdminDAO;
@WebServlet("/admin/adminip")
public class AdminIp extends HttpServlet {
private static final long serialVersionUID = 1L;
public AdminIp() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
AdminDAO dao = new AdminDAO();
List<Map<String, Object>> list=dao.ipList();
request.setAttribute("list", list);
RequestDispatcher rd = request.getRequestDispatcher("/admin/adminip.jsp");
rd.forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
AdminDAO.java >ipList 만들기
public List<Map<String, Object>> ipList() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Connection con = db.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT ino, iip, idate, iurl, idata FROM iplog ORDER BY ino DESC";
try {
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
Map<String, Object> e = new HashMap<String, Object>();
e.put("ino", rs.getInt("ino"));
e.put("iip", rs.getString("iip"));
e.put("idate", rs.getString("idate"));
e.put("iurl", rs.getString("iurl"));
e.put("idata", rs.getString("idata"));
list.add(e);
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
adminip.jsp 수정
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>관리자 페이지 - IP관리</title>
<link href="../css/admin.css?ver=0.19" rel="stylesheet"/>
<link href="../css/member.css" rel="stylesheet"/>
<script type="text/javascript" src="../js/menu.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/xeicon@2.3.3/xeicon.min.css">
</head>
<body>
<div class="wrap">
<!-- menu -->
<%@ include file="adminmenu.jsp" %>
<div class="main">
<article>
<h2>IP관리</h2>
0.중복없이 ip리스트 뽑기는? 디스틴스
1.최다 접속 ip 5개 출력(sql)
2.그래프 그리기(구글차트) ip당 접속 건수 10개
<div class="nav-lists">
<ul class="nav-lists-group">
<li class="nav-lists-item" onclick="url('./comments?del=1')"><i class="xi-close-circle-o"></i> 보임</li>
<li class="nav-lists-item" onclick="url('./comments?del=0')"><i class="xi-close-circle-o"></i> 숨김</li>
</ul>
<div class="search">
<input type="text" id="search">
<button id="searchBtn">검색</button>
</div>
</div>
<table>
<thead>
<tr>
<th>번호</th>
<th>IP</th>
<th>날짜</th>
<th>URL</th>
<th>기타</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list }" var="row">
<tr class="row">
<td class="d1">${row.ino }</td>
<td class="d1">${row.iip }</td>
<td class="d2">${row.idate }</td>
<td class="d1">${row.iurl }</td>
<td class="title">${row.idata }</td>
</tr>
</c:forEach>
</tbody>
</table>
</article>
</div>
</div>
</body>
</html>
0.중복없이 ip리스트 뽑기는?
>DISTINCT
>SELECT DISTINCT iip FROM iplog
1.최다 접속 ip 5개 출력(sql)
> SELECT iip, COUNT(iip) AS COUNT FROM iplog GROUP BY iip ORDER BY COUNT DESC LIMIT 5;
2.그래프 그리기(구글차트) ip당 접속 건수 10개
'2023.11.21-2024.05.31' 카테고리의 다른 글
240204 ajax 복습하기 (0) | 2024.02.04 |
---|---|
240201 리눅스 (0) | 2024.02.01 |
240130 게시판만들기(관리자페이지-검색넣기) (0) | 2024.01.30 |
240126 게시판만들기(관리자 페이지) (0) | 2024.01.26 |
240125 게시판만들기(댓글 수정) (0) | 2024.01.25 |