3w_JavaServletTechnology.ppt

Download Report

Transcript 3w_JavaServletTechnology.ppt

2008년 9월 18일 실습

실험제목
◦ Java Servlet Technology

목표
◦ 자바 서블릿에 대한 이해와 실습

목차
◦ Java Servlet에 대한 소개
◦ Java Servlet 실습
 Java SE Development Kit 설치
 Apache Tomcat 설치
 Eclipse 설치
◦ 연습문제


동적인 컨텐츠를 웹을 통해 전달하기 위해 만들어진 기술
서블릿이란?
요청-응답 프로그래밍 모델을 통해 서버의 기능을 확장하기 위한 자바 클래
스


Java Servlet Technology는 모든 웹 애플리케이션 기술의 기초가 되며, 직
접 JavaServlet 클래스를 작성하지는 않더라도, 잘 알아두어야 함
톰캣과 같은 웹 컨테이너는 요청을 받아 서블릿에 전달하고, 보안, 동시성,
life-cycle 관리와 같은 일을 함

개발 순서
◦
◦
◦
◦
◦
웹 컴포넌트 코드 개발
웹 애플리케이션 deployment descriptor 작성
작성한 클래스들을 컴파일
웹 컨테이너에 배치(deploy)
웹 브라우저를 통해 해당 URL에 접근

작성 순서
◦ 사용자의 입력을 받는 HTML 페이지 작성
◦ 사용자의 입력을 처리하여 결과를 반환하는 Servlet Class 작성

사용자의 입력을 받는 HTML 페이지 작성(1/2)
프로젝트 이름에서
오른쪽 클릭
HTML 선택
생성될 html 파일의 이름
인 calc.html 입력

사용자의 입력을 받는 HTML 페이지 작성(2/2)
jspages :Eclipse에
만든 project 이름
웹 브라우저에서 확인한 결과
CalcServlet : 작성할
servlet class 이름
form : 사용자의 입력을 해당 Servlet으로 연결하기 위해 사용
select : 선택 목록을 나타내이 위해 사용하며, 선택 목록
의 각 항목은 option으로 추가
input : 입력창을 생성하기 위해 사용 name attribute에
사용되는 종류로 checkbox, radio, button, submit,
image, reset, text, password, file, hidden 등이 있음
attribute : tag의 속성을 지정하기 위해 사용되며, 현재 input 태그의
경우, type, value, name attribute가 지정되어 있음

사용자의 입력을 처리하여 결과를 반환하는 Sevlet Class 작성 (1/3)
Package 만들기
Java class 들을 구조화하여 사용하기 위한 매커니즘
프로젝트 이름(jspages)
에서 오른쪽 클릭
프로젝트 이름에서
오른쪽 클릭
ac.uos.servlet 입력
생성된 Package
표시됨
Servlet class 만들기
Java class 들을 구조화하여 사용하기 위한 매커니즘
위에서 만든 packege
ac.uos.servlet 입력
프로젝트 이름에서
오른쪽 클릭
생성된 java 파일
표시됨
Servlet
선택
Servlet class 이름인
CalcServlet 입력

사용자의 입력을 처리하여 결과를 반환하는 Sevlet Class 작성 (2/3)
‘doPost’ method에서 처리하도록 함
변수선언
• long 타입 num1, num2는 계산의 피연산자를 할당하고, result는 연산의 결과를 할당한다.
• String 타입 op는 요청의 연산자를 할당한다.
응답의 속성을 euc-kr 문자셋을 사용하는
html 페이지로 지정
response 객체로부터 출력 스트림을 반환받음

사용자의 입력을 처리하여 결과를 반환하는 Sevlet Class 작성 (3/3)
‘Long.parseLong’ method는 String 객체를 인자로 받아
서 long 값을 반환, 본 예제에서는 request 객체에서
‘num1’라는 이름을 가진 parameter를 가져와서 long 값
으로 바꿈
아래의 static 으로 선언된 ‘calculate’ method를 호출하여 계
산된 결과를 result에 할당
out 객체의 ‘println’ method를 사용하여 결과
HTML 페이지 반환
String 객체인 op에 할당되어 있는 문자열을 +, -, *,
/ 와 각각 비교하여 해당 연산자 실행

실행 결과
init() -> service() -> destroy()

init()
◦ 최초의 클라이언트의 요청이 있으면, 웹컨테이너가 해당 서블릿을 메모
리에 로드하면서 호출
◦ 초기화 작업 수행

service()
◦ 클라이언트의 요청이 있을 때마다 호출되며, 요청의 타입에 따라 doGet()
또는 doPost()를 호출

destroy()
◦ 서블릿은 더 이상 서비스 되지 않거나 메모리가 부족할 경우, 웹 컨테이
너에 의해 메모리에서 제거되는데, 이 때, destroy() 메소드가 호출됨

index.htm

StringUtil.java

ChatLogin.java (Servlet) (1/2)

ChatLogin.java (Servlet) (2/2)

ChatInput.jata (Servlet) (1/2)

ChatInput.jata (Servlet) (2/2)

ChatServlet.java (Servlet) (1/3)

ChatServlet.java (Servlet) (2/3)

ChatServlet.java (Servlet) (3/3)
1.
앞의 간단한 계산기 만들기를 활용하여 부동소수점을 계산할 수 있도록
Servlet 내부의 피연산자를 저장하는 변수를 float 또는 double 타입으로
변환하여 부동소수점 계산기 구현
◦ String 객체를 float 또는 double 타입으로 바꾸기 위해서는 Float.parseFloat 또
는 Double.parseDouble method를 사용
2.
로또 번호 발생기 만들기
로또 번호를 생성하기 위한 버튼이 있는 HTML 파일과 로또 번호를 발생시켜 출
력해주는 servlet 클래스 만들기
◦ Math.random() 을 이용하면, 0에서 1사이의 double 값을 반환받을 수 있고, 이
값을 이용해 1~46까지의 수를 중복되지 않게 무작위로 6개 발생시켜 반환해야 함
◦

Servlet
◦

Servlet Container(Web Container)
◦

servlet과 jsp를 서비스하기 위한 웹 컴포넌트
Servlet의 작성
◦

클라이언트의 요청에 동적으로 응답하기 위해 설계된
Java Class
javax.servlet.Servlet interface를 구현하며, 보통
doGet(), doPost() method에 servlet이 해야할 일을 작
성
Servlet의 생명주기
◦
int()  service()  destroy()
1.
앞의 계산기 프로그램을 응용하여, 정수에 대한 제곱 계산을 제공하는 계산
기 구현
◦
2.
ex) 2^10 = 1024 의 경우, 2와 10을 피연산자로 입력 받아서 1024를 반환
앞의 계산기 프로그램을 응용하여, 부동소수점에 대한 2의 로그 계산을 제
공하는 계산기 구현
◦
ex) log21000 = 3 의 경우, 1000을 피연산자로 입력 받아서 3을 반환
3.
혈액형을 입력받아, 성격을 알려주는 Servlet 프로그램 작성
4.
연습 문제 2의 로또 발생기 응용
◦
java.util.ArrayList 클래스를 이용하여, 로또 발생기 Servlet 내부에 발생시켰던
로또 번호 조합을 저장하여, 페이지를 새로 고침 할 경우, 같은 로또 번호 조합은
나오지 않도록 수정