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
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
16
J2EE iSeminar Series Agenda
J2EE Concepts– Java 2 / J2EE Platform– Architecture– Benefits자바서블릿및 JSP (JavaServer Pages)자바와데이타베이스액세스
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와함께보완적으로사용
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 애플리케이션개발