(22.11.22)์ ์์ฑํ ํ๋ก๊ทธ๋จ์ ์ถ๊ฐ๋ก ๋ก๊ทธ์์ ๊ธฐ๋ฅ ์์ฑ
๊ทธ๋ฆฌ๊ณ ํด๋น uid์ ์์ฑ์๋ง ์์ ์ ๊ธ์ ์ญ์ , ์์ ๊ฐ๋ฅํ๊ฒ ํ๊ธฐ ๋ค๋ฅธ ์ฌ๋์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด ๊ธ ์ฝ๊ธฐ๋ ๊ฐ๋ฅํ๋๋ผ๋ ์ญ์ ์์ ์ ๋ถ๊ฐ๋ฅ ํ๊ฒ ๋ง๋ค๊ธฐ
โโlogout Partโโ
loginController.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String cmd = request.getParameter("cmd");
if (cmd==null) cmd = "loginform";
if(cmd.equals("loginform")){ %>
<jsp:forward page="../WEB-INF/jsp/loginForm.jsp"/>
<% }else if(cmd.equals("login")){ %>
<jsp:forward page="../WEB-INF/jsp/loginProc.jsp"/>
<% }else if(cmd.equals("logout")){ %>
<jsp:forward page="../WEB-INF/jsp/logoutProc.jsp"/>
<% }
%>
|
cs |
๋ก๊ทธ์ธ ์ปจํธ๋กค๋ก cmd์ ๊ฐ์ ๋ฐ๋ผ ํด๋น jsp๋ก forwardํด์ค๋ค.
UserService.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
|
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class UserService
{
private HttpSession session;
private static Map<String,String> userMap = new HashMap<>();
static { //static ๋ธ๋ญ : ํด๋์ค๊ฐ ๋ก๋๋ ๋ ์๋์ผ๋ก ํ๋ฒ๋ง ์คํ๋๋ ๋ธ๋ญ (๊ธฐ๋ฅ์DB๋ผ ์๊ฐํ๋ฉด ๋จ)
userMap.put("smith", "1111");
userMap.put("bob", "2222");
}
public UserService() {}
public boolean login(User user)
{
Set<String> keyset =userMap.keySet();
Iterator<String> it = keyset.iterator();
while(it.hasNext()) {
String uid = it.next();
String pwd = userMap.get(uid);
if(user.getUid().equals(uid) && user.getPwd().equals(pwd))
{
session.setAttribute("uid", user.getUid());
return true;
}
}
return false;
}
public void setSession(HttpSession session) {
this.session = session;
}
public void logout()
{
session.invalidate();
}
}
|
cs |
hashMap์ ์ด์ฉํ์ฌ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์์ผ๋ก ์ ์ฅํ๋ค.
16ํ: ์๋ฃ๊ตฌ์กฐ map์ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ฃผ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ Set ์๋ฃ๊ตฌ์กฐ๋ก ๋ฐ๊ฟ์ Iterator๋ฅผ ํตํด hasNext()๋ฉ์๋๋ฅผ ์จ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
34ํ : logout ๋ฉ์๋
session.removeAttribute("uid"); (๋ก๊ทธ์์ ๋งํฌ ํด๋ฆญ์ ์๋ฒ์ธก session์ ์ ์ฅ๋ ์ด์ฉ์์ id์ ๊ฑฐ)
session.invalidate();(์ธ์ ์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ๋ค์ ์ ๋ถ ์ญ์ )
user_inc.jsp
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
|
<%@ page contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String uid = (String)session.getAttribute("uid");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> ๋ก๊ทธ์์ </title>
</head>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous">
</script>
<script type="text/javascript">
function logout()
{
$.ajax({
url : '/JavaWeb/login/loginController.jsp',
method: 'post',
data:{"cmd":"logout"},
cache : false,
dataType:'json',
success:function(res){
alert(res.logout ? '๋ก๊ทธ์์ ์ฑ๊ณต' : '๋ก๊ทธ์์ ์คํจ');
location.href='/JavaWeb/login/loginController.jsp';
},
error : function(xhr,status,err){
alert('์๋ฌ:' + err);
}
});
}
</script>
<style>
a#logout_link {margin-left:1em; background-color:rgb(255,200,200); font-size: small;}
</style>
<body>
<span><%=uid %></span>
<a id="logout_link"href="javascript:logout();">๋ก๊ทธ์์</a>
</body>
</html>
|
cs |
๋ก๊ทธ์์ ๋งํฌ๋ฅผ ๋๋ฅด๋ฉด logout()ํจ์๊ฐ ๋์๊ฐ๋ค. ๋ก๊ทธ์ธ์ปจํธ๋กค๋ฌ์ cmd์ logout์ ์ค๋ค. logoutProc.jsp์์ ๋์ด์จ ์๋ต์ด ์ฐธ์ด๋ฉด ๋ก๊ทธ์์ ์ฑ๊ณต์ ๊ฑฐ์ง์ด๋ฉด ๋ก๊ทธ์์ ์คํจ๋ฅผ alert์ฐฝ์ ๋์ด๋ค.
logoutProc.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<%@page import="org.json.simple.JSONObject"%>
<%@ page contentType="application/json; charset=utf-8" pageEncoding="utf-8"%>
<jsp:useBean id="login_svc" class="com.ezen.web.user.UserService" scope="session">
<jsp:setProperty name="login_svc" property="session" value="<%=session%>" />
</jsp:useBean>
<%
login_svc.logout();
JSONObject jsObj = new JSONObject();
jsObj.put("logout", true);
out.print(jsObj.toJSONString());
out.flush();
%>
|
cs |
logout()๋ฉ์๋๋ฅผ ๋๋ ค ์ฐธ์ด ๋์จ๋ค๋ฉด json๊ฐ์ฒด์ logout์ ์ฐธ์ด๋ผ ์ค์ ํด์ user_inc.jsp์ ๋๊ฒจ์ค๋ค.
โโBoard Partโโ
boardController.jsp
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
|
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String uid = (String)session.getAttribute("uid");
if(uid==null) {
session.setAttribute("url", request.getRequestURL().toString());
response.sendRedirect("../login/loginController.jsp?cmd=loginform");
return;
}
String cmd = request.getParameter("cmd");
if (cmd==null) cmd="LIST";
switch(cmd)
{
case "ADD_FORM":
%>
<jsp:forward page="../WEB-INF/jsp/boardAddForm.jsp"/>
<%
break;
case "ADD":
%>
<jsp:forward page="../WEB-INF/boardAddProc.jsp"/>
<%
break;
case "LIST":
%>
<jsp:forward page="../WEB-INF/jsp/boardListForm.jsp"/>
<% break;
case "READ":
%>
<jsp:forward page="../WEB-INF/jsp/boardDetailForm.jsp"/>
<% break;
case "FIND":
%>
<jsp:forward page="../WEB-INF/jsp/boardDetailForm.jsp"/>
<% break;
case "EDIT":
%>
<jsp:forward page="../WEB-INF/jsp/boardEditForm.jsp"/>
<% break;
case "UPDATE":
%>
<jsp:forward page="../WEB-INF/boardUpdateForm.jsp"/>
<% break;
case "DELETE":
%>
<jsp:forward page="../WEB-INF/boardDeleteForm.jsp"/>
<% break;
}
%>
|
cs |
์ด์ฉ์๊ฐ ๋ง์ฝ ์์ /์ญ์ ์ ์์ฒญ ๊ฒฝ๋ก๋ฅผ ์๊ณ ์๋ค๋ฉด ๊ทธ ์ฃผ์๋ฅผ ์ฃผ์์ฐฝ์ ์
๋ ฅํ๊ณ ์ ๊ทผํ ์ ์๋ค.
๊ทธ๋์ ๋ฌด๋ถ๋ณํ๊ฒ ์ ์ํ๋ ๊ฑธ ๋ง๊ธฐ ์ํ์ฌ ๋ทฐ์ ํด๋น๋๋ ๋ชจ๋ ํ์ด์ง๋ค์ ์ด์ฉ์๊ฐ ์ง์ ์ ๊ทผํ ์ ์๋๋ก ๊ฐ์ถฐ์ผํ๋ค.
์ฝํธ๋กค๋ฌ๋ฅผ ๊ฑฐ์น์ง ์๊ณ url๋ก ์ ์ํ์ง ์๊ฒ ํ๊ธฐ ์ํด์ ์ฝํธ๋กค๋ฌ๋ฅผ ์ ์ธํ ๋ค๋ฅธ ๋ทฐ,๋ก์ง jsp๋ค์ ๋ชจ๋ WEB-INF ์์ ์ ์ฅํ์ฌ ์คํํด์ผ ํ๋ค.
WEB-INF/ ์๋์ JSPํ์ผ์ ๋๋ฉด ์ด์ฉ์๊ฐ ์น๋ธ๋ผ์ฐ์ ๋ก ์ง์ ํธ์ถ ํ ์ ์๋ค.
forward ์์ page์์ฑ์ผ๋ก WEB-INF/.... ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
boardListForm.jsp
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
|
<%@page import="com.ezen.web.hello.*"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<jsp:useBean id="board_svc" class="com.ezen.web.hello.BoardService" scope="session"/>
<%
List<Board> list = board_svc.getList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>๊ฒ์๊ธ ๋ชฉ๋ก</title>
<style type="text/css">
main { width:fit-content; margin:1em auto; }
main h3{ text-align: center; }
table { border:1px solid black; border-spacing:0; border-collapse: collapse;
padding:0.5em;
}
td,th { border-bottom:1px dashed black; padding:0.3em 1em;
border-right: 1px solid black;
}
th { background-color:rgb(210,210, 255);}
a {text-decoration: none;}
div.links { width:fit-content; margin:1em auto; }
</style>
</head>
<body>
<main>
<%@ include file="/WEB-INF/jsp/user_inc.jsp" %>
<h3>๊ฒ์๊ธ ๋ชฉ๋ก</h3>
<table>
<tr><th>๋ฒํธ</th><th>์ ๋ชฉ</th><th>์์ฑ์</th><th>์์ฑ์ผ</th><th>ํํธ์</th></tr>
<%
for(int i=0;i<list.size();i++) {
Board board = list.get(i);
%>
<tr>
<td><%=board.getNum()%></td>
<td>
<a href="boardController.jsp?cmd=READ&num=<%=board.getNum()%>">
<%=board.getTitle()%></a>
</td>
<td><%=board.getAuthor()%></td>
<td><%=board.getRegDate()%></td>
<td><%=board.getHit()%></td>
</tr>
<% }
%>
</table>
<div class="links">
[<a href="boardController.jsp?cmd=ADD_FORM">๊ธ์ฐ๊ธฐ</a>]
</div>
</main>
</body>
</html>
|
cs |
29ํ : ์ง์์ ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ include ์ง์์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ์ด์ง(๋ก๊ทธ์์ ๋งํฌ๋ฅผ ๋ง๋ค์ด ๋ด๋ user_inc.jsp)๋ฅผ ํ์ฌ ํ์ด์ง์ ์ฝ์ ํ๋ค.
boardDetailForm.jsp
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<%@page import="com.ezen.web.hello.Board"%>
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<jsp:useBean id="board_svc" class="com.ezen.web.hello.BoardService" scope="session"/>
<jsp:setProperty name="board_svc" property="request" value="<%=request %>" />
<jsp:useBean id="board" class="com.ezen.web.hello.Board">
<jsp:setProperty name="board" property="*" />
</jsp:useBean>
<%
Board b = board_svc.read(board);
String thisuid = (String)session.getAttribute("uid");
String author = b.getAuthor();
boolean owned = thisuid.equals(author);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>๊ฒ์๊ธ ์ฝ๊ธฐ</title>
<style type="text/css">
main{width:fit-content; margin:1em auto; }
main h3{text-align: center;}
label { display:inline-block; padding:0.2em 1em; border-bottom:1px solid black;
text-align: right; width:3em; margin-right:1em;
}
</style>
</head>
<script src="https://code.jquery.com/jquery-3.6.1.min.js"
integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous">
</script>
<script type="text/javascript">
$(function(){
var owned = <%=owned %>
if(!owned){
$('#owner_only').css('display','none');
}
});
</script>
<script type="text/javascript">
function deleteBoard(num)
{
if(!confirm("์ ๋ง๋ก ํ์ฌ ๊ฒ์๊ธ์ ์ญ์ ํ๊ฒ ์ต๋๊น?")) return;
var obj ={};
obj.cmd='DELETE'; //={"cmd":"DELETE"}
obj.num=<%=b.getNum()%>;
$.ajax({
url:'boardController.jsp',
method:'post',
data: obj,
cache : false,
dataType: 'json',
success: function(res){
if(res.deleted){
alert(res.deleted ? '์ญ์ ์ฑ๊ณต':'์๋ฌ');
location.href ='boardController.jsp?cmd=LIST';
}
},
error : function(xhr,status,err){
alert(err);
}
});
return false;
}
</script>
<body>
<main>
<%@ include file="/WEB-INF/jsp/user_inc.jsp" %>
<h3>๊ฒ์๊ธ ์ฝ๊ธฐ</h3>
<div><label>๊ธ๋ฒํธ</label> <%=b.getNum()%></div>
<div><label>์ ๋ชฉ</label> <%=b.getTitle()%></div>
<div><label>์์ฑ์</label> <%=b.getAuthor()%></div>
<div><label>์์ฑ์ผ</label> <%=b.getRegDate()%></div>
<div><label>ํํธ์</label> <%=b.getHit()%></div>
<div><label>๊ธ๋ด์ฉ</label> <%=b.getContents()%></div>
[<a href="boardController.jsp?cmd=ADD_FORM"> ๊ฒ์๊ธ ๋ฑ๋ก ํ์ด์ง ๊ฐ๊ธฐ </a>]
<span id="owner_only">
[<a href="boardController.jsp?cmd=EDIT&num=<%=b.getNum()%>"> ์์ </a>]
[<a href="javascript:deleteBoard(<%=b.getNum()%>);">์ญ์ </a>]
</span>
[<a href="boardController.jsp?cmd=LIST"> ๋ชฉ๋ก ๊ฐ๊ธฐ</a>]
</main>
</body>
</html>
|
cs |
18ํ : ์์ฑ์์ ํ์ฌ ์ธ์ ๊ฐ์ฒด์ ์๋ uid๊ฐ ๊ฐ์ง ์๋ค๋ฉด ์ญ์ ์ ์์ ๋งํฌ๋ฅผ ์์ ํ ์์ ๊ธฐ
$('#btn').css('visibility','hidden'); btn ํ๊ทธ๋ฅผ ์๋ณด์ด๊ฒ ํจ
$('#btn').css('visibility','hidden'); btn ํ๊ทธ๋ฅผ ๋ณด์ด๊ฒ ํจ
$('#btn').css('display','none'); btn ํ๊ทธ๋ฅผ ์์ ํ ์ ๊ฑฐํจ
์คํ ๊ฒฐ๊ณผ :
๋๊ธ