웹 프로그램에서는 데이터베이스의 환경 설정과 연결 관리등을 XML 파일이나 속성 파일을 사용하여 관리하고 특정 이름을 사용하여 이 정보를 얻어온다.
웹에서 불특정 다수의 사용자가 DB연결을 요청한다고 무작정 허용한다면 DBMS는 부하를 감당할 수 없을 것이다.
따라서 연결 개수를 설정하여 현재 연결된 사용자가 더 이상 Connection 객체를 사용하지 않을 경우 해당 Connection 객체를 반환받아서 다른 사용자에게 할당해야 한다. 이런 작업을 Connection Pooling이라 하고 DBCP(Database Connection Pooling)이라 부른다.
여기서는 톰캣의 DBCP(Database Connection Pool)를 사용하여 DBMS Connection 객체를 생성, 사용하는 방법에 대해 알아본다.
Cookie cookie = new Cookie(키, 값);
cookie.setMaxAge(유지시간_초단위);
response.addCookie(cookie);
2. 클라이언트의 Cookies 폴더에 파일로 저장된다.
3. 저장한 쿠키 데이터를 적용 시킬 페이지에서 쿠키를 불러온다.
Cookie[] cookies = request.getCookies();
for(int i=0; i<cookies.length; i++) {
String key = cookies[i].getName();
if (key.equals(키)) {
String value = cookies[i].getValue();
}
}
예제) ID를 입력 받고 ID저장 체크 박스를 클릭 시 쿠키에 기록되는 것을 확인한다.
LoginProcess.java
package com.study;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginProcessServlet extends HttpServlet {
public void doPost(HttpServletRequest _request, HttpServletResponse _response)
throws IOException, ServletException {
_request.setCharacterEncoding("EUC-KR");
String id = _request.getParameter("id");
String pw = _request.getParameter("pw");
String id_chk = _request.getParameter("id_chk"); // on 또는 null 값이 온다.
System.out.println("ID : " + id);
System.out.println("PW : " + pw);
System.out.println("ID저장 : " + id_chk);
// DB에 ID, PW가 있는지 확인
// ID가 체크되어 있다면
if (id_chk != null && id_chk.trim().equals("on")) {
// 쿠키에 기록하는 작업을 수행
Cookie cookie = new Cookie("id", id);
cookie.setMaxAge(60*50*24*365); // 1년으로 설정
_response.addCookie(cookie);
} else {
Cookie cookie = new Cookie("id", id);
cookie.setMaxAge(0); // 0으로 설정 시 쿠키 설정을 하지 않는다는 의미
_response.addCookie(cookie);
}
_response.sendRedirect("main.htm");
}
}