** ๐ ๊ด๋ฆฌ์ ํ์ด์ง ๊ตฌํ **
๊ด๋ฆฌ์๋ง ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ฒด ๋ฆฌ์คํธ, ์ญ์ , ๊ถํ ๋ณ๊ฒฝ ๊ธฐ๋ฅ ๊ตฌํ
ํ์ ๋ฆฌ์คํธ ๊ด๋ฆฌ๋ถํฐ ์ญ์ /๋ณ๊ฒฝ ์ฒ๋ฆฌ๊น์ง ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- ๊ด๋ฆฌ์ ํ์ด์ง๋?
- ์ ์ฒด ๊ธฐ๋ฅ ํ๋ฆ๋
- ๊ธฐ๋ฅ๋ณ ์ญํ ์ ๋ฆฌ
- ์ค์ ์์ ์ฝ๋
- ๊ด๋ฆฌ์ ๊ถํ ์ฒดํฌ ๋ฐ ๊ธฐ๋ฅ ์์
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + Notion ์์ฑ ํ
โ
1. ๊ด๋ฆฌ์ ํ์ด์ง๋?
ํญ๋ชฉ |
์ค๋ช
|
์ ์ |
์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์๋ ๊ด๋ฆฌ์(admin)๋ง ์ ๊ทผ ๊ฐ๋ฅํ ๊ด๋ฆฌ ํ์ด์ง |
๋ชฉ์ |
ํ์ ์ ๋ณด, ๊ฒ์๊ธ, ๊ถํ ๋ฑ์ ํ์ธํ๊ณ ์ ์ดํ ์ ์์ |
์กฐ๊ฑด |
์ธ์
์ ์ ์ฅ๋ ๋ก๊ทธ์ธ ์์ด๋๊ฐ ๊ด๋ฆฌ์(admin )์ผ ๋๋ง ์ ๊ทผ ๊ฐ๋ฅ |
โ
2. ์ ์ฒด ๊ธฐ๋ฅ ํ๋ฆ๋
[1] admin.jsp ์ ์ ์์ฒญ
โฌ
[2] ์ธ์
๊ฒ์ฌ โ ๋ก๊ทธ์ธ ID๊ฐ 'admin'์ธ์ง ํ์ธ
โฌ
[3] ๊ด๋ฆฌ์์ผ ๊ฒฝ์ฐ โ DAO์์ ์ ์ฒด ๋ชฉ๋ก ์กฐํ
โฌ
[4] list ์ถ๋ ฅ + ์ญ์ or ๊ถํ๋ณ๊ฒฝ ๋ฒํผ ํ์ฑํ
โฌ
[5] ์ญ์ ํด๋ฆญ ์ โ /delete?id=3 ์คํ
[6] ๊ถํ๋ณ๊ฒฝ ํด๋ฆญ ์ โ /roleChange?id=3 ์คํ
โ
3. ๊ธฐ๋ฅ๋ณ ์ญํ ์ ๋ฆฌ
๊ธฐ๋ฅ |
์ญํ |
โ
๊ด๋ฆฌ์ ์ธ์ฆ |
๋ก๊ทธ์ธ ์ธ์
์ ID๊ฐ โadminโ์ธ์ง ํ์ธ |
๐ ํ์ ๋ฆฌ์คํธ ์ถ๋ ฅ |
์ ์ฒด ์ฌ์ฉ์ ๋ชฉ๋ก์ ์ถ๋ ฅ (DAO์์ SELECT * ) |
โ ํ์ ์ญ์ |
์ ํํ ํ์์ ID๋ฅผ ์ ๋ฌ๋ฐ์ DELETE ์คํ |
๐ ๊ถํ ๋ณ๊ฒฝ |
์ผ๋ฐํ์ โ ๊ด๋ฆฌ์ or ๊ด๋ฆฌ์ โ ์ผ๋ฐํ์์ผ๋ก ๋ณ๊ฒฝ |
โ
4. ์ค์ ์์ ์ฝ๋ ๐ฏ
๐ [1] admin.jsp
<%
String loginId = (String) session.getAttribute("loginId");
if (!"admin".equals(loginId)) {
%>
<script>
alert("๊ด๋ฆฌ์๋ง ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.");
location.href = "login.jsp";
</script>
<%
return;
}
%>
<%@ page import="java.util.*, yourpackage.MemberDTO" %>
<%
List<MemberDTO> list = (List<MemberDTO>) request.getAttribute("list");
%>
<h2>ํ์ ๊ด๋ฆฌ ํ์ด์ง</h2>
<table border="1">
<tr>
<th>์์ด๋</th>
<th>์ด๋ฆ</th>
<th>๊ถํ</th>
<th>๊ด๋ฆฌ</th>
</tr>
<% for(MemberDTO dto : list) { %>
<tr>
<td><%= dto.getUserid() %></td>
<td><%= dto.getName() %></td>
<td><%= dto.getRole() %></td>
<td>
<a href="delete?id=<%= dto.getId() %>">์ญ์ </a> |
<a href="roleChange?id=<%= dto.getId() %>">๊ถํ๋ณ๊ฒฝ</a>
</td>
</tr>
<% } %>
</table>
๐ [2] AdminServlet.java โ ๊ด๋ฆฌ์ ๋ชฉ๋ก ์กฐํ
@WebServlet("/admin")
public class AdminServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String loginId = (String) req.getSession().getAttribute("loginId");
if (!"admin".equals(loginId)) {
resp.sendRedirect("login.jsp");
return;
}
MemberDAO dao = new MemberDAO();
List<MemberDTO> list = dao.selectAll();
req.setAttribute("list", list);
RequestDispatcher rd = req.getRequestDispatcher("admin.jsp");
rd.forward(req, resp);
}
}
๐ [3] MemberDAO.java โ ๊ถํ๋ณ๊ฒฝ / ์ญ์ ๋ฉ์๋
// ์ญ์ ๋ฉ์๋
public void delete(int id) {
try {
Connection conn = DB.getConnection();
String sql = "DELETE FROM members WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// ๊ถํ ๋ณ๊ฒฝ ๋ฉ์๋ (admin โ user)
public void toggleRole(int id) {
try {
Connection conn = DB.getConnection();
String sql = "UPDATE members SET role = IF(role='admin', 'user', 'admin') WHERE id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.executeUpdate();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
๐ [4] RoleChangeServlet.java
@WebServlet("/roleChange")
public class RoleChangeServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
MemberDAO dao = new MemberDAO();
dao.toggleRole(id);
resp.sendRedirect("admin");
}
}
๐ [5] DeleteServlet.java
@WebServlet("/delete")
public class DeleteServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
int id = Integer.parseInt(req.getParameter("id"));
MemberDAO dao = new MemberDAO();
dao.delete(id);
resp.sendRedirect("admin");
}
}
โ
5. ๊ด๋ฆฌ์ ๊ธฐ๋ฅ ์์
๊ธฐ๋ฅ |
URL ์์ |
์ค๋ช
|
ํ์ ๋ชฉ๋ก ๋ณด๊ธฐ |
/admin |
๋ชจ๋ ํ์ ์ถ๋ ฅ |
ํ์ ์ญ์ |
/delete?id=3 |
3๋ฒ ํ์ ์ญ์ |
๊ถํ ๋ณ๊ฒฝ |
/roleChange?id=3 |
3๋ฒ ํ์์ ๊ถํ ํ ๊ธ |
โ
6. ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ ๐ฌ
์ง๋ฌธ |
์์ ์ ๋ฆฌ |
๊ด๋ฆฌ์ ํ์ด์ง์ ์ ๊ทผ ์กฐ๊ฑด์? |
์ธ์
๊ฐ์ด 'admin'์ธ์ง ๊ฒ์ฌ |
๊ถํ ๋ณ๊ฒฝ์ ์ด๋ป๊ฒ ํ๋์? |
UPDATE ์ฟผ๋ฆฌ์์ IF(role='admin', 'user', 'admin') |
์ญ์ ์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๋ ค๋ฉด? |
ํ๋ผ๋ฏธํฐ๋ก ID ์ ๋ฌ โ PreparedStatement ์ฌ์ฉ |
์ผ๋ฐ ์ฌ์ฉ์์ ๊ด๋ฆฌ์ ๊ตฌ๋ถ ๋ฐฉ์์? |
members ํ
์ด๋ธ์ role ์ปฌ๋ผ ๊ฐ์ผ๋ก ๊ตฌ๋ถ |
โ
7. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- โ
๊ด๋ฆฌ์ ํ์ด์ง๋ ์ธ์
๊ฒ์ฌ โ ์ ์ฒด ์ถ๋ ฅ โ ์ญ์ /๋ณ๊ฒฝ ํ๋ฆ์ผ๋ก ์ค๊ณ
- ๐ ์ธ์
์ด โadminโ์ผ ๊ฒฝ์ฐ์๋ง ์ ๊ทผ ํ์ฉ (๋ณด์ ํ์!)
- ๐ ๊ถํ ๋ณ๊ฒฝ์ SQL
IF()
ํจ์๋ก ํ ๊ธ ๋ฐฉ์ ๊ตฌํ
- โ๏ธ ์ญ์ ๋ URL ํ๋ผ๋ฏธํฐ๋ก ID ์ ๋ฌ ํ DAO์์ ์ฒ๋ฆฌ