40
1 iSeminar가 곧 시작될 예정이오니 잠시만 기다려 주시기 바랍니다. 프레젠테이션 청취를 위하여 다음의 전화 번호로 연결하시기 바랍니다. 1544-3355 (전국) 인터넷 세미나 참석을 환영합니다! Introduction to J2EE (1) - J2EE 개념 및 Servlet/JSP/JDBC iSeminar중 청취상의 문제가 있으신 분은 “Chat” 기능을 이용해 도움을 받으시기 바랍니다.

Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC · 3 J2EE iSeminar Series Agenda yDay 1 – J2EE 개념 – Servlet 및JSP (JavaServer Pages) – 자바와데이타베이스액세스

  • Upload
    others

  • View
    24

  • Download
    0

Embed Size (px)

Citation preview

1

iSeminar가곧시작될예정이오니잠시만기다려주시기바랍니다.

프레젠테이션청취를위하여다음의전화번호로연결하시기바랍니다.

1544-3355 (전국)

인터넷세미나참석을환영합니다!Introduction to J2EE (1)

- J2EE 개념및 Servlet/JSP/JDBC

iSeminar중청취상의문제가있으신분은 “Chat”기능을이용해도움을받으시기바랍니다.

2

Who Are We?

한성엽Business Solutions ConsultantOracle Application Server 10g

강은정Business Solutions ConsultantOracle10g

3

J2EE iSeminar Series Agenda

Day 1– J2EE 개념– Servlet 및 JSP (JavaServer Pages)– 자바와데이타베이스액세스

Day 2– Enterprise JavaBean및Web Services– 시각적 J2EE 애플리케이션개발

4

Java 2 플랫폼Java 2 플랫폼스탠다드에디션 (J2SE) –자바테크놀로지의핵심

애플리케이션개발을위한기본적툴및 API 제공

J2S

E

J2S

E

Java Virtual Machine

Core API’s Integration API’sUser Interface Kits (Swing , AWT)

Tools/Utilities/Deployment

J2EE

5

Java 2 플랫폼엔터프라이즈에디션 (J2EE)

J2SE (Java 2 Standard Edition) 기반컴포넌트를이용한분산환경애플리케이션을위한표준

애플리케이션개발을위한자바확장 API 모음런타임인프라스트럭처제공

6

J2EE 아키텍처

Database and legacy systems

Enterprise JavaBeans

JSP PagesServlets

Web BrowserApplets

Application Clients

Client Tier Web Tier Business Tier

Enterprise Information

System (EIS) Tier

7

클라이언트티어컴포넌트

Application 클라이언트AppletHTML 페이지

EIS/Database Tier

Business Tier

Web Tier

Web BrowserApplets

Application Clients

8

웹티어컴포넌트

자바서블릿

JSP (JavaServer Pages)기타리소스(CSS, 이미지)

EIS/Database Tier

Business Tier

JSP Pages

Servlets

Client Tier

9

비즈니스티어컴포넌트

Enterprise JavaBeans (EJB)

EIS/Database Tier

Enterprise JavaBeans

Web Tier

Client Tier

10

J2EE 컨테이너

J2EE 컴포넌트들과 J2EE 서버사이의인터페이스

배치된여러애플리케이션들이공통으로사용하는서비스제공

– 애플리케이션컴포넌트들의 Lifecycle 관리– 리소스풀링

– 보안

– 트랜잭션관리

11

J2EE 컨테이너

Database

J2EE Server

Servlets JSP Pages

EJB EJB

Web Container

EJB Container

ApplicationClient

Browser

Client Machine

Application Client Container

12

J2EE 애플리케이션패키징J2EE 컴포넌트들은티어에따라분리되어패키지화됨

J2EE 애플리케이션은이렇게패키징된컴포넌트들의모음

각컴포넌트및애플리케이션은배치정보파일(deployment descriptor)을가짐

– 배치를위한여러속성들을지정

13

J2EE 애플리케이션패키징

myJ2EEapp.ear

webapp.war ejb.jar

ejb-jar.xmlweb.xml

appclient.jar

application-client.xml

application.xml

14

D E M O N S T R A T I O N

J2J2EE ApplicationEE Application

15

J2EE Benefits

플랫폼의제한없음

재사용성, 이식성컴포넌트기반

확장성

배치 및 운영 용이

16

J2EE iSeminar Series Agenda

J2EE Concepts– Java 2 / J2EE Platform– Architecture– Benefits자바서블릿및 JSP (JavaServer Pages)자바와데이타베이스액세스

17

자바서블릿과 JSP 페이지

서버-사이드자바컴포넌트

J2EE 웹티어상에존재

다이나믹웹컨텐트생성

18

자바서블릿

자바웹커뮤니케이션을위한기반이되는 API일반적으로 HTML 생성위해쓰임

– 타데이타타입 (바이너리포함)의전송도가능 – XML, WML, GIF…

JSP (JavaServer Pages)의기반이됨public class HelloServlet extends HttpServlet {

public void doGet(HttpServletRequest request,HttpServletResponse response)

throws ServletException, IOException{

PrintWriter out = response.getWriter();out.setContentType(“text/html”);out.println("<html><body>");out.println(”<h1>Hello There!</h1>");out.println("</body></html>");out.close();

}

19

request 오브젝트를이용하여클라이언트의요청처리;

response오브젝트를이용하여클라이언트에응답을보냄;

서블릿아키텍처HttpServletHttp Client

Request

Response

Session

public class HelloServlet extends HttpServlet {public void doGet(HttpServletRequest request,

HttpServletResponse response)throws ServletException, IOException

{PrintWriter out = response.getWriter();out.setContentType("text/html");out.println("<html><body>");out.println("<h1>Hello "+request.getParameter("name")+"</h1>");out.println("</body></html>");out.close();

}

20

서블릿의생명주기 (Life Cycle)

LoadLoad InitializeInitialize 0 0 –– N N 개의개의클라이언트클라이언트요청요청 처리

1 2 3

처리

Server Operations

Client (Browser) Requests DestroyDestroy4

21

JSP (JavaServer Pages)

자바코드가임베드된 HTML 페이지cf. 서블릿 – HTML이임베드된자바코드웹디자이너및웹개발자모두에게배우기용이

<HTML><BODY><P>Hello! <BR>Today is: <%= new java.util.Date() %>

</BODY></HTML>

22

JavaServer Pages

JSP 태그– Scriptlets <% … %>– Directives <%@ ... %>– Expressions <%= … %>– Declarations <%! … %>– 기타 <jsp:useBean…/>, <jsp:setProperty…/> ...각 JSP는런타임서블릿으로컴파일됨서블릿과동일한퍼포먼스및재사용혜택을제공함과동시에 HTML의편이성을함께제공

23

D E M O N S T R A T I O N

Java Java ServletsServlets and and JavaServerJavaServer Pages (JSP)Pages (JSP)

24

Agenda

J2EE 개념Servlet 및 JSP (JavaServer Pages) 소개자바와데이타베이스액세스

– JDBC 드라이버개요– 자바에서의 SQL 및 PL/SQL 실행– Java Stored Procedures

25

JDBC 드라이버

호출된 JDBC 메소드를특정벤더의데이타베이스명령으로변환

java.sql 및 javax.sql 패키치에 정의된인터페이스들의구현

JDBC 표준이외에벤더의확장기능제공가능

DriverJDBC calls

Database commands

DatabaseDatabase

26

오라클 JDBC URL 예

Thin driver:

OCI driver:

Server-Side internal driver:

jdbc:oracle:thin:@<host>:<port>:<SID>

jdbc:oracle:oci:@<TNSNAMES entry>

jdbc:oracle:thin:@dbdev.acme.com:1521:ORCL

jdbc:oracle:oci:@dbdev

jdbc:oracle:kprb:

27

JNDI 데이타소스JNDI

API

JNDI Lookup

JDBC Connection

Database

LDAP

CORBA/COS

RMI

DNS

File System

DB 접속정보를액세스하기위한새로운방법

코딩으로지정된 URL보다더flexible, portable 논리적이름에따른접속정보

J2EE 애플리케이션의전형적방식

Context ctx = new InitialContext();

OracleDataSource ods =

(OracleDataSource)ctx.lookup("jdbc/TestDB");

Connection conn = ods.getConnection();

28

커넥션풀링및캐싱

이미존재하는물리적인커넥션의재사용

사용되지않는 connection 는반납되어재사용Stateless 애플리케이션에특히유용커넥션캐싱 –풀링된커낵션집합의관리

PooledConnection

JDBC Connection

PooledConnection

PooledConnection

Database

커넥션캐싱

29

애플리케이션구현단계

Connect Issue statement Process results Close

DriverManager.registerDriver (new oracle.jdbc.OracleDriver());Connection conn = DriverManager.getConnection

("jdbc:oracle:thin:@myhost:1521:orcl",”scott","tiger");

Statement stmt = conn.createStatement();

ResultSet rset = stmt.executeQuery("SELECT employee_id, last_name FROM employees");

while (rset.next()) {

int empId = rset.getInt("EMPLOYEE_ID");

String empName = rset.getString("LAST_NAME");

System.out.println(empId + “: “ + empName);

}

rset.close(); stmt.close(); conn.close();

30

퍼포먼스향상: PreparedStatement1. 변수: 물음표 (“?”) 사용2. 변수를위한 value 지원3. Statement 실행

int empId = 101;PreparedStatement pstmt =conn.prepareStatement("UPDATE employeesSET job_title = ? WHERE employee_id = ? ");

pstmt.setString(1, "Sales Rep");pstmt.setInt(2, empId);pstmt.executeUpdate();

31

PL/SQL 함수호출: CallableStatement

1. 변수: 물음표 (“?”) 사용2. Output 변수등록3. Input 변수값지정4. Statement 실행5. 쿼리결과조회

CallableStatement cstmt =

conn.prepareCall("{call ? := MYFUNC(?)}");

cstmt.registerOutParameter(1, Types.VARCHAR);

cstmt.setInt(2, 1001);

cstmt.execute();

var = cstmt.getString(1);

32

PL/SQL 함수호출: CallableStatement

1. 변수: 물음표 (“?”) 사용2. Output 변수등록3. Input 변수값지정4. Statement 실행5. 쿼리결과조회

CallableStatement cstmt =

conn.prepareCall("{call ? := MYFUNC(?)}");

cstmt.registerOutParameter(1, Types.VARCHAR);

cstmt.setInt(2, 1001);

cstmt.execute();

var = cstmt.getString(1);

33

Java Stored Procedures

데이타베이스내에서 컴파일하고저장된다

자바로작성된 stored procedure –자바환경내로이식가능

PL/SQL stored procedure와함께보완적으로사용

34

D E M O N S T R A T I O N

JDBC JDBC 애플리케이션애플리케이션 예예

35

기타자바데이타베이스액세스방식

Enterprise JavaBeans – CMPJavaServer Pages 태그J2EE 프레임워크 (ADF 비즈니스컴포넌트)TopLinkJPublisher

등등

위의모든방식은 JDBC에기반…많은방식들이 JNDI, 커넥션풀링, 커넥션캐싱등구현

36

Summary

J2EE –엔터프라이즈솔루션을위한플랫폼Servlets –모든 J2EE 웹컴포넌트의기반JSP –다이나믹웹페이지개발을보다쉽게JDBC 개념자바에서의 SQL 및 PL/SQL 실행Java Stored Procedure

37

For More Information

http://launch.oracle.com PIN: 7505395– 세션내용, 슬라이드및데모

http://java.sun.com/j2ee– 튜토리얼, API Documentation

http://otn.oracle.com/sample_codehttp://otn.oracle.com/tech/java/java_db

– 샘플,튜토리얼및다운로드– 백서및 Documentation– Discussion Forum

38

J2EE iSeminar Series Agenda

Day 1– J2EE 개념– 자바와데이타베이스액세스

– Servlet 및 JSP (JavaServer Pages)Day 2

– Enterprise JavaBean 및Web Services– 시각적 J2EE 애플리케이션개발

39

Q U E S T I O N SQ U E S T I O N SA N S W E R SA N S W E R S

40

otn.oracle.com, otn.oracle.co.kr

Join Over 3,000,000 Developers!Free Technical Advice

Free Software Downloadsotn.oracle.com/tech/java, otn.oracle.co.kr/tech/java