관리 메뉴

nkdk의 세상

5장 쿠키와 세션에 대하여.. 로그인자동까지.. 본문

My Programing/JSP and Servlet

5장 쿠키와 세션에 대하여.. 로그인자동까지..

nkdk 2008. 3. 9. 00:58
쿠키와 세션에 대하여 배웠습니다. 쿠키는 클라이언트 측에
세션은 서버 측에 저장되어 지는 것이라 생각하면 이해가 빠르겠네요.

쿠키와 세션
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>