커넥션풀은 자바와 데이터베이스와 연결 작업을 미리 만들어 놓고 저장해뒀다가 필요할 때 마다 사용하면서자원을 효율적으로 관리하기 위한 방법이다. 이렇게 Pool속에 DB 연결 커넥션을 미리 생성해놓고, 유동적으로 받아 쓰면서 모든 클라이언트 요청을 하나로 관리 할 수 있다.이렇게 Pool속에 미리 저장되어 생성된 커넥션 덕분에 연결 시간을 소비하지 않고, 재사용 하기때문에 속도면에서도 유리하고커넥션 생성양을 제어해주므로 서버에 부담을 덜어준다. 커넥션풀을 설정해보자. Servers - context.xml에서 그림과 같이 안에 코드를 작성한다. MaxActive는 동시에 사용 할 수 있는 최대 커넥션 갯수다.사용자가 많아 설정 범위를 벗어나 남아있는 커넥션이 없을 경우에는 사용자는 대기상태가 되고, 커넥션..
Statement는 아래 예제처럼, DB에서 넘어오는 컬럼, 자바에서는 전송 객체의 멤버 변수명을파라미터값에 직접 넣어주고 실행한다. .. String col1 = request.getParameter("input1"); int col2 = request.getParameter("input2"); Statement stmt = null; .. try { .. String sql = "INSERT INTO table명(컬럼1, 컬럼2)" VALUES('col1', co2); .. } Prepared Statement는 컬럼, 자바에서는 전송 객체 멤버 변수명을 직접 넣지 않고, '?'로 작성하여 '?'의 위치 순번을 지정하여 실행한다. .. String col1 = request.getParameter("..
JDBC(Java DataBase Connectivity)는 자바에서 데이터베이스에 접속 할 수 있게 해주는 API다. 자바와 데이터베이스(오라클,MySQL,MS-SQL.,Cubrid 등등)가 통신할 수 있도록 해주는 역할이라고 생각하면 된다.각 데이터베이스사에 따라 JDBC드라이버를 제공하고 있으며, 이 드라이버를 이클립스 라이브러리 폴더에 넣어 사용하면 된다. 포스팅은 오라클 기준 (ojdbc)으로 진행하겠다.오라클은 server 폴더에 jdbc드라이버가 내장되있고 공홈 혹은 웹상에서 검색하면 쉽게 구할 수 있다. 이제 이 ojdbc를 이클립스상에 라이브러리로 추가 해줘야 한다.방법이 여럿 있지만, 세가지 방법을 소개하겠다. 세번째 방법은.. 매우 귀찮으므로 간편하게 첫번째 방법이나 두번째 방법을 사..
웹 브라우저는 웹 서버에 파라미터를 전송할때 캐릭터셋을 이용해 파라미터 값을 인코딩한다.이때, 톰캣의 디폴트 인코딩 값은 ISO-8859-1이므로, 한글이 깨져버리게 된다. 한글처리를 위한 방법에는 GET전송방식과 POST전송방식 따로 설정을 해줘야한다. 1. POST 전송 데이터를 위한 한글 처리 - Servlet protected void doPOST(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); } - JSP ...
세션은 쿠키와 마찬가지로, 클라이언트와 서버의 연결을 유지시켜주는 객체다. 그림을 보면, 사용자의 기존 연결 정보를 저장한다는점에서 같다고 할 수 있으나,사용자의 PC가 아닌, 서버측에 연결 정보를 저장을 한다는점에 차이가 두고 있다.이전 포스팅에서도 언급했지만, 쿠키를 사용할 경우 문제 될 수 있는 보안에 취약할 수 있기때문에최근에는 세션을 많이 사용하기도 한다.세션 역시도 단점이 존재하는데, 서버에 저장되기 때문에 그만큼 요구되는 서버 공간도 더 커질수 밖에 없고,부하가 발생할 가능성도 배제 할 수 없다.클라이언트가 요청을 하면, 웹 서버는 세션 ID를 부여하고, 같은 요청시 구분 수단이 되는 유일한 키가 된다. 1. 로그인 요청을 위한 입력 폼 jsp 파일(login.jsp)을 작성한다. login..
HTTP 프로토콜은 stateless(비연결)의 특징을 갖고있기 때문에 요청과 응답이 이루어진후,페이지의 변화가 생기면 클라이언트와 서버사이의 연결이 끊기게 된다.이 특징에 대해 대응할 수 있는 방법으로 쿠키와 세션이 있다. 쿠키는 클라이언트와 서버의 연결을 유지시켜주는 객체다. 서버는 사용자가의 로그 정보를 4KB의 작은 임시 파일로 사용자 PC에 심어놓고 요청때마다 존재 유무를 탐색하여 기존 로그 정보가 있으면, 절차를 반복하지 않도록 한다.이름만큼 귀여운 기술이라고 할 수 있다..ㅋㅋㅋ쿠키라는 이름이 만들어진 배경도, 과자 쿠키를 먹을때 부스러기가 남는것과 유사하여 지어졌다고 한다.쿠키에 소멸시점이 포함되어 있는 경우, 하드디스크에 계속 저장되어 있다가 소멸 시기에 삭제가 되는 반면,소멸시점이 포함..
JSP에는 객체를 명시적으로 생성하지 않아도 웹 컨테이너가 자동으로 제공해주는 내장객체들이 존재한다. 1. request , response form action = "mJoin.jsp" method="get">// 입력정보 생략... 회원가입을 예로 들면, 사용자는 가입 양식에 대해 입력을 마치고 가입 요청을 하게된다.이때 사용자의 요청정보를 저장하는 객체가 request 객체이며 응답에 대해 저장하는 객체가 response다. 아래 request객체를 이용하여 사용자가 입력한 값들을 얻어 올 수 있다.포인트는 객체를 생성하지 않고도, request객체의 멤버 메서드에 바로 접근 할 수 있다는점. 아래는 요청에 대해 처리를 마치고, 회원가입에 성공을 했으니 이제 로그인 페이지로 이동하라는 응답을 담는다..
JSP파일을 생성할때 디폴트 템플릿이 아닌, 사용자 지정 템플릿으로 생성하는 방법에 대해 공부해본다. 이클립스에서 JSP파일을 만들면 기본적인 구조는 아래와 같다. beforeFormat.jsp 많은양의 JSP 파일을 생성해야할때 모든 JSP파일에 지시어 선언부에 taglib를 추가한다던지공통적으로 추가될 태그와 값이 있다면 생성할때 마다 매번 기본 코드를 수정해야한다.이클립스는 이런 번거로움을 해결할 수 있도록 이에 대한 설정을 제공하고 있다. 이제부터 JSP파일을 생성할때 기본 캐릭터셋을 'EUC-KR'이 아닌 'UTF-8'로 만들겠다는 가정으로 설정을 진행해보자. 이클립스 상단 메뉴 Windows -> Preferences -> Web-JSP Files-Templates -> New 이제 원하는 템..
클라이언트 요청에 의해 생성된 Servlet의 생성,실행,종료에 대해 공부해본다. 앞선 포스팅에서 클라이언트로부터 동적 요청이 들어오면 웹 서버는 WAS로 요청을 하고, 컨테이너는 자신에게 주어진 역할을 열심히 수행을 시작하고 그 과정중 service()를 호출하기 이전서블릿 클래스를 메모리에서 로딩하여 객체를 생성한다.이때, 서블릿을 요청할때마다(같은 페이지를 재요청할때마다) 계속해서 객체를 두번, 세번, 여러번 생성하는것은효율적이지 못하므로, 메모리에 남아 있는 객체를 그대로 사용하게 된다. 객체가 생성될때 초기화 작업을 해주는 메서드가 init 메서드인데, 위에 대한 설명을 증명해보는 코드를 작성해본다.작성전, init 메서드는 최초 요청시점에 객체가 생성되고 객체를 초기화하기 위해 실행되는 메서드..
사용자의 요청(Request)과 웹서버의 응답(Response)을 담당하는 객체에 대해 공부해본다. 클라이언트로부터 WAS에 대한 요청이 오면(동적 페이지), 컨테이너는HttpServletRequest , HttpServletResponse 객체를 생성한다.그후 요청 URL에 매핑된 서블릿을 찾아 서블릿 스레드를 생성하고 service()를 호출하는데, 이 service()는 전송방식(GET,POST)을 수행하는 메서드인 doGET()과 doPOST()를 호출하도록 설계돼있다. doGET()과 doPOST()에는 요청에 대한 응답처리를 수행하는 메서드로, HttpServlet 클래스에 포함되어 있는 멤버 메서드다.위와 같이 응답처리를 위한 서블릿 클래스를 구현하기 위해서 HttpServlet을 상속받아야..