โ
session ๊ด๋ฆฌ
โ
logout.jsp
โ
main.jsp ๋ง๋ค๊ธฐ
์ง๊ธ๊น์ง ํ์๊ฐ์
, ๋ก๊ทธ์ธ ๊ธฐ๋ฅ๊น์ง ๊ตฌํํด๋ณด์๋ค.
์ด์ ์ธ์
๊ด๋ฆฌ๋ฅผ ํด ๋ณด์.
`session` ์ด๋ ํ์ฌ ์ ์ํ ํ์์๊ฒ ํ ๋นํด์ฃผ๋ ๊ณ ์ ํ ์์ด๋์ด๋ค.
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ํ์์๊ฒ ๊ฐ๊ฐ `session`์ ๋ถ์ฌํด์ฃผ๋ ๊ณผ์ ์ ๊ตฌํํด๋ณด์.
`loginAction.jsp`์ `session`์ ์ค์ ํด์ฃผ๋ `session.setAttribute()` ์ฝ๋ ํ ์ค ํ์ดํ!
`joinAction.jsp`์๋ ์ฝ๋ ๋ณต๋ถํด์ ๋ฃ์ด ์ค๋ค.
๋ก๊ทธ์ธ ์ฑ๊ณตํ ํ์์๊ฒ ์ธ์
๋ถ์ฌํ๊ณ ๋ฉ์ธ ํ์ด์ง๋ก ๋์ด๊ฐ๊ฒ๋ ํด ์ค๋ค.
์ด๋ ๊ฒ ์ธ์
์ ์ค์ ํด ์ฃผ์๋ค.
์ธ์
์ ํด์ ํ๊ธฐ ์ ๊น์ง๋ ์ ํจํ๊ธฐ ๋๋ฌธ์ ํ ๋นํ ์ธ์
์ ํด์ ํ ์ ์๋ ๋ก๊ทธ์์ ํ์ด์ง๋ ๋ง๋ค์ด ์ฃผ์.
`joinAction.jsp`๋ฅผ ํต์ผ๋ก ๋ณต์ฌํด์
์ jspํ์ผ๋ก ๋ณต๋ถํด์ฃผ์.
์ ํ์ผ๋ช
์ `logoutAction.jsp`๋ก ํด ์ฃผ๊ฒ ๋ค.
์คํฌ๋ฆฝํธ๋ฆฟ ๋ถ๋ถ ์ฝ๋ ๋ค ๋ ๋ฆฌ๊ณ
jsp ํ๊ทธ๋ฆฝ์ด๋ ์๋จ ์ธ์ฝ๋ฉ ๊ด๋ จ ์คํฌ๋ฆฝํธ๋ฆฟ๋ ๋ ๋ ค ์ค๋ค. (์์)
`logoutAction.jsp` ํ์ด์ง ์ฝ๋
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="user.UserDAO" %>
<%@ page import="java.io.PrintWriter" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP ๊ฒ์ํ ์น ์ฌ์ดํธ</title>
</head>
<body>
<%
session.invalidate();
%>
<script>
location.href = 'main.jsp'
</script>
</body>
</html>
์๊พธ ํฐ์คํ ๋ฆฌ ์ฝ๋๋ธ๋ญ์์ ๋ค์ฌ์ฐ๊ธฐ ์ค๋ฅ๊ฐ ๋๋ค.
๊ณ ์ณ๋ ๋ค์ ๋๊ฐ์์ ์ด๊ฑด ๋ด๊ฐ ํด๊ฒฐํ ์ ์๋ ๋ถ๋ถ์ด ์๋.
์คํฌ๋ฆฝํธ๋ฆฟ ์์ ์ธ์
์ ํด์ ํ๋ ์ฝ๋ ํ ์ค์ ์ ๊ณ `main.jsp` ํ์ด์ง๋ก ์ด๋ํด์ค๋ค.
์ด์ ๋ก๊ทธ์ธ์ ํ ํ์๋ค์ ๋ชจ๋ ์ธ์
์์ด๋๋ฅผ ๋ถ์ฌ ๋ฐ๊ธฐ ๋๋ฌธ์ ์ด๊ฑธ ์ด์ฉํ๋ฉด ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค.
๊ทธ๋์ ์ด์ ๋ก๊ทธ์ธ์ด ๋ ์ ์ ๋ ๋ก๊ทธ์ธ๊ณผ ํ์๊ฐ์
ํ์ด์ง์ ๋ค์ด๊ฐ ์ ์๋๋ก ํด ์ค๋ค.
String userID = null;
if (session.getAttribute("userID")!=null) {
userID = (String) session.getAttribute("userID");
}
if (userID != null) {
PrintWriter script = response.getWriter();
script.println("<script>");
script.println("alert('์ด๋ฏธ ๋ก๊ทธ์ธ์ด ๋์ด์์ต๋๋ค.')");
script.println("location.href = 'main.jsp'");
script.println("</script>");
}
์ ์ฝ๋๋ฅผ ๊ฐ๊ฐ `loginAction.jsp`์ `joinAction.jsp`์ ์
๋ ฅํด ์ค๋ค.
์ด์ฐจํผ ๊ฐ์ ์ฝ๋๋ผ `loginAction.jsp`์๋ง ์ฝ๋๋ฅผ ์จ ์ฃผ๊ณ `joinAction.jsp`์๋ ๋ณต์ฌ ๋ถ์ฌ๋ฃ๊ธฐ ํด ์ฃผ์๋ค.
์๋ ์ ์์ผ๋ก ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋๋ฉด
`login.jsp`๋ก ๊ฐ์ ์ด ๋ถ๋ถ์ ์์ ํด์ผ ํ๋ค.
<ul class="dropdown-menu">
<li><a class="dropdown-item active" href="login.jsp">๋ก๊ทธ์ธ</a></li>
<li><a class="dropdown-item" href="join.jsp">ํ์๊ฐ์
</a></li>
</ul>
๋ก๊ทธ์ธ ์ ํ์ฌ๋ํํ
๋ง ์ ๋ถ๋ถ์ด ๋ณด์ฌ์ง๊ฒ ํ๋ ค๋ฉด `login.jsp`ํ ํ์๊ฐ์
ํ๊ทธ ์์ ์คํฌ๋ฆฝํธ๋ฆฟ์ ์ด์ด์ ์กฐ๊ฑด์ ์ถ๊ฐ ํด ์ค๋ค.
<ul class="dropdown-menu">
<li><a class="dropdown-item active" href="login.jsp">๋ก๊ทธ์ธ</a></li>
<% if (userID == null) { %>
<li><a class="dropdown-item" href="join.jsp">ํ์๊ฐ์
</a></li>
<% } %>
</ul>
`<% if (userID == null) { %>` ๋ผ๋ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ๋ฉด `userID`๊ฐ `null`์ธ ๊ฒฝ์ฐ์๋ง "ํ์๊ฐ์
" ๋ฒํผ์ด ์ถ๋ ฅ๋๋๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. userID ๊ฐ์ ๋ฐ๋ผ HTML์ ํน์ ์์๊ฐ ์ถ๋ ฅ๋๋๋ก ์คํฌ๋ฆฝํธ๋ฆฟ์ ์ด ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ก๊ทธ์ธ ์ํ๋ผ๋ฉด "ํ์๊ฐ์
" ๋ฒํผ์ด ๋ณด์ด์ง ์๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ์ธ ํ ์ฌ๋์ ํ๋ฉด์๋ ์ธ์
์ ๋ด๊ธด userName ์ ๋ณด๋ฅผ ํตํด `ํ์๊ฐ์
` ๋ฒํผ ๋์ `userName ๋ ํ์ํฉ๋๋ค!` ์ด๋ฐ ๋ฉ์ธ์ง๋ฅผ ๋์์ค ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ `ํ์๊ฐ์
` ๋ฒํผ์ ๋์ ๊ทธ ์๋ฆฌ๋ฅผ `๋ก๊ทธ์์` ๋ฒํผ์ผ๋ก ๋ฐ๊ฟ์ค๋ค.
<ul class="dropdown-menu">
<% if (userID == null) { %>
<li><a class="dropdown-item active" href="login.jsp">๋ก๊ทธ์ธ</a></li>
<li><a class="dropdown-item" href="join.jsp">ํ์๊ฐ์
</a></li>
<% } else { %>
<li><a class="dropdown-item" href="#">ํ์ํฉ๋๋ค, <%= userName %>๋!</a></li>
<li><a class="dropdown-item" href="logout.jsp">๋ก๊ทธ์์</a></li>
<% } %>
</ul>
์ด๋ ๊ฒ ํด ์ฃผ๋ฉด ๋๋ค~
ํ์ง๋ง ์ง๊ธ์ ์๊ฐ์ด ์์ผ๋ ๊ทธ๋ฅ ๋ณต์ต๋ง ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋นจ๋ฆฌ ๋นจ๋ฆฌ ์งํํ๊ณ ๋์ค์ ์์ ํ ๊ฒ์ด๋ค.
์ฌ๊ธฐ๊น์ง ํ์ผ๋ฉด ์ด์ `index.jsp` ํ์ด์ง๋ฅผ ๋ฐ๊ฟ์ค ๊ฒ์ด๋ค.
์ด๊ธฐ์๋ ์ฌ์ฉ์๊ฐ `index.jsp`๋ก ์ ์ํ์ ๋ `login.jsp`๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋๋ก ์ค์ ํ์ง๋ง, ์ด์ ๋` main.jsp`๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋๋ก ๋ณ๊ฒฝํด๋ณด์.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP ๊ฒ์ํ ์น์ฌ์ดํธ</title>
</head>
<body>
<script>
location.href = 'main.jsp';
</script>
</body>
</html>
์ด์ ์น์ฌ์ดํธ์ ์ฒ์ ์ ์ํ ์ฌ๋๋ค์ ๋ก๊ทธ์ธ ํ์ด์ง๊ฐ ์๋๋ผ ๋ฉ์ธ ํ์ด์ง๋ก ์ ์๋๋ค.
`index.jsp`์คํํ์ ๋ ์๋์ฒ๋ผ ๋จ๋ฉด ์ฑ๊ณต
์ด์ ๋๋์ด `main.jsp` ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋ณด์!
`login.jsp` ์ ์ฒด ์ฝ๋๋ฅผ ๋ณต์ฌํด์ `main.jsp`์ ๋ถ์ฌ๋ฃ๊ธฐ
ํ์ด์ง ์ง์์๋ก `java.io.PrintWriter` import ํด ์ฃผ๊ณ
`<body>` ํ๊ทธ ๋ฐ๋ก ์๋ ์คํฌ๋ฆฝํธ๋ฆฟ์ ์ด์ด์ userID ๋ณ์๋ฅผ ๋ง๋ค์ด ์ค๋ค.
๋ก๊ทธ์ธ ์ ๋ ์ฌ๋์ userID ๊ฐ null ์ด๊ณ , ์ธ์
์ด ์ค์ ๋ ์ฌ๋์ String ๊ฐ์ ๊ฐ์ง๋ค.
String ํ์
์ผ๋ก casting ํ๋ ์ด์ ๋ `session.getAttribute()` ๋ฉ์๋๊ฐ `Object` ํ์
์ ๋ฐํํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ธ์
์ ์ ์ฅ๋ ๊ฐ์ด ์ด๋ค ํ์
์ด๋ ์๊ด์์ด ๋ชจ๋ `Object`๋ก ๋ฐํ๋๋ค.๊ทธ ๊ฐ์ ์ ์ ํ ํ์
์ผ๋ก ๋ณํํด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
ํ์ฌ ์ ์ํ ํ์ด์ง๋ ๋ฉ์ธ ํ์ด์ง์ด๋ฏ๋ก ๋ก๊ทธ์ธ ํ์ด์ง์ ์๋ `active`ํด๋์ค๋ฅผ ์์ ๊ณ , Home์ `<a>`ํ๊ทธ์ `active` ํด๋์ค๋ฅผ ์ค๋ค.
์ด์ ์คํฌ๋ฆฝํธ๋ฆฟ์ ์ด์ด์ ๋ก๊ทธ์ธ ํ์ง ์์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด์ด๋
๋ก๊ทธ์ธํ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค ํ๋ฉด์ ๊ตฌ๋ถํ๋ค.
`์ ์ํ๊ธฐ`๋ `ํ์๊ด๋ฆฌ`๋ก ๋ณ๊ฒฝ
`๋ก๊ทธ์ธ` ๋์ `๋ก๊ทธ์์`๋ฒํผ์ ๋์์ฃผ๊ณ , `ํ์๊ฐ์
` ๋ฒํผ์ ์์ด๋ค.
ํ๋จ๋ถ ๋ก๊ทธ์ธ ์ฐฝ ๋ถ๋ถ์ ์ญ์ ํด์ค๋ค!
์ด์ ํ
์คํธ ํด ๋ณด์
`index.jsp`ํ์ด์ง์์ ์คํ
404 ์๋ฌ ์์ด์ง๊ณ `main.jsp` ํ์ด์ง๊ฐ ํ๋ฉด์ ์ถ๋ ฅ๋จ
์์ง ๋ก๊ทธ์ธ ํ์ง ์์ ์ํ์์ ์ ์ํ๊ธฐ ๋๋ฅด๋ฉด
๋๋กญ๋ค์ด ๋ฉ๋ด์ `๋ก๊ทธ์ธ`๊ณผ `ํ์๊ฐ์ ` ํญ๋ชฉ์ด ๋์จ๋ค.
ํ์๊ฐ์
ํ๊ณ ๋ก๊ทธ์ธํ๋ฉด ๊ธฐ์กด์ `๋ก๊ทธ์ธ`, `ํ์๊ฐ์
` ๋ฒํผ์ ์ฌ๋ผ์ง๊ณ `๋ก๊ทธ์์`๋ฒํผ์ด ๋ณด์ธ๋ค.
์ !
๋ง์ง๋ง์ผ๋ก ํ์๊ฐ์
ํ์ด์ง ๊ฐ์ `active` ๋ฐ๊ฟ์ ๋ฌ์์ฃผ์~!
์ด์ ํ์๊ฐ์
์๋ ํ์ฌ ํ์ด์ง๊ฐ ํ๋์์ผ๋ก ํ์ ๋๋ค.