먼저 servlet_db 스키마에 users_tbl이라는 테이블을 만들고, 데이터들을 저장한다. 이 데이터들이 회원가입이 되어있는 아이디, 패스워드, 닉네임이다. 모두 not null을 설정하였고, id는 PK, nickName은 unique로 설정

 

 

 

HTML 을 간단하게 만든다.

 

 

 

UserVO는 DB의 테이블 정의 객체이다. 각 변수의 setter와 getter를 설정하고, 생성자도 하나 만든다.

 

 

 

 

JAVA와 DB를 연결하는 DBConnection 클래스를 만든다. 

 

 

 

 

DAO는 데이터의 접근 공유 담당이다. DB와 JAVA의 접점으로 데이터를 주고받는 중간 역할을 한다.

 

 

 

사용자의 요청을 받는 서블릿 ControllerServlet을 다음과 같이 만든다. 그리고 실행한다.

 

 

 

localhost:8080/logins.html로 접속 후 아이디와 패스워드를 치면, 회원가입 되어있는 아이디의 정보를 알려준다.

 

 

 

 

Listener

서블릿에서 발생하는 이벤트에 관한 이벤트 리스너

 

 

예시

HttpSessionBindingListener를 이용한다. 이는 세션에 바인딩 혹은 언바인딩된 객체를 알려주는 이벤트 발생 시 처리

 

 

 

 

 

 

 

 

필터

서블릿에 요청하거나 응답할 때 미리 요청이나 응답과 관련해 여러가지 작업을 처리하는 기능

 

 

 

예시

 

 

 

세션의 특징

정보가 서버의 메모리에 저장되고 브라우저당 한개의 세션이 생성된다.

유효시간을 가지는데 기본적으로 30분이다.

로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능 등에 주로 사용된다.

 

 

실행과정

1. 브라우저로 사이트 접속(최초 접속 시)

2. 서버는 접속한 브라우저에 대한 세션 객체를 생성

3. 서버는 생성된 세션 id를 클라이언트 브라우저에 응답으로 보냄

4. 브라우저는 서버로부터 받은 세션 id를 브라우저가 사용하는 메모리의 세션 쿠키에 저장

5. 브라우저가 재접속하면 브라우저는 세션 쿠키에 저장된 세션 id를 서버에 전달 (재 접속 시)

6. 서버는 전송된 세션 id를 이용해 해당 세션에 접근하여 작업 수행

 

 

 

예시

먼저 getSession() 메서드를 호출새허 생성되는 HttpSession 클래스 객체를 생성한다.

각 메소드를 이용하여 아이디, 최초 생성시간, 접근시간을 설정한다.

기본 유효시간은 getMaxInactiveInterval() 메소드를 사용하는데 기본값은 30분이다. 

원하는 시간으로 변경이 가능하다. (10초로 변경해봄)

session.isNew()가 True 일 경우(최초 접속 시) 새션이 새것이라는 메세지를 보여지도록 하였다.

 

 

 

최초 접속시 세션이 새것이라는 메세지가 뜬다. 그 후 새로고침을 하면 세션이 새것이라는 메세지가 뜨지 않는다.

유효시간을 10초로 설정했기 때문에 10초 후 다시 새로고침을 하면 세션이 새것이라는 메세지가 다시 뜬다.

 

 

 

쿠키(Cookie) 

웹 페이지들 사이의 공유 정보를 클라이언트 PC에 저장해놓고, 필요할 때 여러 웹 페이지들이 공유해서 사용할 수 있도록 하는 매개체이다.

 

 

실행 과정

1. 웹 브라우저로 사이트에 접속 (최초 접속 시)

2. 서버가 정보를 저장한 쿠키를 생성

3. 생성된 쿠키를 브라우저로 전송

4. 브라우저는 서버로부터 받은 쿠키 정보를 쿠키 파일에 저장

5. 브라우저가 다시 접속해 서버가 브라우저에게 쿠키 전송을 요청하면 브라우저는 쿠키 정보를 서버에 넘겨줌(재접속시)

6. 서버는 쿠키 정보를 이용해 작업 진행

 

 

 

예시

그냥 HTML을 하나 만든다. h2와 h3에 쿠키 정보를 집어넣을 예정이다.

 

 

 

쿠키를 생성한다. key는 쿠키의 이름이고, key의 값을 "안녕하세요!" 로 설정 후, utf-8로 한글을 지원하게끔 한다.

그리고 setMaxAge로 만료기간을 정한다. 만료시간을 24시간으로 설정했다. 그리고 addCookie로 쿠키 저장

 

 

 

다시 HTML로 돌아가서 자바스크립트로 쿠키 정보를 화면에 보여지게 한다. 불러온 cookie에 split으로 '='을 기준으로 분리 후 각각 h2와 h3에 문자로 보여지게 하였다. 쿠키 이름과 쿠키값은 '='을 기준으로 분류된다.

 

 

위 사진과 같이 쿠키 이름과 쿠키 값이 화면에 보여진다.

 

 

F12에서도 확인 가능하다. 

 

 

 

 

Binding

대량의 데이터를 다른 웹 페이지로 전달학고 싶을 때 데이터를 바인딩하여 사용

setAttribute(String name, Object obj) : 데이터를 각 객체에 바인딩

getAttribute(String name) : 각 객체에 바인딩 된 데이터를 name으로 가져옴

removeAttribute(String name) : 각 객체에 바인딩 된 자원을 name으로 제거함

 

 

 

ServletContext

ServletContext 클래스는 톰캣 컨테이너 실행 시 각 컨텍스트마다 한 개의 ServletContext 객체를 생성

톰캣 컨테이너 종료되면 SevletContext 객체 역시 소멸

ServletContext 객체는 어플리케이션 전체의 공통자원이나 정보를 미리 바인딩해서 서블릿들이 공유하여 사용

 

 

 

ServletConfig

각 Servlet 객체에 대해 생성됨. Servletconfig 인터페이스를 GenericServlet 클래스가 구현

 

 

 

 

방식

GET

1) 주소창에 직접 원하는 데이터를 적거나 링크를 클릭해서 호출, 특정한 정보를 조회하는 용도

2) 브라우저에 따라 길이에 제한 있음

 

POST

1) 입력 화면에서 필요 내용 작성 후 '전송' 과 같은 버튼을 클릭해 호출

2) GET 방식에 비해 많은 양의 데이터 전송 가능

 

 

요청과 응답

요청(Request) : 브라우저에서 서버에 데이터를 요구

응답(Response) : 브라우저에서 요구한 데이터에 대한 답변 데이터

 

 

Servlet

서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스

일반 자바 프로그램과는 달리 독자적으로 실행 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행됨

 

 

 

실습 : 덧셈 계산기 만들기

먼저 HTML을 (제목은 : calc.html) 만들어 두개의 숫자를 입력할 text input을 만들고, 전송하기 버튼을 만든다. get 방식을 이용하기로 했다.

 

 

 

자바 프로그램을 사용. Calculation 클래스를 만들고, HttpServlet의 상속을 받게 한다. doGet 메서드를 오버라이딩 해서 만든다.  req(요청).getParameter로 html에서 name 요소를 이용하여 불러오게 한다. 그리고 그것을 num1, num2 변수에 저장한다. 그리고 저장한 변수들(문자)을 숫자형으로 바꿔 서로 더한 뒤, sum 변수에 집어 넣는다. 그럼 덧셈 완성

 

resp 파라미터(응답)에 setContentType()을 이용해 클라이언트에 전송할 데이터 종류(마임 타입)를 지정한다. writer 객체를 만든 뒤, println을 이용하여 정보 전달 시(전송 버튼 누를 시) 화면에 나타날 html을 작성한다. 덧셈이니 (? + ? = ?) 이런 식으로 화면에 나타나게끔 작성하였다.

 

 

 

Web.xml로 가서 매핑을 한다. url-pattern을 /calc로 지정하였고, 이것을 맨 처음 캡쳐한 html로 가서 form의 action 요소에 붙여넣기 한다. 그럼 이제 완성. RUN을 누르고 실행한다.

 

 

 

calc.html로 만들었으니 인터넷창에 localhost:8080 주소가 뜨면 http://localhost:8080/calc.html 경로로 이동

 

 

 

숫자를 넣고 전송(요청)하면 사진과 같이 출력(응답) 된다. 응답된 html의 주소창을 눌러보면

http://localhost:8080/calc?num1=3&num2=12 이렇게 뜬다. get 방식이니, 주소창에 입력한 정보가 조회된다.

 

 

 

 

+ Recent posts