** ๐๋ก๊ทธ์ธ ์์คํ
๊ตฌํ**
์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ๋ฉด ์ธ์
์ ID ์ ์ฅ โ ๋ก๊ทธ์ธ ์ํ ์ ์ง
๋ก๊ทธ์ธ ์ฑ๊ณต/์คํจ ์ฒ๋ฆฌ + ์ธ์
์ ์ฅ/ํด์ ํ๋ฆ ์์ ์ ๋ฆฌ
๐งฉ ๋ชฉ์ฐจ
- ๋ก๊ทธ์ธ ์์คํ
๊ฐ์
- ์ ์ฒด ํ๋ฆ๋
- ๋จ๊ณ๋ณ ํ์ผ ์ญํ ์ ๋ฆฌ
- ์ ์ฒด ์์ ์ฝ๋
- ๋ก๊ทธ์ธ ์ฑ๊ณต/์คํจ ์ฒ๋ฆฌ
- ์ธ์
์ ์ฅ/์ ์ง/๋ก๊ทธ์์ ์ฒ๋ฆฌ
- ๊ธฐ์ ๋ฉด์ ๋๋น ํต์ฌ ์์ฝ
- ๋ง๋ฌด๋ฆฌ ์์ฝ + 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. ๋ง๋ฌด๋ฆฌ ์์ฝ ๐ง
- ๐ ๋ก๊ทธ์ธ ์ฑ๊ณต ์ ์ธ์
์ ID ์ ์ฅ (
session.setAttribute
)
- ๐ช ๋ก๊ทธ์์์ ์ธ์
์ด๊ธฐํ (
invalidate
)
- ๐ซ ๋ก๊ทธ์ธ ์ ๋ ์ฌ์ฉ์๋ ํ์ด์ง ์ง์
์ฐจ๋จํด์ผ ํจ
- โ
JSP + Servlet + DAO + Session ์ฐ๋์ผ๋ก MVC ๊ตฌ์กฐ ์์ฑ๋จ