- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (5) ๋ก๊ทธ์ธ/๋ก๊ทธ์์(HttpSession)
[IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (5) ๋ก๊ทธ์ธ/๋ก๊ทธ์์(HttpSession)
๋ณธ ํฌ์คํ ์์๋ HttpSession์ ํ์ฉํด์ ํ์๊ฐ์ ์์ ์ ๋ก๊ทธ์ธ/๋ก๊ทธ์์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ คํ๋ค.
1. ๋ก๊ทธ์ธ ์๋ธ๋ฆฟ ์์ฑ
LogInServlet.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
@WebServlet("/auth/login")
public class LogInServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// LogInForm.jsp๋ก ํฌ์๋ฉ
RequestDispatcher rd = req.getRequestDispatcher("/auth/LogInForm.jsp");
rd.forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ServletContext sc = req.getServletContext();
try {
conn = (Connection) sc.getAttribute("conn");
// DB์์ ํ์ ์ ๋ณด ์กฐํ
pstmt = conn.prepareStatement(
"SELECT STUDENT_NO, STUDENT_NAME FROM STUDENT" +
" WHERE STUDENT_NO = ? AND PASSWORD = ?"
);
pstmt.setString(1, req.getParameter("student_no"));
pstmt.setString(2, req.getParameter("password"));
rs = pstmt.executeQuery();
// ์ผ์นํ๋ ํ์์ด ์์ผ๋ฉด Student์ ํ์ ์ ๋ณด ๋ด์
if(rs.next()) {
Student student = new Student()
.setStudentNo(rs.getString("STUDENT_NO"))
.setStudentName(rs.getString("STUDENT_NAME"));
// HttpSession์ ์ ์ฅ
HttpSession session = req.getSession();
session.setAttribute("student", student);
// /student/list๋ก ๋ฆฌ๋ค์ด๋ ํธ
resp.sendRedirect("../student/list");
} else {
// ๋ก๊ทธ์ธ ์คํจ ์ /auth/LogInFail.jsp๋ก ํฌ์๋ฉ
RequestDispatcher rd = req.getRequestDispatcher("/auth/LogInFail.jsp");
rd.forward(req, resp);
}
} catch (SQLException e) {
req.setAttribute("error", e);
RequestDispatcher rd = req.getRequestDispatcher("/Error.jsp");
rd.forward(req, resp);
} finally {
try {
if(rs != null) rs.close();
if(pstmt != null) pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
|
cs |
GET ์์ฒญ์ด ๋ค์ด์ค๋ฉด doGet()์ด ํธ์ถ๋์ด LogInForm.jsp๋ก ํฌ์๋ฉํ๋ค.
rd.forward(req, resp);
์ฌ์ฉ์๊ฐ ํ๋ฒ, ์ํธ๋ฅผ ์ ๋ ฅํ ํ POST ์์ฒญ์ ํ๋ฉด doPost()๊ฐ ํธ์ถ๋๋ค.
doPost()์์๋ DB๋ก๋ถํฐ ํ์ ์ ๋ณด๋ฅผ ์กฐํํ๊ณ ์ผ์นํ๋ ํ์์ ์ฐพ์ผ๋ฉด Student vo์ ํ์ ์ ๋ณด๋ฅผ ๋ด๋๋ค.
Student student = new Student() .setStudentNo(rs.getString("STUDENT_NO")) .setStudentName(rs.getString("STUDENT_NAME"));
๊ทธ๋ฆฌ๊ณ Student ์ธ์คํด์ค๋ฅผ HttpSession์ ๋ด๋๋ค.
HttpSession์ ์ ์ฅ๋์ด์๋ ๋ฐ์ดํฐ๋ ์ธ์ ์ ๋ฌดํจํ์ํฌ๋ ๊น์ง ๋ชจ๋ ์๋ธ๋ฆฟ์์ ์ ์ง๋๋ค.
HttpSession๊ณผ ๋ค๋ฅธ ์๋ธ๋ฆฟ ์ ์ฅ์์ ๋ํด์๋ ์ด ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
HttpSession session = req.getSession();
session.setAttribute("student", student);
๋ก๊ทธ์ธ ์ฑ๊ณต์ด๋ฉด /student/list (ํ์ ๋ชฉ๋ก)์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ ํ๋ค.
resp.sendRedirect("../student/list");
๋ก๊ทธ์ธ์ ์คํจํ๋ฉด /auth/LogInFail.jsp๋ก ํฌ์๋ฉ ํ๋ค.
rd.forward(req, resp);
2. ๋ก๊ทธ์ธ ์ ๋ ฅํผ ์์ฑ
์น ์ฝํ ์ธ ํด๋์ /auth/LogInForm.jsp๋ฅผ ์์ฑํ๋ค.
LogInForm.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>๋ก๊ทธ์ธ</title>
</head>
<body>
<h2>๋ก๊ทธ์ธ</h2>
<form action="login" method="post">
ํ๋ฒ: <input type="text" name="student_no"><br>
๋น๋ฐ๋ฒํธ: <input type="password" name="password"><br>
<input type="submit" value="๋ก๊ทธ์ธ">
<input type='button' value='์ทจ์' onClick='location.href="<%=request.getContextPath()%>/student/list"'>
</form>
</body>
</html>
|
cs |
์์ ๊ฐ์ด <form> ํ๊ทธ๋ฅผ ์์ฑํด์ LogInServlet์ POST๋ก ์์ฒญ์ ์ ์กํ๋ค.
'์ทจ์' ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์ ํ์ ๋ชฉ๋ก์ผ๋ก ์ด๋ํ๋ค.
3. ๋ก๊ทธ์ธ ์คํจ ์ ์ถ๋ ฅํ JSP ์์ฑ
์น ์ฝํ ์ธ ํด๋์ /auth/LogInFail.jsp๋ฅผ ์์ฑํ๋ค.
LogInFail.jsp
1
2
3
4
5
6
7
8
9
10
11
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Refresh" content="3; url=login">
<title>๋ก๊ทธ์ธ ์คํจ</title>
</head>
<body>
<p>๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค. ํ๋ฒ ๋๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ค์ ํ์ธํ์ญ์์ค.<br>
์ ์ ํ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋๋ฉ๋๋ค.</p>
</body>
</html>
|
cs |
๋ก๊ทธ์ธ ์คํจ ์ 3์ด ํ ๋ก๊ทธ์ธ ํ๋ฉด์ผ๋ก ์ด๋ํ๋๋ก <meta> ํ๊ทธ์ refresh ์ ๋ณด๋ฅผ ๋ด์๋ค.
๋ก๊ทธ์ธ ์คํจ ๋ฌธ๊ตฌ ์ถ๋ ฅ ํ ํด๋ผ์ด์ธํธ์๊ฒ 3์ด ํ /auth/login์ ๋ค์ ์์ฒญํ๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฒ ๋๋ค.
4. ๋ก๊ทธ์ธ ์ ๋ณด ์ถ๋ ฅ
๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ๋ฉด ํ์ ๋ชฉ๋ก ํ๋ฉด์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ ๋๋๋ก ํ์๋ค.
์ด์ ํ์ ๋ชฉ๋ก์ ํค๋ ๋ถ๋ถ์ ๋ก๊ทธ์ธํ ํ์์ ์ ๋ณด(์ด๋ฆ)์ ์ถ๋ ฅํ๋๋ก ํ ๊ฒ์ด๋ค.
์๊น ๋ก๊ทธ์ธ ์๋ธ๋ฆฟ(LogInServlet.java)์์ HttpSession์ ๋ก๊ทธ์ธํ ํ์์ ์ธ์คํด์ค๋ฅผ ๋ด์์ผ๋ JSP์์ ๊บผ๋ด ์ฐ๋ฉด ๋๋ค.
Header.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
Student student = (Student) session.getAttribute("student");
%>
<div style="background-color: darkcyan; color: aliceblue; height: 20px; padding: 5px;">
SPMS
<% if(student == null) { %>
<span style="float: right;">
<a style="color: white;" href="<%=request.getContextPath()%>/auth/login">๋ก๊ทธ์ธ</a>
</span>
<% } else {%>
<span style="float: right;"><%=student.getStudentName()%>
<a style="color: white;" href="<%=request.getContextPath()%>/auth/logout">๋ก๊ทธ์์</a>
</span>
<% } %>
</div>
|
cs |
JSP์์๋ HttpSession์ ๋ด์ฅ ๊ฐ์ฒด session์ ํตํด ์ ๊ทผํ ์ ์๋ค.
session์ ์ฌ์ฉํด์ "student" ํค๋ก ์ ์ฅ๋ ํ์ ์ธ์คํด์ค๋ฅผ ๊บผ๋ธ๋ค.
Student student = (Student) session.getAttribute("student");
Student ์ธ์คํด์ค์ getStudentName()์ ํธ์ถํด์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
๋ก๊ทธ์ธํ์ง ์์์ ๋๋(if(student == null)) ๋ก๊ทธ์ธ ํผ์ผ๋ก ์ด๋ํ ์ ์๋ ๋งํฌ๋ฅผ ์ถ๋ ฅํ๋ค.
5. ๋ก๊ทธ์ธ ํ ์คํธ
6. ๋ก๊ทธ์์ ์๋ธ๋ฆฟ ์์ฑ
LogOutServlet.java
1
2
3
4
5
6
7
8
9
10
|
@WebServlet("/auth/logout")
public class LogOutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
session.invalidate();
resp.sendRedirect("login");
}
}
|
cs |
๋ก๊ทธ์์์ invalidate()๋ฅผ ํธ์ถํ์ฌ HttpSession ๊ฐ์ฒด๋ฅผ ๋ฌดํจํ์์ผ์ ๊ตฌํํ๋ค.
์ธ์ ๊ฐ์ฒด๊ฐ ๋ฌดํจํ ๋๋ค๋ ๊ฒ์ HttpSession ๊ฐ์ฒด๊ฐ ์ ๊ฑฐ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
HttpSession session = req.getSession();
session.invalidate();
์ด๋ ๊ฒ ๋ฌดํจํ๋ HttpSession ๊ฐ์ฒด๋ ์๋ก์ด ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์๋ก ๋ง๋ค์ด์ง๋ค.
7. ๋ก๊ทธ์์ ํ ์คํธ
- ๊ด๋ จ ๊ธ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (1) ํ์ ๋ชฉ๋ก ์กฐํ
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (2) ํ์ ๊ฐ์
- [IntelliJ] ํ์๊ฐ์ ์์ (JAVA + MySQL) - (3) ํ์ ์ ๋ณด ์์
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (4) ๋ทฐ(JSP) ๋ถ๋ฆฌํ๊ธฐ
- [IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (5) ๋ก๊ทธ์ธ/๋ก๊ทธ์์(HttpSession)
'Javaยท๏ปฟServletยท๏ปฟJSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ธ๋ฆฟ ๋ฐ์ดํฐ ๋ณด๊ด์ - ServletContext, HttpSession, ServletRequest, JspContext (0) | 2020.02.13 |
---|---|
[IntelliJ] ํ์๊ฐ์ ์์ (MVC) - (6) ํ์ ์ญ์ (0) | 2020.02.13 |
JSP ์ก์ ํ๊ทธ์ jsp:useBean ์ฌ์ฉ ์์ (0) | 2020.02.13 |
ServletContext๋ก DB ์ปค๋ฅ์ ๊ฐ์ฒด ๊ด๋ฆฌํ๊ธฐ (0) | 2020.02.12 |
RequestDispatcher.forward()๋ฅผ ์ด์ฉํ ์๋ฌ ํ์ด์ง ์ถ๋ ฅํ๊ธฐ (0) | 2020.02.12 |
๋๊ธ