** ๐Ÿ“Œ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„**

์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„ธ์…˜์— ID ์ €์žฅ โ†’ ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€

๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ์ฒ˜๋ฆฌ + ์„ธ์…˜ ์ €์žฅ/ํ•ด์ œ ํ๋ฆ„ ์™„์ „ ์ •๋ฆฌ


๐Ÿงฉ ๋ชฉ์ฐจ

  1. ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ฐœ์š”
  2. ์ „์ฒด ํ๋ฆ„๋„
  3. ๋‹จ๊ณ„๋ณ„ ํŒŒ์ผ ์—ญํ•  ์ •๋ฆฌ
  4. ์ „์ฒด ์˜ˆ์ œ ์ฝ”๋“œ
  5. ๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ์ฒ˜๋ฆฌ
  6. ์„ธ์…˜ ์ €์žฅ/์œ ์ง€/๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ
  7. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ
  8. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ + Notion ์ž‘์„ฑ ํŒ

โœ… 1. ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ฐœ์š”

ํ•ญ๋ชฉ ์„ค๋ช…
๋ชฉ์  ํšŒ์› ์ธ์ฆ ํ›„ ์„ธ์…˜์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€
๋ฐฉ์‹ ํผ ์ž…๋ ฅ๊ฐ’ โ†’ DB ๋น„๊ต โ†’ ์ผ์น˜ ์‹œ ์„ธ์…˜ ์ €์žฅ
๊ธฐ์ˆ  JSP, Servlet, DAO, Session, Redirect

โœ… 2. ์ „์ฒด ํ๋ฆ„๋„

[1] login.jsp โ†’ ์‚ฌ์šฉ์ž ID/PW ์ž…๋ ฅ
 โฌ‡
[2] LoginServlet โ†’ DB์™€ ๋น„๊ต
 โฌ‡
[3] ์„ฑ๊ณต: ์„ธ์…˜์— ID ์ €์žฅ โ†’ list.jsp ๋ฆฌ๋””๋ ‰์…˜
[4] ์‹คํŒจ: alert ํ›„ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

โœ… 3. ๋‹จ๊ณ„๋ณ„ ์—ญํ•  ์ •๋ฆฌ

๋‹จ๊ณ„ ํŒŒ์ผ ์„ค๋ช…
1 login.jsp ์‚ฌ์šฉ์ž ID/PW ์ž…๋ ฅ ํ™”๋ฉด (View)
2 LoginServlet.java ์ž…๋ ฅ๊ฐ’์„ DAO์— ์ „๋‹ฌ โ†’ DB ๋น„๊ต (Controller)
3 MemberDAO.java ID/PW ์กฐํšŒ โ†’ boolean ๋ฐ˜ํ™˜ (Model)
4 list.jsp ๋“ฑ ๋กœ๊ทธ์ธ ํ›„ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€
5 logout.jsp ์„ธ์…˜ ์ดˆ๊ธฐํ™” ํ›„ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

โœ… 4. ์ „์ฒด ์˜ˆ์ œ ์ฝ”๋“œ ๐ŸŽฏ


๐Ÿ“„ [1] login.jsp

<form action="login" method="post">
  ์•„์ด๋””: <input type="text" name="userid" /><br />
  ๋น„๋ฐ€๋ฒˆํ˜ธ: <input type="password" name="userpw" /><br />
  <input type="submit" value="๋กœ๊ทธ์ธ" />
</form>

๐Ÿ“„ [2] LoginServlet.java

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {

    req.setCharacterEncoding("UTF-8");
    String userid = req.getParameter("userid");
    String userpw = req.getParameter("userpw");

    MemberDAO dao = new MemberDAO();
    boolean isValid = dao.login(userid, userpw);

    if (isValid) {
      // ์„ธ์…˜์— ๋กœ๊ทธ์ธ ์ •๋ณด ์ €์žฅ
      HttpSession session = req.getSession();
      session.setAttribute("loginId", userid);
      resp.sendRedirect("list.jsp");
    } else {
      resp.setContentType("text/html;charset=UTF-8");
      PrintWriter out = resp.getWriter();
      out.println("<script>");
      out.println("alert('๋กœ๊ทธ์ธ ์‹คํŒจ! ์•„์ด๋”” ๋˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ');");
      out.println("location.href='login.jsp';");
      out.println("</script>");
    }
  }
}

๐Ÿ“„ [3] MemberDAO.java โ€“ ๋กœ๊ทธ์ธ ์ฒดํฌ ๋ฉ”์„œ๋“œ

public boolean login(String userid, String userpw) {
  boolean result = false;
  try {
    Connection conn = DB.getConnection();
    String sql = "SELECT * FROM members WHERE userid=? AND userpw=?";
    PreparedStatement ps = conn.prepareStatement(sql);
    ps.setString(1, userid);
    ps.setString(2, userpw);
    ResultSet rs = ps.executeQuery();
    result = rs.next(); // ๊ฒฐ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉด ๋กœ๊ทธ์ธ ์„ฑ๊ณต
    conn.close();
  } catch(Exception e) {
    e.printStackTrace();
  }
  return result;
}

โœ… 5. ๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ์ฒ˜๋ฆฌ

์ƒํ™ฉ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•
โœ… ์„ฑ๊ณต session.setAttribute("loginId", userid) โ†’ ๋ฉ”์ธํŽ˜์ด์ง€ ๋ฆฌ๋””๋ ‰์…˜
โŒ ์‹คํŒจ alert() ํ›„ location.href='login.jsp'

โœ… 6. ์„ธ์…˜ ์œ ์ง€ / ๋กœ๊ทธ์•„์›ƒ ์ฒ˜๋ฆฌ


๐Ÿ“„ list.jsp (๋กœ๊ทธ์ธ ํ›„ ํŽ˜์ด์ง€)

<%
  String id = (String) session.getAttribute("loginId");
  if (id == null) {
%>
  <script>
    alert("๋กœ๊ทธ์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.");
    location.href = "login.jsp";
  </script>
<%
  return;
  }
%>
<h3><%= id %>๋‹˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!</h3>
<a href="logout.jsp">๋กœ๊ทธ์•„์›ƒ</a>

๐Ÿ“„ logout.jsp

<%
  session.invalidate(); // ์„ธ์…˜ ์ดˆ๊ธฐํ™”
  response.sendRedirect("login.jsp");
%>

โœ… 7. ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ํ•ต์‹ฌ ์š”์•ฝ ๐Ÿ’ฌ

์งˆ๋ฌธ ์š”์  ์ •๋ฆฌ
๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ ํ๋ฆ„์€? ์ž…๋ ฅ๊ฐ’ โ†’ DAO โ†’ DB ๋น„๊ต โ†’ ์„ธ์…˜ ์ €์žฅ or ์‹คํŒจ ์ฒ˜๋ฆฌ
์„ธ์…˜์ด๋ž€? ์„œ๋ฒ„์— ์ €์žฅ๋˜๋Š” ์‚ฌ์šฉ์ž๋ณ„ ์ƒํƒœ๊ฐ’ ์ €์žฅ์†Œ
์„ธ์…˜ ์ €์žฅ ๋ฐฉ๋ฒ•์€? session.setAttribute("ํ‚ค", ๊ฐ’)
๋กœ๊ทธ์•„์›ƒ ๋ฐฉ๋ฒ•์€? session.invalidate() ์‚ฌ์šฉ
๋กœ๊ทธ์ธ ์ฒดํฌ ์—†์ด ํŽ˜์ด์ง€ ์ ‘๊ทผํ•˜๋ฉด? session.getAttribute()๋กœ null ์ฒดํฌ ํ›„ ๋ฆฌ๋””๋ ‰์…˜

โœ… 8. ๋งˆ๋ฌด๋ฆฌ ์š”์•ฝ ๐Ÿง