์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[58] 230322 JSP Ch. 8 ์๋ฐ๋น๊ณผ ์ก์ ํ๊ทธ, Ch. 9 ํด๋ผ์ด์ธํธ์์ ๋ํ 1 : ์ฟ ํค, Ch. 10 ํด๋ผ์ด์ธํธ์์ ๋ํ 2 : ์ธ์ [K-๋์งํธ ํธ๋ ์ด๋ 58์ผ] ๋ณธ๋ฌธ
[58] 230322 JSP Ch. 8 ์๋ฐ๋น๊ณผ ์ก์ ํ๊ทธ, Ch. 9 ํด๋ผ์ด์ธํธ์์ ๋ํ 1 : ์ฟ ํค, Ch. 10 ํด๋ผ์ด์ธํธ์์ ๋ํ 2 : ์ธ์ [K-๋์งํธ ํธ๋ ์ด๋ 58์ผ]
yjyuwisely 2023. 3. 22. 09:53230322 Wed 58th class
Ch. 8 ์๋ฐ๋น๊ณผ ์ก์
ํ๊ทธ
Ch. 9 ํด๋ผ์ด์ธํธ์์ ๋ํ 1 : ์ฟ ํค
Ch. 10 ํด๋ผ์ด์ธํธ์์ ๋ํ 2 : ์ธ์
์ง๋: p. 191 ~ (๊ต์ฌ: ์ต๋ฒ๊ท ์ JSP 2.3 ์น ํ๋ก๊ทธ๋๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค๊ธ๊น์ง, ์ ์: ์ต๋ฒ๊ท )
์ฑ
์์ ์ฝ๋: https://github.com/madvirus/jsp23
์ ์ ๋ธ๋ก๊ทธ: https://javacan.tistory.com/
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
์๋ฐ ๋ฐฐ์ ๋ ๊ฒ ๋๋์๋ณด๊ธฐ
ํด๋์ค๋ฅผ ์ ์ธํ ๋ ๊ฐ๋ฅํ๋ค๋ฉด ํ๋๋ฅผ private์ผ๋ก ์ ์ธํด์ ์ธ๋ถ๋ก๋ถํฐ ๋ณดํธํ๊ณ , ํ๋์ ๋ํ Setter์ Getter ๋ฉ์๋๋ฅผ ์์ฑํด์ ํ๋๊ฐ์ ์์ ํ๊ฒ ๋ณ๊ฒฝ/์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
set: ์ ์ฅํ๋ค.
get: ์ ์ฅ๋ ๊ฑฐ ๊ฐ์ ธ์จ๋ค.
SET์ ๋ณ์ซ๊ฐ์ ํ ๋นํ๋ ๋ชฉ์ ์ ํจ์์ด๊ธฐ ๋๋ฌธ์ ์ธ์๋ฅผ ๋ฐ์์ผ ํ๊ณ
GET์ ๋ณ์๊ฐ์ ๋ฐํํ๋ ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์ return์ด ํ์ํ๋ค.
Setter: ์ธ๋ถ์์ ๊ฐ์ ๋ฐ์ ํ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฉ์๋์ด๋ค.
Getter: ํ๋์ ๊ฐ์ ์ธ๋ถ๋ก ๋ฆฌํดํด์ฃผ๋ ๋ฉ์๋์ด๋ค. ๋ฉ์๋๋ก ํ๋๊ฐ์ ๊ฐ๊ณตํ ํ ์ธ๋ถ๋ก ์ ๋ฌํ๋ค.
Class URLEncoder
public class URLEncoder
extends Object
https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html
Ch. 8 ์๋ฐ๋น๊ณผ ์ก์ ํ๊ทธ
์ฑ ์ ๋ชฉ์ฐจ
01 ์๋ฐ๋น(JavaBeans)
1.1 ์๋ฐ๋น ํ๋กํผํฐ
02 ์์ ์์ ์ฌ์ฉํ ์๋ฐ๋น ํด๋์ค
03 ํ๊ทธ๋ฅผ ์ด์ฉํ ์๋ฐ ๊ฐ์ฒด ์ฌ์ฉ
3.1 <jsp:useBean> ์ก์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑํ๊ธฐ
3.2 <jsp:setProperty> ์ก์ ํ๊ทธ์ <jsp:getProperty> ์ก์ ํ๊ทธ
3.3 ์๋ฐ๋น ํ๋กํผํฐ ํ์ ์ ๋ฐ๋ฅธ ๊ฐ ๋งคํ
JSP ๊ธฐ๋ฐ ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ์ ๋ณด๋ฅผ ํํํ ๋ ์ฌ์ฉํ๋ ๊ฒ ์ค ํ๋๊ฐ ์๋ฐ๋น(JavaBeans)์ด๋ค.
ex) ํ์ ์ ๋ณด, ๊ฒ์ํ ๊ธ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ ๋, ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ ์๋ฐ๋น ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
์๋ฐ๋น์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ณ , JSP ํ์ด์ง์์ ์๋ฐ๋น์ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ์ก์
ํ๊ทธ์ ๋ํด ์ดํด๋ณธ๋ค.
์ฐธ๊ณ : https://choitaetae.tistory.com/96
8.1 ์๋ฐ๋น(JavaBeans) p. 191
์๋ฐ๋น์ ์์ฑ(๋ฐ์ดํฐ), ๋ณ๊ฒฝ ์ด๋ฒคํธ, ๊ฐ์ฒด ์ง๋ ฌํ๋ฅผ ์ํ ํ์ค์ด๋ค. ์ด ์ค์์ JSP์์๋ ์์ฑ์ ํํํ๊ธฐ ์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
๊ฐ์ฒด ์ง๋ ฌํ(Serialization): ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ์ฌ ์ ์ก ๊ฐ๋ฅํ ํํ๋ก ๋ง๋๋ ๊ฒ
์๋ฐ๋น ๊ท์ฝ์ ๋ฐ๋ฅด๋ ํด๋์ค๋ฅผ ์๋ฐ๋น์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
JSP ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ์๋ฐ๋น ํด๋์ค๋ ์๋ ์ฝ๋์ฒ๋ผ
[1] ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋
[2] ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋
[3] ๊ฐ์ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ก ๊ตฌ์ฑ๋๋ค.
์๋ฐ๋น ๊ท์ฝ์ ๋ฐ๋ฅด๋ ํด๋์ค์ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ๋ค.
public class BeanClassName implements java.io.Serializable{
/*[1] ๊ฐ์ ์ ์ฅํ๋ ํ๋ */
private String value;
/* BeanClassName์ ๊ธฐ๋ณธ ์์ฑ์ */
public BeanClassName(){
}
/*[2] ํ๋์ ๊ฐ์ ์ฝ์ด์ค๋ ๊ฐ */
public String getValue(){
return value;
/*[3] ํ๋์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฐ */
public void setValue(String value){
this.value = value;
}
}
1) ์๋ฐ๋น ํ๋กํผํฐ
ํ๋กํผํฐ๋ ์๋ฐ๋น์ ์ ์ฅ๋๋ ๊ฐ์ ๋ํ๋ธ๋ค.
8.2 ์์ ์์ ์ฌ์ฉํ ์๋ฐ๋น ํด๋์ค p. 193
์ดํด๋ฆฝ์ค์์ ์๋ฐ ํ์ผ์ Java Resources - src์ ์ ์ฅํ๋ค.
์ฑ ์ ์์ ์ฒ๋ผ chap08.member ํจํค์ง ๋ด์ Memberinfo ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
Source - Generate Getters and Setters์ ์ด์ฉํด์ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
Public์ผ๋ก ์ค์ ํ๋ค.
์๋์์ฑ์ผ๋ก ์๋์ public ์ฝ๋๊ฐ ๋ง๋ค์ด์ก๋ค.
์์ 8-1) MemberInfo ์๋ฐ๋น ํด๋์ค์ ์์ค ์ฝ๋ MemberInfo.java
package chap08.member; //ํจํค์ง
import java.util.Date;
public class MemberInfo { //ํด๋์ค
//private: ์ง์ ์ ์ ๊ทผ ํ์ฉX
private String id;
private String password;
private String name;
private Date registerDate; //Date: ํด๋์ค์ ํ์ ๋น๋ ค์ ํด๋์ค ํ์
์ผ๋ก ์ ์ฅ
private String email;
public String getId() {
return id;
}
public void setId(String id) { //makeObject.jsp์ "madvirus"
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) { //makeObject.jsp์ "์ต๋ฒ๊ท "
this.name = name;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
this.registerDate = registerDate;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
8.3 ํ๊ทธ๋ฅผ ์ด์ฉํ ์๋ฐ ๊ฐ์ฒด ์ฌ์ฉ
1) <jsp:useBean> ์ก์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ์์ฑํ๊ธฐ
<jsp:useBean> ์ก์
ํ๊ทธ๋ JSP ํ์ด์ง์์ ์ฌ์ฉํ ์๋ฐ๋น ๊ฐ์ฒด๋ฅผ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค.
๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ์๋์ ๊ฐ๋ค.
<jsp:useBean id="[๋น์ด๋ฆ]" class="[์๋ฐ๋นํด๋์ค์ด๋ฆ]" scope="[๋ฒ์]" />
์์ 8-2) makeObject.jsp
<jsp:useBean> ์ก์
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ MemberInfo ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ <jsp:forward>๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ์ด์ง๋ก ํ๋ฆ์ ์ด๋์ํจ๋ค.
MemberInfo member = new MemberInfo(); (์ฌ๊ธฐ์ member๋ jsp:useBean id="member"์ member)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="member" scope="request" class="chap08.member.MemberInfo" />
<!-- id ๊ฐ์ ์ฃผ๊ณ ์ถ์ ๋ฐ๋ก ์ฃผ๋ฉด ๋๋ค. ์ฌ๊ธฐ์ "member"๋ก ํ๋ค. class๋ ์์ java ํ์ผ์ 01~11ํ์ด๋ค. (public ์๊น์ง)-->
<% //์๋ฐ์ MemberInfo์ setId, setName์ ํธ์ถํจ
//๋ฉ์ธ ๋ฉ์๋
member.setId("madvirus"); //member๋ ์ ์ฝ๋์ jsp:useBean id="member"์ member์ด๋ค.
member.setName("์ต๋ฒ๊ท ");
%>
<jsp:forward page="/useObject.jsp" /> <!-- jsp:forward: ํ์ด์ง ์ด๋, ์ฆ useObject.jsp๋ก ์ด๋ํ๋ค. -->
๊ฒฐ๊ณผ)
makeObject.jsp๋ฅผ ์คํํ๋ฉด MembershipInfo์ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ request ๊ธฐ๋ณธ ๊ฐ์ฒด์ "member" ์์ฑ์ ์ ์ฅํ ํ useOjbect.jsp๋ก ํฌ์๋ฉ(๋ค๋ฅธ ํ์ด์ง๋ก ์ ํํ๋ ๋ฐฉ์)ํ๋ค.
์์ 8-3) <jsp:useBean> ์ก์
ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ makeObject.jsp๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค. useObject.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="member" scope="request"
class="chap08.member.MemberInfo" />
<html>
<head><title>์ธ์ฌ๋ง</title></head>
<body>
<!-- ์๋ฐ ๋ฉ์๋ ํธ์ถ -->
<%= member.getName() %> (<%= member.getId() %>) ํ์๋
์๋
ํ์ธ์.
</body>
</html>
๊ฒฐ๊ณผ)
2) <jsp:setProperty> ์ก์ ํ๊ทธ์ <jsp:getProperty> ์ก์ ํ๊ทธ p. 199
์์ 8-4) ํ์๊ฐ์ ์์์ ๋ณด์ฌ์ฃผ๋ JSP ํ์ด์ง membershipForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>ํ์๊ฐ์
์
๋ ฅ ํผ</title></head>
<body>
<form action="processJoining.jsp" method="post">
<table border="1">
<tr>
<td>์์ด๋</td>
<td colspan="3"><input type="text" name="id" size="10"></td>
</tr>
<tr>
<td>์ด๋ฆ</td>
<td><input type="text" name="name" size="10"></td>
<td>์ด๋ฉ์ผ</td>
<td><input type="text" name="email" size="10"></td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="submit" value="ํ์๊ฐ์
">
</td>
</tr>
</table>
</form>
</body>
</html>
๊ฒฐ๊ณผ)
ํ์๊ฐ์
๋ฒํผ์ ๋๋ฅด๋ฉด ์
๋ ฅํ ๋ฐ์ดํฐ๋ฅผ POST ๋ฐฉ์์ผ๋ก processJoining.jsp์ ์ ๋ฌํ๋ค.
์์ 8-5) ์ ๋ฌ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ MemberInfo ์๋ฐ๋น ํด๋์ค์ ๊ฐ์ฒด์ ์ ์ฅํด์ ํ๋ฉด์ ์ถ๋ ฅํด์ค๋ค. processJoining.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="memberInfo" class="chap08.member.MemberInfo" />
<jsp:setProperty name="memberInfo" property="*" /> <!-- *: ๋ชจ๋ ์ฌ์ฉํ๋ค. -->
<!-- ์๋๋ ๋๋ ์ฝ๋ -->
<!--<jsp:setProperty name="memberInfo" property="id" />
<jsp:setProperty name="memberInfo" property="password" />
<jsp:setProperty name="memberInfo" property="name" />
<jsp:setProperty name="memberInfo" property="email" /> -->
<jsp:setProperty name="memberInfo" property="password"
value="<%= memberInfo.getId() %>" />
<html>
<head><title>๊ฐ์
</title></head>
<body>
<table border="1">
<tr>
<td>์์ด๋</td>
<td><jsp:getProperty name="memberInfo" property="id" /></td>
<td>์ํธ</td>
<td><jsp:getProperty name="memberInfo" property="password" /></td>
</tr>
<tr>
<tr>
<td>์ด๋ฆ</td>
<td><jsp:getProperty name="memberInfo" property="name" /></td>
<td>์ด๋ฉ์ผ</td>
<td><jsp:getProperty name="memberInfo" property="email" /></td>
</tr>
</table>
</body>
</html>
๊ฒฐ๊ณผ)
์๋ ์ฝ๋ ๋๋ฌธ์ ์์ด๋์ ์ํธ๋ ๊ฐ๊ฒ ๋์จ๋ค.
<jsp:setProperty name="memberInfo" property="password"
value="<%= memberInfo.getId() %>" />
์์ 8-1) MemberInfo.java, 8-4) membershipForm.jsp, 8-5) processJoining.jsp์ id๊ฐ ๊ฐ๋ค.
3) ์๋ฐ๋น ํ๋กํผํฐ ํ์ ์ ๋ฐ๋ฅธ ๊ฐ ๋งคํ
Ch. 9 ํด๋ผ์ด์ธํธ์์ ๋ํ 1 : ์ฟ ํค p. 205
์ฑ ์ ๋ชฉ์ฐจ
01 ์ฟ ํค ์ฌ์ฉํ๊ธฐ
1.1 ์ฟ ํค์ ๊ตฌ์ฑ
1.2 ์ฟ ํค ์์ฑํ๊ธฐ
1.3 ์ฟ ํค ๊ฐ ์ฝ์ด์ค๊ธฐ
1.4 ์ฟ ํค ๊ฐ ๋ณ๊ฒฝ ๋ฐ ์ฟ ํค ์ญ์ ํ๊ธฐ
1.5 ์ฟ ํค์ ๋๋ฉ์ธ
1.6 ์ฟ ํค์ ๊ฒฝ๋ก
1.7 ์ฟ ํค์ ์ ํจ์๊ฐ
1.8 ์ฟ ํค์ ํค๋
02 ์ฟ ํค ์ฒ๋ฆฌ๋ฅผ ์ํ ์ ํธ๋ฆฌํฐ ํด๋์ค
2.1 Cookies ํด๋์ค๋ฅผ ์ด์ฉํ ์ฟ ํค ์์ฑ
2.2 Cookies ํด๋์ค๋ฅผ ์ด์ฉํ ์ฟ ํค ์ฝ๊ธฐ
03 ์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์ํ ์ ์ง
3.1 ๋ก๊ทธ์ธ ์ฒ๋ฆฌ
3.2 ๋ก๊ทธ์ธ ์ฌ๋ถ ํ๋จ
3.3 ๋ก๊ทธ์์ ์ฒ๋ฆฌ
9.1 ์ฟ ํค ์ฌ์ฉํ๊ธฐ p. 205
์ฟ ํค(cookie)๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๊ดํ๋ ๋ฐ์ดํฐ์ด๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ์น ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์ฟ ํค๋ฅผ ํจ๊ป ์ ์กํ๋ฉฐ, ์น ์๋ฒ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์กํ ์ฟ ํค๋ฅผ ์ฌ์ฉํด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
์ฟ ํค๋ ์น ์๋ฒ์ ์น ๋ธ๋ผ์ฐ์ ์์ชฝ์์ ์์ฑํ ์ ์๋๋ฐ, JSP์์ ์์ฑํ๋ ์ฟ ํค๋ ์น ์๋ฒ์์ ์์ฑํ๋ ์ฟ ํค์ด๋ค.
1) ์ฟ ํค์ ๊ตฌ์ฑ
2) ์ฟ ํค ์์ฑํ๊ธฐ
3) ์ฟ ํค ๊ฐ ์ฝ์ด์ค๊ธฐ
4) ์ฟ ํค ๊ฐ ๋ณ๊ฒฝ ๋ฐ ์ฟ ํค ์ญ์ ํ๊ธฐ
5) ์ฟ ํค์ ๋๋ฉ์ธ
6) ์ฟ ํค์ ๊ฒฝ๋ก
7) ์ฟ ํค์ ์ ํจ์๊ฐ
8) ์ฟ ํค์ ํค๋
9.2 ์ฟ ํค ์ฒ๋ฆฌ๋ฅผ ์ํ ์ ํธ๋ฆฌํฐ ํด๋์ค
1) Cookies ํด๋์ค๋ฅผ ์ด์ฉํ ์ฟ ํค ์์ฑ p. 224
Cookies ํด๋์ค๋ ์ธ ๊ฐ์ง createCookie() ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
Cookie cookie1 = Cookies.createCookie("name", "์ต๋ฒ๊ท ")
Cookie cookie2 = Cookies.createCookie("name2", "์ต๋ฒ๊ท ", "/path1", -1)
Cookie cookie3 = Cookies.createCookie("id", "jsp", ".madvirus.net", "/", 60);
2) Cookies ํด๋์ค๋ฅผ ์ด์ฉํ ์ฟ ํค ์ฝ๊ธฐ p. 221
package util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Cookie;
import java.util.Map;
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.io.IOException;
public class Cookies {
private Map<String, Cookie> cookieMap =
new java.util.HashMap<String, Cookie>();
public Cookies(HttpServletRequest request) {
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0 ; i < cookies.length ; i++) {
cookieMap.put(cookies[i].getName(), cookies[i]);
}
}
}
public Cookie getCookie(String name) {
return cookieMap.get(name);
}
public String getValue(String name) throws IOException {
Cookie cookie = cookieMap.get(name);
if (cookie == null) {
return null;
}
return URLDecoder.decode(cookie.getValue(), "utf-8");
}
public boolean exists(String name) {
return cookieMap.get(name) != null;
}
public static Cookie createCookie(String name, String value)
throws IOException {
return new Cookie(name, URLEncoder.encode(value, "utf-8"));
}
public static Cookie createCookie(String name, String value, String path,
int maxAge) throws IOException {
Cookie cookie = new Cookie(name, URLEncoder.encode(value, "utf-8"));
cookie.setPath(path);
cookie.setMaxAge(maxAge);
return cookie;
}
public static Cookie createCookie(String name, String value, String domain,
String path, int maxAge) throws IOException {
Cookie cookie = new Cookie(name, URLEncoder.encode(value, "utf-8"));
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setMaxAge(maxAge);
return cookie;
}
}
9.3 ์ฟ ํค๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์ํ ์ ์ง p. 226
๋ก๊ทธ์ธ ์ํ๋ฅผ ํ์ธํ ๋ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์ฟ ํค๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
์ฟ ํค๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ก๊ทธ์ธ ์ํ๋ฅผ ์ ์งํ ์ ์๋ค.
1. ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด ํน์ ์ด๋ฆ์ ๊ฐ๋ ์ฟ ํค๋ฅผ ์์ฑํ๋ค.
2. ํด๋น ์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด ๋ก๊ทธ์ธํ ์ํ๋ผ๊ณ ํ๋จํ๋ค.
3. ๋ก๊ทธ์์ํ๋ฉด ํด๋น ์ฟ ํค๋ฅผ ์ญ์ ํ๋ค.
ex) ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด "AUTH"๋ผ๋ ์ฟ ํค๋ฅผ ์์ฑํ๊ณ , "AUTH" ์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด ๋ก๊ทธ์ธํ ์ํ๋ผ๊ณ ์ธ์ํ๋ค.
1) ๋ก๊ทธ์ธ ์ฒ๋ฆฌ p. 227
์์ 9-11) loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head><title>๋ก๊ทธ์ธํผ</title></head>
<body>
<form action="login.jsp" method="post">
์์ด๋ <input type="text" name="id" size="10">
์ํธ <input type="password" name="password" size="10">
<input type="submit" value="๋ก๊ทธ์ธ">
</form>
</body>
</html>
๊ฒฐ๊ณผ)
์์ 9-12) login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLEncoder" %>
<%@ page import = "util.Cookies" %>
<%
String id = request.getParameter("id");
String password = request.getParameter("password");
//id์ password๊ฐ ๊ฐ์ผ๋ฉด ๋ก๊ทธ์ธ ํด๋ผ(์ฟ ํค์ id๊ฐ์ ๋ฃ์ด๋ผ), ID์ ์ํธ๊ฐ ๊ฐ์ผ๋ฉด ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ๊ฒ์ผ๋ก ํ๋จ.
if (id.equals(password)) {
//Cookie ํด๋์ค ์์ฑ
//Cookie cookie = new Cookie("id", URLEncoder.encode(id,"utf-8"));
//response.addCookie(cookie);
//Cookie ํด๋์ค ์์ฑ(util.Cookies๋ฅผ import)
response.addCookie(
Cookies.createCookie("AUTH", id, "/", -1)
);
%>
<html>
<head><title>๋ก๊ทธ์ธ์ฑ๊ณต</title></head>
<body>
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ต๋๋ค.
</body>
</html>
<%
} else { // ๋ก๊ทธ์ธ ์คํจ์
%>
<script>
alert("๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.");
history.go(-1);
</script>
<%
}
%>
๊ฒฐ๊ณผ)
2) ๋ก๊ทธ์ธ ์ฌ๋ถ ํ๋จ
์์ 9-13) loginCheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLEncoder" %>
<%@ page import = "util.Cookies" %>
<%
Cookies cookies = new Cookies(request);
%>
<html>
<head><title>๋ก๊ทธ์ธ์ฌ๋ถ ๊ฒ์ฌ</title></head>
<body>
<%
if (cookies.exists("AUTH")) {
%>
์์ด๋ "<%= cookies.getValue("AUTH") %>"๋ก ๋ก๊ทธ์ธ ํ ์ํ
<%
} else {
%>
๋ก๊ทธ์ธํ์ง ์์ ์ํ
<%
}
%>
</body>
</html>
๊ฒฐ๊ณผ)
3) ๋ก๊ทธ์์ ์ฒ๋ฆฌ
์์ 9-14) logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.net.URLEncoder" %>
<%@ page import = "util.Cookies" %>
<%
response.addCookie(
Cookies.createCookie("AUTH", "", "/", 0)
);
%>
<html>
<head><title>๋ก๊ทธ์์</title></head>
<body>
๋ก๊ทธ์์ํ์์ต๋๋ค.
</body>
</html>
๊ฒฐ๊ณผ)
CHAPTER 10 ํด๋ผ์ด์ธํธ์์ ๋ํ 2 : ์ธ์
์ฑ ์ ๋ชฉ์ฐจ
01 ์ธ์ ์ฌ์ฉํ๊ธฐ : session ๊ธฐ๋ณธ ๊ฐ์ฒด
1.1 ์ธ์ ์์ฑํ๊ธฐ
1.2 session ๊ธฐ๋ณธ ๊ฐ์ฒด
1.3 ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์์ฑ ์ฌ์ฉ
1.4 ์ธ์ ์ข ๋ฃ
1.5 ์ธ์ ์ ํจ ๊ธฐ๊ฐ
1.6 request.getSession()์ ์ด์ฉํ ์ธ์ ์์ฑ
02 ์ธ์ ์ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์ํ ์ ์ง
2.1 ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด session ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์ ์ฅํ๊ธฐ
2.2 ์ธ์ฆ ์ฌ๋ถ ํ๋จ
2.3 ๋ก๊ทธ์์ ์ฒ๋ฆฌ
03 ์ฐ๊ด๋ ์ ๋ณด ์ ์ฅ์ ์ํ ํด๋์ค ์์ฑ
04 ์๋ธ๋ฆฟ ์ปจํ ์คํธ์ ์ธ์
10.1 ์ธ์ ์ฌ์ฉํ๊ธฐ : session ๊ธฐ๋ณธ ๊ฐ์ฒด
์๋ฒ ์ธ์
์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์ ์ฅํ ์ ์๋ค.
์ฟ ํค์์ ์ฐจ์ด์ : ์ธ์
์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋๋ผ ์๋ฒ์ ๊ฐ์ ์ ์ฅํ๋ค.
์๋ฒ๋ ์ธ์
์ ์ฌ์ฉํด์ ํด๋ผ์ด์ธํธ ์ํ๋ฅผ ์ ์งํ ์ ์๊ธฐ ๋๋ฌธ์, ๋ก๊ทธ์ธํ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ธ์
์ ์ฌ์ฉํ๋ค.
1) ์ธ์
์์ฑํ๊ธฐ
2) session ๊ธฐ๋ณธ ๊ฐ์ฒด
3) ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์์ฑ ์ฌ์ฉ
4) ์ธ์
์ข
๋ฃ
5) ์ธ์
์ ํจ ๊ธฐ๊ฐ
6) request.getSession()์ ์ด์ฉํ ์ธ์
์์ฑ
์ฐธ๊ณ : https://jddng.tistory.com/268
10.2 ์ธ์
์ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์ํ ์ ์ง
1) ์ธ์ฆ๋ ์ฌ์ฉ์ ์ ๋ณด session ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์ ์ฅํ๊ธฐ p. 242
์์ 10-4) [1] sessionLogin.jsp
session ๊ธฐ๋ณธ ๊ฐ์ฒด์ ํน์ ์์ฑ์ ๋ก๊ทธ์ธ ์ํ ์ ๋ณด๋ก ์ฌ์ฉํ๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String password = request.getParameter("password");
// id์ ๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ๋ฉด
if (id.equals(password)){
//id๊ฐ์ ์ธ์
์ ์ ์ฅ(MEMBERID)
session.setAttribute("MEMERID", id);
%>
<html>
<head><title>๋ก๊ทธ์ธ ์ฑ๊ณต</title></head>
<body>
๋ก๊ทธ์ธ์ ์ฑ๊ณตํ์ต๋๋ค.
</body>
</html>
<%
} else {//๋ก๊ทธ์ธ ์คํจ์
%>
<script>
alert("๋ก๊ทธ์ธ์ ์คํจํ์์ต๋๋ค.");
history.go(-1);
</script>
<%
}
%>
์์ 10-5) [2] sessionLoginForm.jsp
[1] sessionLogin.jsp์ ์์ด๋์ ์ํธ๋ฅผ ์ ์กํ๋ ํผ์ ๋ณด์ฌ์ฃผ๋ JSP ์ฝ๋
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><title>๋ก๊ทธ์ธํผ</title></head>
<body>
<form action="sessionLogin.jsp" method="post">
์์ด๋ <input type="text" name="id" size="10">
์ํธ <input type="password" name="password" size="10">
<input type="submit" value="๋ก๊ทธ์ธ">
</form>
</body>
</html>
๊ฒฐ๊ณผ)
2) ์ธ์ฆ ์ฌ๋ถ ํ๋จ
[1] sessionLogin.jsp์ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ๋ฉด MEMBERID ์์ฑ์ ๋ก๊ทธ์ธ ์ํ ์ ๋ณด๋ฅผ ๋ณด๊ดํ๋ค.
์์ 10-6) [3] sessionLoginCheck.jsp
session ๊ธฐ๋ณธ ๊ฐ์ฒด์ "MEMBERID" ์์ฑ์ ์ฌ์ฉํด์ ๋ก๊ทธ์ธ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String memberId = (String)session.getAttribute("MEMBERID");//๊ฐ์ ํ๋ณํ
boolean login = memberId == null ? false : true;
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>๋ก๊ทธ์ธ์ฌ๋ถ ๊ฒ์ฌ</title>
</head>
<body>
<%
if (login){
%>
์์ด๋ "<%= memberId %>"๋ก ๋ก๊ทธ์ธ ํ ์ํ
<%
} else {
%>
๋ก๊ทธ์ธํ์ง ์์ ์ํ
<%
}
%>
</body>
</html>
๊ฒฐ๊ณผ)
3) ๋ก๊ทธ์์ ์ฒ๋ฆฌ
์์ 10-7) [4] sessionLogout.jsp
session.invalidate() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์
์ ์ข
๋ฃํ๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>๋ก๊ทธ์์</title>
</head>
<body>
๋ก๊ทธ์์ํ์์ต๋๋ค.
</body>
</html>
๊ฒฐ๊ณผ)