๐ ์ธ์
์ ์๋ฒ์์ ๊ด๋ฆฌ๋๋ ํด๋ผ์ด์ธํธ์ ์ํ ์ ๋ณด.
๐ ์ํ์ ์ง : ์ธ์
์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์งํ ์ ์๋ค. ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ๊ฑฐ๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง๋ฅผ ์ด๋ํ๋๋ผ๋ ์ ์ง
๐ ์ผ์์ : ํด๋ผ์ด์ธํธ๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ๊ฑฐ๋ ์ธ์
๋ง๋ฃ์๊ฐ์ด ์ง๋๋ฉด ์ธ์
์ ๋ณด๋ ์๋ฉธ
๐ ์ธ์
์ ๊ฐ์ฒด๋ฅผ ์ ์ฅ๊ฐ๋ฅ.
๐ ์ธ์
์์ ์ค์ํ์ ์ ๋ก๊ทธ์ธํ ์ ์ ์ ์ธ์
ID๋ฅผ ์ธ์
DB์ ์ ์ฅ์ํ๊ณ , ๊ทธ๋ผ ์์ฒญ์ด ๋ค์ด์ฌ๋๋ง๋ค ์๋ฒ๋ ์ฟ ํค๋ฅผ ๋ฐ์์ ์ธ์
ID๋ฅผ ๋ณด๊ณ ์ธ์
DB๊ฐ ์ผ์นํ๋์ง ํ์ธ์ํด์ ์ฌ์ฉ์๋ฅผ ํ์ธํ๋๊ฒ์ด๋ค.
๐ ๊ธฐ์กด์ session์ด ์์ด์ ํด๋น์ฝ๋๋ฅผ ์คํํ๋ฉด, ๋ธ๋ผ์ฐ์ ์ ์ธ์
์ด ๋ง๋ค์ด์ง๋ค.
๐ ๊ธฐ์กด์ session์ด ์์ผ๋ฉด, ๊ธฐ์กด์ ์ธ์
์ ๋ถ๋ฌ์์ ์ ์งํ๋ค.
๐ ๊ธฐ์กด์ session์ด ์์ด๋ ์ธ์
์ ๋ง๋ค์ง ์๋๋ค.
๐ ์ฃผ๋ก ๋ก๊ทธ์ธ์ ํ์ง์๊ณ ํ์ํ์ด์ง์ url๋ก ํ๊ณ ๋ค์ด์ค๋๊ฒ์ ๋ง๊ธฐ์ํจ.
๐ setAttribute : ๋ก๊ทธ์ธํ ํ ์ธ์
์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
๐ getAttribute : ๋ก๊ทธ์ธ ์ดํ ๋ง์ดํ์ด์ง ์ฌ์ฉํ๋ ค๋ฉด ๋ก๊ทธ์ธ ํ๋์ง ํ์ธํ๋ ค๊ณ ๊ฐ์ ธ์ค๋๊ฒ.
๐ removeAttribute : ๋ก๊ทธ์์์ ์ธ์
์์ ์์ ๊ธฐ ์ํจ.
create table tbl_member (
mno int auto_increment primary key,
uid varchar(100) not null,
upw varchar(100) not null,
email varchar(200) not null,
delflag boolean default false
);
insert into tbl_member (uid,upw,email) values ('u1','1111','u1@aaa.com');
insert into tbl_member (uid,upw,email) values ('u2','1111','u2@aaa.com');
๐ member ํ
์ด๋ธ์ ์์ฑํ๊ณ ์ปฌ๋ผ์ผ๋ก๋ pk์ธ mno, id, pw, email, delflag(soft delete) ๋ฅผ ๋ง๋ ๋ค.
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class MemberVO {
private Integer mno;
private String uid;
private String upw;
private String email;
private boolean delFlag;
}
๐ table๊ณผ ๋๊ฐ์ ์ปฌ๋ผ์ผ๋ก ๋ฉค๋ฒ๋ณ์๋ค์ ๊ตฌ์ฑํ์ฌ ํด๋์ค๋ฅผ ์์ฑํ๋ค.
public Optional<MemberVO> get(String word, String pw) throws Exception {//id ํน์ email์ด๋๊น word๋ผ๊ณ
String query = """
select * from tbl_member
where
(uid = ? or email = ? )
and
upw = ?
and
delflag = false
""";
@Cleanup Connection con = ConnectionUtil.INSTANCE.getDs().getConnection();
@Cleanup PreparedStatement ps = con.prepareStatement(query);
ps.setString(1, word);
ps.setString(2, word);
ps.setString(3, pw);
@Cleanup ResultSet rs = ps.executeQuery();
//select๋๊น rs์ฌ์ฉํด์ฃผ๊ณ .
if (!rs.next()) {
return Optional.empty(); //์๋ ์๋ null๋ก ๋ฐํํ์ง๋ง ์ด์ ๋ Optional์ ์ฌ์ฉ.
}
//ํ์ค ์ด๋ํ๊ณ
MemberVO member = MemberVO.builder()
.mno(rs.getInt("mno")) //sql๋ฌธ์์ *from์ ์ฌ์ฉํด์ ๋ฌธ์์ด๋ก ์ ๋๊ฒ
.uid(rs.getString("uid"))
.upw(rs.getString("upw"))
.email(rs.getString("email"))
.delFlag(rs.getBoolean("delflag"))
.build();
return Optional.of(member);
}
๐ ์ฐ์ ์์ด๋๊ฐ ์กด์ฌํ๋์ง ํ์ธ์ ํด์ผํ๋ฏ๋ก Optional์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑ
๐ ๋ก๊ทธ์ธ์ uid, email ๋๊ฐ์ค์ ํ๊ฐ๋ฅผ ์ฌ์ฉ๊ฐ๋ฅํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ํ๋์ word๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ก์๋ค.
๐ ์ด๋๊น์ง ํ๊ฒ ์ฒ๋ผ select๊ฐ์ ๊ฒฝ์ฐ์๋ ํ ๋ญํ
์ด๋ก ๋ณด๋ด๊ธฐ ์ํด ResultSet์ฌ์ฉํ๊ณ , MemberVO ๊ฐ์ฒด ๋ง๋ค์ด์ ๋ณด๋ด์ค๋ค.
public Integer insert(MemberVO member) throws Exception {
String sql = "insert into tbl_member (uid,upw,email) values (? , ? , ? )";
@Cleanup Connection con = ConnectionUtil.INSTANCE.getDs().getConnection();
@Cleanup PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, member.getUid());
ps.setString(2, member.getUpw());
ps.setString(3, member.getEmail());
Integer count = ps.executeUpdate();
if(count!=1){
throw new Exception("Abnormal insertion");
}
ps.close(); //ps๋ฅผ ๋ค์ ์ฌ์ฉํด์ผํ๋ฏ๋ก ์ฒซ๋ฒ์งธ ps๋ฅผ ๋ซ๊ณ
ps = con.prepareStatement("select LAST_INSERT_ID()");
@Cleanup ResultSet rs = ps.executeQuery();
rs.next();
Integer mno = rs.getInt(1);
con.commit(); //ํธ๋์ญ์
์ปค๋ฐ
con.setAutoCommit(true); //ํธ๋์ญ์
์คํ ์ปค๋ฐ
return mno;
}
๐ ํ์๊ฐ์
ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ์ํด ํ์ ์์์ธ uid, upw, email์ insert value๋ก ์ฌ์ฉ.
๐ dml ์ด๋ฏ๋ก executeUpdate ์์ฒด๊ฐ int๊ฐ์ผ๋ก ๋ฐํ๋๋ฏ๋ก int count๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ๊ณ , count ๊ฐ์ 1์ด์ด์ผ ํ๋ค.
๐ ํ์๊ฐ์
์ดํ์๋ redirect๋ฅผ ํตํด์ login ํ์ด์ง๋ก ์ด๋๋๋๋ก ๊ตฌ์ฑํ์์ผ๋, mno๋ฅผ ๊ฐ์ ธ์์ผํ ์ด์ ์ ํธ๋์ญ์
์ ์ฌ์ฉํ ํ์๋ ์์ ๊ฒ ๊ฐ๋ค.
๐ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด xxx๋ ๋ก๊ทธ์ธ์ด ๋์์ต๋๋ค ๋ผ๋ modal์ฐฝ์ ํ์ํ ๋ฏ ํ๋ค.
@WebServlet(value = "/login")
@Log4j2
public class LoginController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF/login.jsp").forward(req, resp);//ํ๋ฉด๋ง ๋ณด์ฌ์ฃผ๋๊ฑฐ๋๊น
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String uid = req.getParameter("uid");
String upw = req.getParameter("upw");
log.info("--------------");
log.info(uid);
log.info(upw);
//Jsession_id๊ฐ ์ธ์
์ ์ฅ์์ ์์ผ๋ฉด ๊ทธ๋๋ก ๋ฐํ, ์์ผ๋ฉด ์๋ก ์์ฑํด์ค๋ค.
HttpSession session = req.getSession();
//db์์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค.
//๊ฒฐ๊ณผ๊ฐ Optional๋ก ๋์ฌํ
๋๊น ์ฌ์ฉ์๊ฐ ์์๋๋ฅผ ์๊ฐํด์ค์ผํจ.
try {
Optional<MemberVO> result = MemberDAO.INSTANCE.get(uid,upw);
// if else๋ฅผ ์ด์ฉํด์ db์์ ๊ฐ์ ธ์จ ๊ฒฐ๊ณผ๊ฐ์ด ์์๋๋ ๋ก๊ทธ์ธ์ ์๋ฌ์ฐฝ,
// ๊ฐ์ด ์์๋๋ mypage๋ก ๊ฐ๋๋ก ํ ์ ์๋๋ฐ ๋๋ค์์ผ๋ก ๊ฐ์.
// ๋๋ค์ ํด์ : ์ฒซ๋ฒ์งธ๋ memberVO์ ๊ฐ์ ๊ฐ(์ ์์ ์ธ๊ฐ)์ด ์์๋, ๋๋ฒ์งธ๋ ๊ฐ์ด ์์๋.
result.ifPresentOrElse( memberVO -> {
session.setAttribute("uid", memberVO);
try{
resp.sendRedirect("/mypage");
}catch (Exception e){
e.printStackTrace();
}
}, () -> {
try {
resp.sendRedirect("/login"); //์ด๋๋ก ๊ทธ๋ฅ ์ฌ์ฉํ๋ฉด try-catch์ฌ์ฉ์ ์ํจ.
} catch (IOException e) {
e.printStackTrace();
}
} );
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
๐ ๋ก๊ทธ์ธ์ GET์ ํ๋ฉด๋ง ๋ณด์ฌ์ฃผ๋ ์ฉ๋๋ก ์ฌ์ฉ์ํ๊ณ
๐ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ์๋ ๊ธฐ๋ฅ์ธ POST๋ฅผ ์ด์ฉํ๋๋ฐ, ์ธ์
์ ์์ฑํด์ฃผ๊ณ GET๋ฉ์๋์์ ๋ง๋ uid,upw๋ฅผ ์ด์ฉ ํ ๊ฒ์ด๋ผ Optional result๋ก ๋ฐ์์ค๋ค.
๐ ์ดํ์ db์์ ๊ฐ์ ธ์จ ๊ฒฐ๊ณผ๊ฐ์ด ์์๋์ ์์๋๋ฅผ ๊ตฌ๋ถํ์ฌ Redirect๋ฅผ ํด์ค์ผํ๋ฏ๋ก if-else๋ฌธ์ ์ฌ์ฉํ ์ง ๋๋ค์์ ์ฌ์ฉํ ์ง ์ ํด์ผํ๋๋ฐ ๋๋ค์์ ์ฌ์ฉํจ.
๐ result.ifPresentOrElse( memberVO -> {}, () -> {}) ์์ ์ฒซ๋ฒ์งธ ์ค๊ดํธ์๋ memberVO์ ์ ์์ ์ธ ๊ฐ์ด ์์๋์ Redirect๊ฒฝ์ฐ๋ฅผ ๋ฃ๊ณ , ๋๋ฒ์งธ ์ค๊ดํธ์๋ ๊ฐ์ด ์์๋์ Redirect๊ฒฝ์ฐ๋ฅผ ์ ์ฉํ๋ค.
@WebServlet(value="/logout")
@Log4j2
public class LogoutController extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//์ธ์
์ด ๊ธฐ์กด์ ์์์ผ๋ฉด ์ด ํ์ด์ง๋ก ๋ค์ด์์๋ ์๋์ผ๋ก ๋ง๋ค์ง ์๊ธฐ
HttpSession session = req.getSession(false);
if(session == null) {
resp.sendRedirect("/");
return;
}
//removeAttrivute๋ฅผ ์ฌ์ฉํ์ง ์๊ณ invalidate๋ง ์ฌ์ฉํด๋ ๋๋๋ฐ
//invalidate๋ ๋ฐ๋ก ์ง์์ง๋๊ฒ ์๋๊ณ , ์๊ฐ์ด ์ง๋์ผ ์์ด์ง๋ค.
//๋ฐ๋ก ์์ ๋ฒ๋ฆฌ๊ธฐ ์ํด์ removeAttribute๋ฅผ ์ฌ์ฉ
session.removeAttribute("uid");
session.invalidate(); //๋ฌดํจํ๋ฅผ ์ฌ์ฉํ์
resp.sendRedirect("/");
}
}
๐ ๋ก๊ทธ์์ ์ปจํธ๋กค๋ฌ์์๋ getSession(false)๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ ์ด ์๋๋ผ๋ ์ธ์ ์ ๋ง๋ค์ง ๋ชปํ๋๋ก ํ๊ณ , session๊ฐ์ด ์๋ค๋ฉด Redirect๋ฅผ ํตํด ์ฒซํ์ด์ง๋ก ๋์๊ฐ๊ฒ ๋ง๋ ๋ค.
๐ session.invalidate๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฌดํจํ๋ก remove๋์ ์ฌ์ฉํ ์ ์์ง๋ง ์๊ฐ์ด ์ด๋์ ๋ ์ง๋๊ณ ์์ด์ง๋ค. ํ์ง๋ง ๋ก๊ทธ์์์์ ๋ฐ๋ก ์ธ์ ์ด ์์ด์ง๋๋ก ๋ง๋ค๊ธฐ ์ํด์ session.removeAttribute("uid")๋ฅผ ์ฌ์ฉํ๋ค.
@WebServlet(value = "/mypage")
@Log4j2
public class MyPageController extends HttpServlet { //redirect๋ก ๋ถ๋ฌ์จ ์ ๋ get๋ฐฉ์์ผ๋ก ๋ฐ๊ธฐ ๋๋ฌธ์
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("get");
//๋ก๊ทธ์ธํ์ ์ด ์์ด url๋ก ๋ค์ด์ค๋๋ผ๋ ์ธ์
์ ๋ค์ ๋ง๋ค์ง์๋๋ค.
//mypage์ url๋ก ๋ฐ๋ก ๋ค์ด์ค๋๊ฒ์ ๋ง๊ธฐ์ํด
HttpSession session = req.getSession(false);
//๋ก๊ทธ์ธํ๋ ์ธ์
์ด ์๋ค๋ฉด ๋ก๊ทธ์ธ์ฐฝ์ผ๋ก ๋ณด๋ด๋ฒ๋ ค์ผํจ.
//๋ก๊ทธ์ธํ๋์ง ํ์ธํ๋ ค๊ณ getAttribute๋ก ๊ฐ์ ธ์๋๋ฐ ์๋ค๋ฉด ๋ก๊ทธ์ธ์ฐฝ์ผ๋ก ๋ณด๋ด๋ฒ๋ ค์ผํจ.
if(session == null || session.getAttribute("uid") == null) {
resp.sendRedirect("/login");
return;
}
req.getRequestDispatcher("/WEB-INF/mypage.jsp").forward(req, resp);
}
}
๐ ๋ง์ดํ์ด์ง๋ฅผ url์ ํตํด ๋ฐ๋ก ๋ค์ด์ค๋๊ฒ์ ๋ง๊ธฐ์ํด session(false)๋ฅผ ์ฌ์ฉํ๊ณ , ์ธ์
์ด ์๊ฑฐ๋, ์ธ์
์ ๊ธฐ๋ก์ ํ์ธํ๊ธฐ ์ํด getAttribute("uid")๋ฅผ ์ฌ์ฉํ๋ค.
๋ง์ฝ ๋๋ค ํด๋น์ฌํญ์ด ์๋ค๋ฉด Redirect๋ฅผ ํตํด login ํ์ด์ง๋ก ๋ณด๋ธ๋ค.
@WebServlet(value="/mregister")
@Log4j2
public class RegisterController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("doGet");
req.getRequestDispatcher("/WEB-INF/mregister.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String uid = req.getParameter("uid");
String upw = req.getParameter("upw");
String email = req.getParameter("email");
MemberVO member = MemberVO.builder()
.uid(uid)
.upw(upw)
.email(email)
.build();
try {
Integer tno = MemberDAO.INSTANCE.insert(member);
resp.sendRedirect("/login");
} catch (Exception e) {
resp.sendRedirect("/login?error=input");
throw new RuntimeException(e);
}
}
}
๐ ํ์๊ฐ์
ํ์ด์ง์์๋ ๋ค๋ฅธ insert์ ๊ฐ์ด GET์์๋ ํ๋ฉด๋ง ๋ณด์ฌ์ฃผ๊ณ , ๋ฒํผ์ ๋๋ ์๋ POST๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๐ table์ not null์ธ uid, upw, email์ ๊ตฌ์ฑํ๊ณ , MemberVO ๊ฐ์ฒด๋ฅผ ํ๋ฒ์ ๊ตฌ์ฑํ์ฌ ์ ๋ฌํ๋ค.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="/login" method="post">
<div>
<label>ID or Email</label>
<input name="uid" type="text">
</div>
<div>
<label>PassWord</label>
<input name="upw" type="password">
</div>
<button>LOGIN</button>
</form>
<div>
<form action="/mregister">
<button type="submit">Join</button>
</form>
</div>
</body>
</html>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>MyPage</h1>
<h2>${uid}</h2>
<form action = "/logout" method="post">
<button>LOGOUT</button>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<style>
h1{
border-bottom: 3px solid grey;
padding : 5px;
}
</style>
<h1>Member Register Page</h1>
<form action="/mregister" method="post">
<div>
<label>UserID</label>
<input type="text" name="uid">
</div>
<div>
<label>PassWord</label>
<input type="password" name="upw">
</div>
<div>
<label>UserEmail</label>
<input type="text" name="email">
</div>
<button>Register</button>
</form>
</body>
</html>
๐ ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ ์กฐ๊ฐ
๐ ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋๋ฏ๋ก ๋์ผํ ์น ์ฌ์ดํธ๋ฅผ ๋ค์ ๋ฐฉ๋ฌธํ ๋ ์ด์ ์ ์ ์ฅ๋ ์ฟ ํค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐ ์ฟ ํค์๋ ๋ง๋ฃ(expire) ๋ ์ง ๋ฐ ์๊ฐ์ ์ ํ ์ ์์ด ๊ทธ ์์ ๊น์ง ์ง์๋ ์ ์๋ค.
๐ ์๋ฅผ๋ค์ด ์ด๋ ์น์ฌ์ดํธ์์ ํ๊ตญ์ด ์ค์ ์ ํด๋๊ธฐ ์ํด ์๋ฒ์ ์์ฒญ์ ํ๋ฉด ์ธ์ด ๋ณ๊ฒฝ ์ฟ ํค ๋ํ ๋ธ๋ผ์ฐ์ ์ ๋จ๊ธฐ ๋๋ฌธ์ ๋ค์์ ํด๋น ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ๊ฒ ๋๋ฉด ์ค์ ํด๋์๋ ์ธ์ด๋ก ์๋ ๋ฒ์ญ์ด ๋๋ค.
๐ ์ฟ ํค๋ ๋ฌธ์์ด๋ง ์ ์ฅ๊ฐ๋ฅ(ํ๊ธ๋ฌธ์ ) ๋ฐ ๋๋ฉ์ธ๋น ์ฟ ํค์ ์ ํ์ด ์์.
@WebServlet("/goods/make")
@Log4j2
public class MakeController extends HttpServlet { //get๋ฐฉ์์ผ๋ก test ํด๋ณด๊ธฐ
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("doGet");
Cookie goodsCookie = new Cookie("goods", "123456789"); //ํค ์ ๊ฐ ํํ์ด๋ฏ๋ก ์์ฑ์๋ฅผ ์ฌ์ฉ
//goodsCookie.setPath("/");
goodsCookie.setMaxAge(60*60); //์ด ๋จ์ ๊ณ์ฐ์ด๋ฏ๋ก = 1์๊ฐ
resp.addCookie(goodsCookie); //๊ฐ๋ฐ์๊ฐ ์ง์ ๋ง๋ ์ฟ ํค๋๊น ์ด๋ ๊ฒ ์ฒ๋ฆฌ ํด์ค์ผํจ.
}
}
๐ goods๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฐ์ด 123456789์ธ ์ฟ ํค๋ฅผ ์์ฑ. ์ฟ ํค๋ ํค์ ๊ฐ์ ํํ๋ก ์์ฑํจ.
๐ setMaxAge(60 * 60)์ ํตํด ์ฟ ํค์ ์ ํจ ์๊ฐ์ 1์๊ฐ์ผ๋ก ์ค์ .
๐ resp.addCookie(goodsCookie)๋ฅผ ํธ์ถํ์ฌ ์์ฑ๋ ์ฟ ํค๋ฅผ HTTP ์๋ต์ ์ถ๊ฐ.
@WebServlet(value = "/goods/view1")
@Log4j2
public class ViewController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();//๋ธ๋ผ์ฐ์ ์์ ๋ณด๋ด์ค ์ฟ ํค๋ค์ด ์์
if(cookies == null) {
log.info("no cookie"); //์ฒ์๋ฐฉ๋ฌธํด์ ์ฟ ํค๊ฐ ์๋ค๋ฉด
return;
}
for (Cookie cookie : cookies) {
log.info("cookie: " + cookie.getName());
log.info("cookie Value: " + cookie.getValue());
log.info("---------------------------------");
} //๋
ธํธ๋ถ์ผ๋ก ํ ๋๋ 2๊ฐ๊ฐ ๋์ค์ง๋ง, ํด๋ํฐ์ผ๋ก ์ ์ํ๋ฉด 1๊ฐ๋ง ๋์จ๋ค.
}
}
๐ getCookies๋ฅผ ํตํด cookies๋ฅผ ๋ฐฐ์ด์ ํตํด ๊ฐ์ ธ์จ๋ค.
๐ (makeController๋ฅผ ๋ค๋ฆฌ์ง ์๊ณ ๋ฐ๋ก view๋ฅผ ๋ฐฉ๋ฌธํ๋ค๋ฉด.) ๋ง์ฝ ์ฒ์ ๋ฐฉ๋ฌธํ์ผ๋ฉด no cookie๋ก log๊ฐ ๋ฌ๋ค.
๐ ํ์ง๋ง make๋ฅผ ํ ์ ํจ๊ธฐ๊ฐ ํ์๊ฐ๋์์ ๋ค์ ๋ฐฉ๋ฌธํ๋๋ผ๋ ์ด์ ์ ์์ฑํ ์ฟ ํค ๋๋ฌธ์ ์ฟ ํค์ value๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.