Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 도커
- 나의 취미
- 디즈니씨
- flex3
- iBatis
- php
- express for node.js
- 베트남어
- 주식이야기
- ror실행
- nodejs express
- 책이야기
- docker
- 스킨 스쿠버
- Eclipse
- Lift
- 메일왕창보내는법
- Node.js
- node.js web framework
- 나의 프로젝트
- 명사 추출기
- 명사 분석기
- rss
- ejb
- 명사 뽑아내기
- C/C++
- php thumbnail
- scala
- Cross
- ajax
Archives
- Today
- Total
nkdk의 세상
5장 쿠키와 세션에 대하여.. 로그인자동까지.. 본문
쿠키와 세션에 대하여 배웠습니다. 쿠키는 클라이언트 측에
세션은 서버 측에 저장되어 지는 것이라 생각하면 이해가 빠르겠네요.
쿠키와 세션
4kb 이하의 정보만 담는다.
쿠키 = 클라이언트
세션 = 서버에서 만든다.
정도입니다. 쿠키는 document and setting 에 있습니다.
postdata를 예를 들겠습니다.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PostData extends HttpServlet {
public PostData() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 한글을 사용하기 위해서 2줄을 썼음
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String addr = request.getParameter("addr");
String age = request.getParameter("age");
out.println("<html><body>*** 자료 출력 ***");
out.println("이름 : " + name);
out.println("주소 : " + addr);
out.println("나이 : " + age);
// checkbox
out.println("<p>선택하신 소프트웨어는 ");
try {
// 체크박스는 다음과 같이 받는다.
String sel[] = request.getParameterValues("sw");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("<p>선택하신 OS는 ");
try {
// 라디오박스는 다음과 같이 받는다.
String sel[] = request.getParameterValues("os");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("<p>선택하신 교통수단은 ");
try {
// 교통수단은?
String sel[] = request.getParameterValues("tr");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("</body></html>");
}
}
// 이번엔 쿠키 로그인에 대해서 배워보겠습니다.
import java.io.*;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.*;
import javax.servlet.http.*;
public class CookieLogin extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id=null;
String pwd=null;
try {
// 클라이언트의 모든 쿠키 읽기
Cookie[] cook = request.getCookies();
for(int i = 0; i< cook.length; i++) {
String name = cook[i].getName();
if(name.equals("id"))
id = URLDecoder.decode(cook[i].getValue(), "euc-kr");
if(name.equals("passwd"))
pwd = URLDecoder.decode(cook[i].getValue(), "euc-kr");
}
} catch (Exception e) {}
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
if (isValid(id, pwd)) {
out.println(id + "님 로그인 상태입니다.</body></html>");
return;
}
out.println("<html><body><h2>로그인</h2>");
out.println("<form method=post>");
out.println("i d : <input type=text name=id><br>");
out.println("password : <input type=text name=pwd><br>");
out.println("<input type=checkbox name=co>쿠키사용<p>");
out.println("<input type=submit></form></body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String useco = request.getParameter("co");
if(useco != null) { // 쿠키 사용 선택
try {
id = URLEncoder.encode(id, "euc-kr");
Cookie idcookie = new Cookie("id", id);
idcookie.setMaxAge(60*60*24*30); // 30일간 유효한 쿠키
pwd = URLEncoder.encode(pwd, "euc-kr");
Cookie pwdcookie = new Cookie("passwd", pwd);
idcookie.setMaxAge(60*60*24*30); // 30일간 유효한 쿠키
response.addCookie(idcookie);
response.addCookie(pwdcookie);
} catch (Exception e) {
}
}
}
private boolean isValid(String id, String pwd) {
if(id == null || pwd == null) return false;
return true;
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><body>
<h2>*** post 연습 ***</h2>
<form action="/sertest/PostData" method="post">
이름 : <input type=text name=name><br>
주소 : <input type=text name=addr><p>
<!-- 체크박스 -->
현재 사용중인 소프트 웨어를 고르시오.<br>
<input type=checkbox name=sw value=자바>자바<br>
<input type=checkbox name=sw value=C>C<br>
<input type=checkbox name=sw value=델파이>델파이<br>
<!-- 라디오버튼 -->
현재 사용 중인 OS는?<br>
<input type=radio name=os value=윈도우 checked>윈도우<br>
<input type=radio name=os value=리눅스>리눅스<br>
<input type=radio name=os value=솔라리스>솔라리스<br>
<!-- select 버튼 -->
현재 이용 중인 교통 수단은?<br>
<select name=tr multiple="multiple">
<option>버스</option>
<option>전철</option>
<option>도보</option>
<option>자가용</option>
</select><p>
<input type="hidden" name=age value=30>
<input type=submit><input type=reset>
</form>
</body></html>
세션은 서버 측에 저장되어 지는 것이라 생각하면 이해가 빠르겠네요.
쿠키와 세션
4kb 이하의 정보만 담는다.
쿠키 = 클라이언트
세션 = 서버에서 만든다.
정도입니다. 쿠키는 document and setting 에 있습니다.
postdata를 예를 들겠습니다.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class PostData extends HttpServlet {
public PostData() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 한글을 사용하기 위해서 2줄을 썼음
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
String addr = request.getParameter("addr");
String age = request.getParameter("age");
out.println("<html><body>*** 자료 출력 ***");
out.println("이름 : " + name);
out.println("주소 : " + addr);
out.println("나이 : " + age);
// checkbox
out.println("<p>선택하신 소프트웨어는 ");
try {
// 체크박스는 다음과 같이 받는다.
String sel[] = request.getParameterValues("sw");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("<p>선택하신 OS는 ");
try {
// 라디오박스는 다음과 같이 받는다.
String sel[] = request.getParameterValues("os");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("<p>선택하신 교통수단은 ");
try {
// 교통수단은?
String sel[] = request.getParameterValues("tr");
for(int i = 0; i < sel.length;i++) {
out.print(sel[i] + " ");
}
} catch (Exception e) {
out.println("<b>하나 이상의 항목을 선택하여 주세요</b>");
return;
}
out.println("</body></html>");
}
}
// 이번엔 쿠키 로그인에 대해서 배워보겠습니다.
import java.io.*;
import java.net.URLDecoder;
import java.net.URLEncoder;
import javax.servlet.*;
import javax.servlet.http.*;
public class CookieLogin extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id=null;
String pwd=null;
try {
// 클라이언트의 모든 쿠키 읽기
Cookie[] cook = request.getCookies();
for(int i = 0; i< cook.length; i++) {
String name = cook[i].getName();
if(name.equals("id"))
id = URLDecoder.decode(cook[i].getValue(), "euc-kr");
if(name.equals("passwd"))
pwd = URLDecoder.decode(cook[i].getValue(), "euc-kr");
}
} catch (Exception e) {}
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
if (isValid(id, pwd)) {
out.println(id + "님 로그인 상태입니다.</body></html>");
return;
}
out.println("<html><body><h2>로그인</h2>");
out.println("<form method=post>");
out.println("i d : <input type=text name=id><br>");
out.println("password : <input type=text name=pwd><br>");
out.println("<input type=checkbox name=co>쿠키사용<p>");
out.println("<input type=submit></form></body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=euc-kr");
request.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String useco = request.getParameter("co");
if(useco != null) { // 쿠키 사용 선택
try {
id = URLEncoder.encode(id, "euc-kr");
Cookie idcookie = new Cookie("id", id);
idcookie.setMaxAge(60*60*24*30); // 30일간 유효한 쿠키
pwd = URLEncoder.encode(pwd, "euc-kr");
Cookie pwdcookie = new Cookie("passwd", pwd);
idcookie.setMaxAge(60*60*24*30); // 30일간 유효한 쿠키
response.addCookie(idcookie);
response.addCookie(pwdcookie);
} catch (Exception e) {
}
}
}
private boolean isValid(String id, String pwd) {
if(id == null || pwd == null) return false;
return true;
}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><body>
<h2>*** post 연습 ***</h2>
<form action="/sertest/PostData" method="post">
이름 : <input type=text name=name><br>
주소 : <input type=text name=addr><p>
<!-- 체크박스 -->
현재 사용중인 소프트 웨어를 고르시오.<br>
<input type=checkbox name=sw value=자바>자바<br>
<input type=checkbox name=sw value=C>C<br>
<input type=checkbox name=sw value=델파이>델파이<br>
<!-- 라디오버튼 -->
현재 사용 중인 OS는?<br>
<input type=radio name=os value=윈도우 checked>윈도우<br>
<input type=radio name=os value=리눅스>리눅스<br>
<input type=radio name=os value=솔라리스>솔라리스<br>
<!-- select 버튼 -->
현재 이용 중인 교통 수단은?<br>
<select name=tr multiple="multiple">
<option>버스</option>
<option>전철</option>
<option>도보</option>
<option>자가용</option>
</select><p>
<input type="hidden" name=age value=30>
<input type=submit><input type=reset>
</form>
</body></html>