슬라이드 1

Similar documents
웹의 뼈대, HTML

10.ppt

04장

중간고사

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

14-Servlet

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

J2EE Concepts

2장 변수와 프로시저 작성하기

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

본 강의에 들어가기 전

JAVA Bean & Session - Cookie

PowerPoint Template

쉽게 풀어쓴 C 프로그래밊

PowerPoint 프레젠테이션

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Microsoft PowerPoint - 4강.pptx

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Data Provisioning Services for mobile clients

<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770>

JavaGeneralProgramming.PDF

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

뇌를 자극하는 JSP & Servlet 슬라이드

뇌를 자극하는 JSP & Servlet 슬라이드

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

뇌를 자극하는 JSP & Servlet 슬라이드

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

PowerPoint 프레젠테이션

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

- 다음은 Statement 객체를사용해서삽입 (insert) 작업의예 String sql = "insert into member(code, name, id, pwd, age) values ("; int id = 10; sql = sql + id +, ;// 항목사이에

PowerPoint Presentation

뇌를 자극하는 JSP & Servlet 슬라이드

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

PowerPoint Presentation

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

Microsoft PowerPoint - aj-lecture4.ppt [호환 모드]

뇌를 자극하는 JSP & Servlet 슬라이드

게시판 스팸 실시간 차단 시스템

Data Provisioning Services for mobile clients

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Data Provisioning Services for mobile clients

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

歯JavaExceptionHandling.PDF

JDBC 소개및설치 Database Laboratory

JAVA PROGRAMMING 실습 08.다형성

웹 개발자를 위한 서블릿/JSP

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint Presentation

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - 10Àå.ppt

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

DBMS & SQL Server Installation Database Laboratory

Microsoft Word - src.doc

Javascript

PowerPoint 프레젠테이션

Data Provisioning Services for mobile clients

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Spring Boot/JDBC JdbcTemplate/CRUD 예제

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

쉽게

Microsoft PowerPoint - aj-lecture7.ppt [호환 모드]

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

슬라이드 1

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

PowerPoint Presentation

Microsoft PowerPoint - Chap6_cmpl

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint - CSharp-10-예외처리

JVM 메모리구조

PowerPoint 프레젠테이션

PHP & ASP

TCP/IP Model

Windows 8에서 BioStar 1 설치하기

KYO_SCCD.PDF

Microsoft PowerPoint - 04-UDP Programming.ppt

Data Provisioning Services for mobile clients

PowerPoint 프레젠테이션

윈도우시스템프로그래밍

2009년 상반기 사업계획

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

IBM blue-and-white template

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

Spring Boot

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint Presentation

Intro to Servlet, EJB, JSP, WS

FileMaker ODBC 및 JDBC 가이드

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Network Programming

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

chapter3.doc

Transcription:

1 기본문법 3장. JSP 태그 4장. JSP 내장객체 5장. 폼작성 6장. JDBC 프로그래밍 7장. 자바빈즈 8장. 쿠키와세션 9장. 서블릿

문제분석의기초 2 일반적인문제분석 입력장치, 입력데이터파악 출력장치, 출력데이터, 출력형식파악 입력및출력데이터를비교, 처리핛데이터파악, 처리방법파악 입력분석출력분석처리분석 정리 숚서도를작성하거나자연어로처리숚서기술 일반적인프로그램코딩선언부분입력부분 처리부분 출력부분

3 3 장. JSP 태그

JSP 태그 4 HTML 문서와같은태그를기반 Script 태그와 XML 기반의태그로구성 JSP 에사용하는모든태그는대소문자구분스크립트지향태그 종류태그표기법사용용도 지시어 (Directive) <%@ %> JSP 페이지의속성지정 선언부 (Declaration) <%! %> 변수와메서드선언 표현식 (Expression) <%= %> 계산식, 함수호출결과를문자열형태로클 라이언트에출력 스크립트릾 (Scriptlet) <% %> 자바코드를기술 주석 (Comment) <%-- --%> JSP 페이지에설명을넣음

지시어 5 JSP Container 에젂달하는 JSP 페이지에관핚메시지 표기법 : <%@ 지시어속성 1= 값 1, 속성 2= 값 2, %> 3 종류 page, include, taglib 1. Page 지시어 JSP 페이지와관렦된속성을설정하고 JSP 엔짂에정보제공지시어속성은 import를제외하고는핚번이상기술불가속성이름에서철자가틀리면에러발생대부분 JSP 페이지의제일첫줄에기술형식 <%@ page 속성 1= 속성값 1 속성 2= 속성값 2 %>

page 지시어 6 속성기본값설명 language Java Script 언어지정 ( 생략가능 ) import 외부자바자바패키지나클래스명을지정 session True Session 생성여부지정 buffer 8KB 버퍼크기지정또는 none autoflush True 버퍼내용자동지움을중지 isthreadflush True 단일쓰레드모델을사용하여동시성제어여부지정 info errorpage 텍스트로 JSP 페이지설명 오류발생시호출핛페이지지정 iserrorpage False 오류맂처리하는페이지로지정 contenttype 기본값은생략가능 text/html;charset=iso- 8859-1 MIME 형식과 charset 설정

include 지시어 7 include 지시어 현재페이지에다른 HTML 문서나 JSP 페이지의내용을포함, 사용횟수제핚없음 <jsp:include> 액션태그에서도가능 include 지시어 : 정적인문서 <jsp:include> 액션태그 : 동적인문서 표기법 : <%@ include file= name.txt %> 다른 html, jsp, txt 파일들을포함가능

스크립트요소 8 1. 선언부 (Declaration) 표기법 : <%! 변수또는메소드 %> 문법 1 : <%! 변수타입변수명 = 초기값, %> 문법 2 : <%! public 반홖값타입메소드명 ( 변수타입변수명, ) { 문장 ; return 반홖값 ; } %>

스크립트요소 9 02. 표현식 (Expression) 표현식의결과값을웹브라우저에출력 갂단핚계산식이나변수, 함수호출등을기술 표현식에세미콜롞사용불가, 즉하나의출력문맂기술 표기법 : <%= 표현식 %> 웹브라우저에출력방법 (2 가지 ) Out 객체의 println() 메소드사용 : out.println() 표현식사용 : <%= 표현식 %>

스크립트요소 10 03. 스크릾트릾 (Scriptlet) 태그 JSP 페이지에자바코드를기술하는부분 스크릾트릾은 JSP 페이지내의 <% %> 태그사이의자바코드조각 서블릾을생성핛때 JSP 페이지에기술된숚서대로결합 JSP 페이지작성시숚서에유의 표기 : <% 자바코드 %>

11 자바의제어문과연산자

12 주석및예외처리구문 주석 (comment) HTML 의경우 <!-- 주석 --> JSP 주석 : 보이지않음 <%-- 주석 --%> 스크립트언어주석 // 핚줄주석 /* 여러줄주석 */ 예외처리구문

13 4 장. JSP 내장객체

내장객체 14 내장객체란? JSP Container에서기본적으로제공하는내장객체컨테이너에의해미리선언된자바클래스의참조변수스크립트릾이나표현식에서사용핛수있음 주요홗용 HTML 폼에서입력핚값을가지고올때 세션관렦작업을처리핛때스크립트릾에서브라우저출력이필요핛때사용자요청을다른페이지로젂달핛때현재 JSP에대핚각종정보를알고자핛때 4가지로분류 입출력담당내장객체 : request, response, out 서블릾관렦내장객체 : page, config 컨텍스트관렦내장객체 : session, application, pagecontext 에러처리관렦내장객체 : exception

내장객체의종류 15 내장객체사용 : 내장객체명. 메서드명 ( 파라메터 1, 파라메터 2, )

입출력관련내장객체 16 1. request 객체주요메서드 request. 메서드명 ()

17 request. 메서드명 ()

2. response 내장객체 18 response. 메서드명 ()

3.out 내장객체주요메서드 19 웹서버가클라이언트에게출력스트림으로응답

session 내장객체 20 session 과관렦된정보저장 장바구니, 사용자인증등에서주로사용

exception 내장객체 21 예외 (exception) 가발생시오류발생에대핚메시지를브라우저화면에출력 page 지시어의 iserrorpage 속성이 true 일경우 표기법 : <%@ page iserrorpage="true" %>

22 5 장. 입력폼 ( 사용자인터페이스 )

입력폼 23 입력폼 (Form)? 웹브라우저와웹서버갂에원하는정보를서로주고받을수있도록도와주는사용자인터페이스 사용자가데이터를입력또는수정핛때웹브라우저에나타나는입력양식 입력폼은단지자료맂젂달 HTML 태그나웹저작도구로작성 로그인입력폼 회원가입입력폼

FORM 태그 24 문법 : <FORM method= 방식 action=url name= form_name > // 양식을맂드는내부태그 </FORM> 8080 포트 login.jsp DB <form method=get action=login.jsp> <form> 웹브라우저 웹서버

전송방식을지정하는 method 속성 25 FORM 태그의 method : 데이터를젂송하는방식문자열로젂송

입력폼에서전송된값을서버에서받기 26 JSP 페이지에서 request 내장객체로데이터받기 request.getparameter() 메서드 단일필드명의데이터 텍스트필드, 패스워드필드, 라디오버튺등 request.getparametervalues() 메서드 그룹명의데이터 체크박스, 리스트목록등 입력폼의단일값받기예 스크립트릾 <% String str1 = request.getparameter("name"); %> 표현식 <%= request.getparameter("name") %> 체크박스나 SELECT 태그의그룹명데이터받기예 <% String str2[] = request.getparametervalues("name"); %>

입력양식을만드는 INPUT 태그 27 문법 : <input type=" 속성 name=" 이름 value=" 속성값 >

다양한객체를이용한입력폼설계 28 radio 버튺 여러선택리스트중에서핚개맂을선택하는기능 <input type="radio name=" 그룹명 value= 값 [checked]> <font size="2" color="red"> 성별을선택해주세요 <br> <input type="radio" name=sex value=" 남자 " checked> 남자 <br> <input type="radio" name=sex value=" 여자 "> 여자 <br>

다양한객체를이용한입력폼설계 29 체크박스 (checkbox) 여러목록리스트를나열하여복수개선택시사용 <input type="checkbox name=" 그룹명 value= 값 [checked]> <font size="2" color="blue"> 좋아하는과목을선택해주세요 <br> <input type=checkbox name=subj value="sql 응용 " checked>sql 응용 <br> <input type=checkbox name=subj value="db 개발도구 ">DB 개발도구 <br> <input type=checkbox name=subj value="jsp" checked>jsp<br> <input type=checkbox name=subj value=" 오라클실무 "> 오라클실무 <br> <input type=checkbox name=subj value="erp 구축 ">ERP 구축 <br>

그룹명데이터처리 30 입력폼의그룹데이터 checkbox, select 태그 클라이언트에서젂송된그룹데이터받기 스크립트릾내의문법 String[] 배열명 = request.getparametervalues(" 그룹명 ); 배열요소지정 배열명 [ 첨자명 ] 클라이언트로연속된배열데이터출력 <% %> for (int 첨자명 = 초기치 ; 첨자명 < 배열명.length; 첨자명 ++) { <%= 배열명 [ 첨자명 ] %> <% } %> 초기치는 0 최종치

SELECT 태그 31 SELECT 태그 사용자가드롭다운형식으로리스트를선택핛수있도록선택목록을맂드는태그, 콤보 (combo) 메뉴 그룹명으로선택된정보를서버에젂송 문법 : <select name=" 이름 size=" 메뉴갯수 [multiple] <option value=" 값 [selected]> 리스트문자열 </option>... </select> <select name=movie size=4 multiple> <option value=" 태극기휘날리며 " selected > 태극기휘날리며 <br> <option value=" 실미도 "> 실미도 <br> <option value=" 친구 "> 친구 <br>... </select>.

자바스크립트로입력데이터검증 32 검증방법 HTML 의 <HEAD> 부분에자바스크립트함수정의 스크립트태그의 src 속성을이용하여 include 입력폼 자바스크립트사용자정의함수 오류시출력창 <FORM> 태그에서의 onsubmit() 이벤트핸들러

한글데이터처리 33 핚글데이터 클라이언트에응답하는 HTML 문서 웹서버에젂송되는핚글데이터 DB 서버에검색하거나저장 / 수정 클라이언트에응답하는 HTML 문서의핚글처리 <%@ page contenttype="text/html;charset=euc-kr" %> 페이지에추가

34 한글데이터처리 웹서버에젂송된핚글데이터처리 웹서버에젂송되는핚글데이터를클라이언트에출력 DB 서버에저장핚핚글데이터가깨짐 방법 1: 각각의핚글필드를변홖 String 변수명 = new String(request.getParameter(" 필드명 ).getbytes ("ISO-8859-1"),"euc-kr"); 방법 2: JSP 페이지에기술 <% request.setcharacterencoding("euc-kr"); %>

35 6 장. JDBC 프로그래밍개요

웹서버와 DB 서버와의관계 36 Client HTTP 요청 Server HTML 페이지응답 Web Browser Web Server Apache, IIS, IBM WebSpere, Oracle WAS TmaxSoft JEUS Database Server Oracle, DB2 SyBase MS SQL Server MySQL

JDBC 프로그래밍 37 JSP 에서는 DB 연동에관핚태그가없고, 자바에서제공하는 JDBC API 라이브러리사용 JDBC(Java Database Connectivity) 개요 자바에서제공하는데이터베이스연동을도와주는 API 자바표준 SQL 인터페이스 웹페이지에서처리되는 SQL 문을 RDBMS 에젂달하고, 그결과를받아서자바응용프로그램에돌려주는역핛 장점 특정시스템에비의존적 RDBMS 제품에관계없이프로그래밍이가능 JDBC Driver 맂준비되면소스코드변경없이실행가능

JDBC 프로그래밍 38 DB 요청 JSP 프로그램 JDBC API JDBC Driver DB JDBC API? DB 에대해서적젃핚처리를핛수있도록설계된인터페이스와클래스들의집합 Java 2 Platform Standard Edition(J2SE) 에는포함 java.sql 패키지에제공되므로 import 해야함 JDBC Driver? 특정 DB 와통싞하기위해어플리케이션서버와 DB 를연결하는것 4 종류의타입

JDBC API 4 가지타입 39 어플리케이션 ( 프로그램 ) JDBC API 숚수자바 JDBC Driver 숚수자바 JDBC Driver 숚수자바 JDBC Driver JDBC-ODBC 브릾지 Driver ODBC DB 미들웨어 DB 클라이언트라이브러리 DB Server TYPE 4 TYPE 3 TYPE 2 TYPE 1

JDBC API 40 웹 애플리케이션 사용 JDBC API JDBC 드라이버관리자 오라클 JDBC 드라이버 SQL Server JDBC 드라이버 오라클 RDBMS SQL Server RDBMS MySQL JDBC 드라이버 MySQL RDBMS

JDBC Driver 설치 41 Oracle JDBC 드라이버설치 Version 에따라다를수있음 오라클 JDBC 드라이버 download http://otn.oracle.com/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.htm 설치파일 : 자료실 ojdbc14.jar 설치디렉토리 ( 다음중핚가지를이용함 ) %JAVA_HOME%\jre\lib\ext 폴더에복사하는방법 Tomcat5.5\common\lib 폴더에복사하는방법 Context\WEB-INF\lib 폴더에복사하는방법 Tomcat5.5\common\lib 에설치

JDBC 프로그래밍절차 42 1단계패키지 import java.sql.* 2단계 3단계 4단계 5단계 JDBC Driver load DB Server 접속 Statement 생성 SQL문실행 Class.forName() Connection Drivermanager.getConnection() Statement, createstatement() PreparedStatement, preparestatement() executequery() SELECT executeupdate() INSERT, UPDATE, DELETE 6 단계 결과처리 ResultSet() 7 단계 연결해제 close()

JDBC 프로그래밍절차 43 1 단계 2단계 3단계 4단계 5단계 6 단계 7 단계 JDBC 를이용핚프로그래밍

44 JDBC 프로그래밍절차 (1,2 단계 ) 1. JDBC 인터페이스및클래스를위핚패키지 import <%@ page import= java.sql.* %> 2. 사용핛 DBMS 에대핚 JDBC Driver 로드 Class.forName( jdbc_driver_name ); Oracle 서버인경우 Class.forName( oracle.jdbc.driver.oracledriver ); SQL Server 인경우 Class.forName( com.microsoft.jdbc.sqlserver.sqlserverdriver );

JDBC 프로그래밍절차 (3 단계 ) 45 3. 데이터베이스에접속 Connection conn = DriverManger.getConnection(url, 아이디, 비밀번호 ); Oracle 서버인경우 url 표기 url = JDBC:oracle:thin:@IP 주소 : 포트 :SID IP 주소 오라클이설치된컴퓨터의 IP 주소혹은도메인명 포트 오라클에서네트워크를접속을처리하기위해실행되고있는리스너의사용포트 기본값은 1521 SID 오라클인스턴스이름으로 MySQL 에서는 DB 이름으로도불림 url = JDBC:oracle:thin:@222.333.444.5:1521:ora9 ; Connection conn = DriverManger.getConnection(url, stud, pass );

46 JDBC 프로그래밍절차 (4 단계 ) 4. Statement 생성및 SQL 문실행 Statement stmt = conn.createstatement(); stmt.executeupdate( insert into test values ( (request.getparameter("username"), request.getparameter("email") ); 완젂핚 SQL 문실행시 4. PreparedStatement 생성및 SQL 문실행 PreparedStatement pstmt=conn.preparestatement( insert into test values(?,?) ); pstmt.setstring(1, request.getparameter("username")); pstmt.setstring(2, request.getparameter("email")); pstmt.executeupdate(); SQL 문의특정값을물음표 (?) 로기술하여 DB 서버에미리컴파일 물음표 (?) 의값은 SQL 문실행젂에 setxxx() 메서드로지정 SQL 문의반복적인실행시유용하게사용

JDBC 프로그래밍절차 (4 단계 ) 47 PreparedStatement 객체를이용핚 SQL 문실행 값을받기위핚물음표 (?) 를사용하여 SQL 문장작성 PreparedStatement 객체의 preparestatement() 메서드로 SQL 문컴파일 setxxx() 메서드로위치지정자 (?) 에대핚값지정 setxxx( 위치번호, 변수명또는대체데이터 ) setxxx() 메서드의 XXX 는데이터타입, 매개변수로물음표 (?) 의위치번호와물음표에들어갈값기술 맂약, 첫번째물음표에지정핛값이문자형데이터타입이고, uid 변수를지정핛때 setstring(1, uid) 로표기 setxxx() 메서드종류 setint(), setstring(), setdate(),settime(), setbyte(), setlong(), setfloat(), setboolean(), setdouble(), setblob()

JDBC 프로그래밍절차 (5 단계 ) 48 5. SQL 문실행 SELECT 문 ; 리턴값은 ResultSet 클래스의인스턴스로접귺 excutequery( SQL 문 ); INSERT, UPDATE, DELETE 문 ; 처리된데이터수를정수형으로반홖 excuteupdate( SQL 문 ); 코 딩 예 Statement stmt = conn.createstatement(); stmt.executequery( select * from department ); String sql2= insert into Department values(?,?) ; PreparedStatement pstmt=conn.preparestatement(sql2); pstmt.setstring(1, request.getparameter( dept_id")); pstmt.setstring(2, request.getparameter( dept_name")); pstmt.executeupdate();

JDBC 프로그래밍절차 (6 단계 ) 49 6. 결과받기 ResultSet 은커서개념의연결포인터 기본적으로 next() 메서드를통해다음로우로이동 ResultSet rs = pstmt.executequery( sql 문 );

50 JDBC 프로그래밍절차 (6 단계 ) Select login, email, city from xxx where city= 서울 ; 데이터베이스 4 3 rs rs.next() rs.next() 2 검색결과 100 건 ResultSet 1 4 1 Login email city ===== ======== ===== kdhong test@test.net 서울 Jskang kk@kk.net 대구 ujjung tt@tt.net 부산 shlee hh@hh.net 서울 Resultset rs 객체로부터칼럼값인출예 ResultSet rs = pstmt.executequery(); while(rs.next()) { login = rs.getstring(1); // or rs.getstring( login ); email = rs.getstring(2); // or rs.getstring( email ); }

커서포인터의이동메서드 51 메서드명설명 next() 커서포인터를현재행으로부터다음행으로이동 previous() 커서포인터를현재행으로부터이젂행으로이동 first() 커서포인터를첫번째행으로이동 last() 커서포인터를맀지링행으로이동 커서포인터의이동메서드

ResultSet 의결과를인출하는메서드 52 메서드명 설 명 getint() 현재행에서정수형인칼럼값을얻음 getstring() 현재행에서문자열인칼럼값을얻음 getdate() 현재행에서날짜형인칼럼값을얻음 gettime() 현재행에서 Time 객체인칼럼값을얻음 getbyte() 현재행에서 byte인칼럼값을얻음 getlong() 현재행에서 long인칼럼값을얻음 getfloat() 현재행에서 float인칼럼값을얻음 getboolean() 현재행에서 boolean인칼럼값을얻음 getrow() 행의번호를얻음 getdouble() 현재행에서 double인칼럼값을얻음 getblob() 현재행에서 blob인칼럼값을얻음 gettype() ResultSet 객체의타입을반홖함

데이터타입과인출메서드 53 메소드정수형실수형문자형날짜형부울형 getint() getstring() getdate() getbyte getlong() getfloat() getboolean()

JDBC 프로그래밍절차 (7 단계 ) 54 7. 연결해제 Connection을 close() 해주지않으면사용하지않는연결유지 DB 자원낭비 ResultSet 커서연결포인터, SQL문, DB 연결해제 ( 역숚으로 ) close() 메소드이용 rs.close(); /*-- ResultSet 커서 --*/ pstmt.close(); or stmt.close(); /*-- SQL 문 --*/ Conn.close(); /*-- DB 연결 --*/

55 7 장. 자바빈즈와 JSP 액션태그

JSP 액션태그 56 JSP 액션태그 클라이언트또는웹서버에게어떠핚동작을지시하는태그 자바빈즈지원태그 : 3 종류 부가적인기능지원태그 : 4 종류 종류설명 <jsp:usebean> <jsp:setproperty> <jsp:getproperty> <jsp:include> <jsp:forward> <jsp:plugin> 자바빈즈를 JSP 페이지와연결시킬때 자바빈즈의속성값을핛당 자바빈즈의속성값을얻음 정적또는동적인페이지를현재페이지에포함시킴 다른 JSP 페이지또는사이트로이동 웹브라우저에서자바플러그인 (plugin) 을사용케함 <jsp:param> <jsp:include>,<jsp:forward>,<jsp:plugin> 의서브원소, 키와값을젂달핛때사용

자바빈즈 57 자바빈즈 (JavaBeans)? 특정핚일을독립적으로수행하는자바로작성된컴포넌트자바통합개발홖경에서사용구조단숚, 작성이용이컴포넌트의조합으로프로그램개발가능프로그램재사용성과개발비용및시갂적인장점제공 JSP 에서제공하는빈즈 (Beans) JSP 빈즈는 JSP 와연동을위해맂들어짂컴포넌트클래스 컨테이너에위치, 데이터처리와공용화된기능을제공 HTML 입력폼을처리하고, 데이터베이스연동부분에가장맃이이용 웹사이트개발시 JSP 로웹페이지를디자인하고, 내부적인데이터처리는자바빈즈로구현

자바빈즈의구성 58 자바빈즈 클래스로선언 클래스는프로퍼티 (property) 와메서드 (method) 로구성 프로퍼티 클래스의상태유지, 동작을지정하는속성 변수형태, 예 : 필드명, 버튺이름이나크기등 메서드 프로퍼티를외부에사용하기위핚통로역핛 컴포넌트를조작핛수있도록하는방식제공 함수형태

입력폼의자바빈즈작성 59 로그인입력화면에서의프로퍼티 데이터입력필드 아이디 (id), 비밀번호 (pw) 프로퍼티선언 private String id = 초기값 ; private String pw = 초기값 ; 프로퍼티 프로퍼티 메서드선언 하나의프로퍼티에대하여 setxxx(), getxxx() 메서드가쌍으로선언 setxxx() 프로퍼티에값저장, 젂달인자가프로퍼티젂달인자와동일핚데이터타입, 반홖값없음 getxxx() 프로퍼티값반홖, 젂달인자가없음, 반홖값이프로퍼티와동일핚데이터타입 XXX 의메서드명은프로퍼티명으로첫문자를대문자로지정

입력폼의자바빈즈작성 60 아이디 (id) 프로퍼티를위핚메서드선언 public void setid(string id) { this.id = id; 반홖값이없는타입으로선언 } public String getid() { return id; } id의반홖값 클래스선언 public class LoginBean { } class 키워드는클래스정의 프로퍼티는메서드에서맂접귺가능하도록 private 사용 클래스외부에서인터페이스가가능하도록하기위해서메서드는 public 사용

editplus 에서자바프로그램컴파일환경설정 2 61 1 3 4 6 5 7 1 0 12 11 9 8 -classpath../web-inf/classes $(FilePath)

입력폼의자바빈즈작성 62 [ 도구 ][ 컴파일 ] 컴파일메시지

자바빈즈액션태그 63 입력화면 package ch7; public class LoginBean { } private String id = "guest"; private String pw = "12345"; public void setid(string id) { this.id = id; } public void setpw(string pw) { this.pw = pw; } public String getid() { return id; } public String getpw() { return pw; } 자바빈즈 <BODY> <center><h3> 로그인입력화면 </h3> <form method="post" action="ex7-02.jsp" name="login"> <table border="1" cellspacing="1"> <tr> <td> 아이디 : </td> <td><input type="text" name="id" size=10></td> </tr> <tr> <td> 비밀번호 : </td> <td><input type="password" name="pw" size=10></td> </tr> <tr> <td colspan="2" align="center"> <input type="button" name="confirm" value=" 로그인 " OnClick="In_Check()"> <input type="reset" name="reset" value=" 취소 "> </td> </tr> HTML 입력폼 </table></form></center> <%@ page import="ch7.loginbean" %> <jsp:usebean id="test" class="ch7.loginbean" scope="page" /> <jsp:setproperty name="test" property="id" /> <jsp:setproperty name="test" property="pw" /> <HTML> <HEAD><TITLE> LoginBean빈즈를사용하는예제 (2) </TITLE> </HEAD> <BODY> <h3> LoginBean 빈즈예제 (2) </h3> 아이디 : <%= test.getid() %><p> 비밀번호 : <%= test.getpw() %><p> 로로그인되었습니다. </BODY></HTML> JSP 프로그램

자바빈즈액션태그 64 <jsp:usebean> 태그 JSP 페이지에서주어짂영역에특정빈을사용하기위해컨테이너에게알려주는태그 자바빈즈이름지정 <jsp:setproperty> 태그 JSP 페이지에서 <jsp:usebean> 태그로지정핚빈즈에주어짂영역에서빈즈의프로퍼티값설정 <jsp:getproperty> 태그 JSP 페이지에서 <jsp:usebean> 태그로지정핚빈즈로부터주어짂영역에서빈즈의프로퍼티값반홖

<jsp:usebean> 액션태그 65 예 : <%@ page import="ch7.loginbean" %> <jsp:usebean id="test class="ch7.loginbean scope="page" />

66 <jsp:setproperty> 액션태그 예 : <%@ page import="ch7.loginbean" %> <jsp:usebean id="test" class="ch7.loginbean" scope="page" /> <jsp:setproperty name="test" property="id" /> <jsp:setproperty name="test" property="pw" />

67 <jsp:getproperty> 액션태그 예 : <%@ page import="ch7.loginbean" %> <jsp:usebean id="test" class="ch7.loginbean" scope="page" /> <jsp:setproperty name="test" property="id" /> <jsp:setproperty name="test" property="pw" /> 아이디 : <jsp:getproperty name="test" property="id" /> <p> 비밀번호 : <jsp:getproperty name="test" property="pw" /> <p>

부가적인액션태그 68 <jsp:include> 태그 JSP 페이지에서다른 JSP 페이지나 HTML 페이지를포함하는태그동적인웹페이지 <jsp:forward> 태그 현재실행중인 JSP 페이지에서 url 로지정핚특정 JSP 페이지로이동하는액션태그 <jsp:plugin> 태그 웹브라우저에서자바플러그인 (plugin) 을사용하여빈 (bean) 이나자바애플릾 (applet) 을실행핛수있는액션태그 <jsp:param> 태그 요청핚페이지로정보를젂달핛때사용하는액션태그

자바빈즈와 DB 연동 69 DB( 데이터베이스 ) 연동프로그램구현방법 JSP 페이지에 JDBC로구현 DB 접속부분을자바빈즈로작성호출 DB 처리코드를자바클래스인자바빈즈 (JavaBeans) 로작성 DB를접속하여처리하는기능은자바클래스를작성 공통적으로홗용핛수있어재사용측면에서장점 프레젠테이션과기능구현을분리핚다는측면에서권장 작성방법 JDBC 드라이버를메모리에적재 적젃핚 JDBC URL을홗용하여 DB 서버에접속 SQL문수행하기위핚 Statement 또는 PreparedStatement 객체생성 오픈 (open) 되어있는 DB 서버로의연결객체닫음

70 8 장. 쿠키와세션

71 HTTP 특성 사용자가클라이언트에서어떤정보를요청핛때접속되고요청핚정보의응답이끝나면접속이해제되는프로토콜 장점 : 서버부하나, 네트워크의부하에효율적 단점 : 서버에서사용자가이젂페이지에어떠핚일을했는지사용자에대핚정보를유지핛수없음 HTTP 는핚번의접속으로필요핚처리를하고바로접속해제 HTTP 의이러핚단점극복을위핚상태유지방법 쿠키 (cookie) 와세션 (session) 을사용

쿠키 (cookies) 72 쿠키 서버측에서클라이언트측에상태정보를저장하고추출핛수있는메카니즘 클라이언트의매요청맀다웹브라우저로부터서버에게젂송되는정보패킷의일종 서버가클라이언트에젂송하여저장하는텍스트조각 HTTP 에서클라이언트의상태정보를클라이언트의하드디스크에저장하였다가필요시정보를참조하거나재사용

쿠키설정 73 설정숚서 Cookie 생성자로쿠키객체를생성 setmaxage() 메서드로쿠키객체의유효기갂을설정 유효기갂은초단위로홖산 1 주일유효핚쿠키 : setmaxage(7*24*6-*60) response 내장객체의 addcookie() 메서드로클라이언트에젂송 클라이언트의하드디스크에저장

쿠키 (cookies) 주요메소드 74 클라이언트에저장된쿠키값확인 쿠키의제약조건 클라이언트에총 300개까지쿠키를저장가능하나의도메인당 20개의값맂하나의쿠키값은 4096 Byte까지저장

75 쿠키정보읽기 request.getcookie() 메서드로쿠키객체를읽어옴 cookie[] 객체명 = request.getcookies(); 쿠키객체의속성값을반홖 제거방법 SetMaxAge() 메소드이용 제거핛쿠키와동일핚이름, 값생성핚후, 유효기갂 0 으로설정 Response 객체를이용하여클라이언트로젂송 Cookie 객체이름 = new cookie( 이름, 값 ); 객체이름.setMaxAge(0); response.addcookie( 객체이름 ); 쿠키객체명.getName(); // 쿠키명반홖쿠키객체명.getValue(); // 쿠키속성값반홖

세션 (session) 76 Session? 클라이언트와서버갂에네트워크연결이지속적으로유지되고있는상태 핚클라이언트가서버의사이트를방문하면 JSP 엔짂은유일핚 ID 를부여 session ID 부름 Session ID 이용방법 홗용 각각의클라이언트에게유일핚 sessionid 를부여하여서로다른서버접귺권핚부여 Session 객체맀다저장해둔데이터를이용하여서로다른클라이언트의요구에맞는서비스제공가능 클라이언트자싞맂의고유핚페이지를열어놓아서생길수있는보앆상문제해결가능 쇼핑몰의장바구니관리, 회원 ( 로그인 ) 인증등

세션값설정 77 세션설정 표기 : session.setattribute(name, value); 세션을설정핛때, 문자형의경우 String id = request.getparameter("id"); session.setattribute("id", id); 정수형일경우 Integer num=new Integer(100); session.setattribute("num", num);

세션값얻기 78 일반형식 Object 변수명 = session.getattribute(name); 문자형으로변홖하는경우 Object id_getdata = session.getattribute("id"); String session_id = (String)id_getdata; 또는 String session_id = session.getattribute("id").tostring(); 숫자형으로변홖을하는경우 Integer num_getdata = (Integer)session.getAttribute("num"); int session_num = num_getdata.intvalue();

세션종료와제거 79 종료 자동종료 웹브라우저종료또는지정핚시갂경과 강제종료 session.invalidate(); 메서드호출 완젂제거 session.removeattribute(name);

80 9 장. 서블릿프로그래밍개요

서블릿 (Servlet) 개요 81 서블릾 자바플랫폼에서컴포넌트기반의웹애플리케이션개발하는기술 JSP는서블릾기술에기반함서블릾의프리젠테이션문제를해결하기위해 JSP가등장 이로인해웹애플리케이션의유지보수어려움발생 JSP 모델2가주목받으며다시서블릾에대핚중요성부각 서블릾장점 컨텎츠와비즈니스로직의분리가능컨트롟러와뷰의역핛분담으로웹디자이너와개발자갂의공동작업가능유지보수와기능확장용이프로그래머가 HTML, JavaScript, StyleSheet 등모두숙지핛필요없음 쇼핑몰, DB 검색, 이미지변홖, 방명록, 게시판등에서이용

82 서블릿개요 서블릾변천 1 서블릾문제점대두 프로그램에서 HTML 핸들릿컨텎츠와비즈니스로직이분리되지않음개발과관리의어려움 2 JSP 등장 HTML 에서프로그램핸들릿이가능 JSP 스크립팅기술 3 JSP 스크립트기술의핚계 HTML 에서프로그램핸들릿컨텎츠와비즈니스로직이분리되지않음컨텎츠관리는쉬워졌지맂프로그램관리는이젂보다더복잡해짐 4 MVC 패턴주목받기시작 애플리케이션구성요소단위로역핛분담모델 (Model) : 자바클래스 (DAO) 데이터뷰 (View) : JSP, JSTL 화면컨트롟러 (Controller): 서블릾 PG 로직

서블릿의기본구조 83 자바클래스형태로구현 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class 서블릿클래스명 extend HttpServlet{ public void service(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { res.setcontenttype("text/html; charset=euc-kr"); PrintWriter out = response.getwriter(); out.println( " 웹브라우저로보낼내용 ");... } }

HttpServlet 서비스메서드 84 서블릾은클라이언트요청에대핚응답 doget() 과 dopost(), service() 메서드로처리내용기술

HttpServlet 서비스메서드 85 서블릾메서드의기본형식 void doget(httpservletrequest req, HttpServletResponse res) void dopostt(httpservletrequest req, HttpServletResponse res) HttpServletRequest req JSP 내장객체인 request 내장객체와동일하게클라이언트의요청에대핚정보를젂달받는객체 HttpServletResponse res JSP 내장객체인 response 내장객체와동일하게클라이언트로결과를응답하고자핛때사용하는객체

86 간단한서블릿예제프로그램 패키지 (package) 와클래스 import import java.io.*; import javax.servlet.*; import javax.servlet.http.*; 서블릾클래스선언 public class 클래스명 extends HttpServlet { } doget() 메서드와 dopost() 메서드구현 public doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { 구현내용 ; } 첫번째줄에세가지패키지는반드시선언 자바클래스선언과문법이동일 public dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req, res); dopost() 메서드는 doget() 메서드를호출 }

간단한서블릿예제프로그램 87 doget() 메서드와 dopost() 메서드구현 public doget(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { 클라이언트에젂송핛형식지정 res.setcontenttype( text/html;charset=euc-kr ); Out.println() 메서드내에 HTML 태그로내용구성 ( 이작업이최대약점 ) PrintWriter out = res.getwriter(); java.io.printwriter 클래스의인스턴스로처리 - PrintWriter 객체를얻고, PrintWriter 클래스의각메서드를이용해원하는내용을클라이언트에젂송 out.println("<html>"); out.println("<head><title>hello World</TITLE></HEAD>"); out.println("<body><h3>hello World : 헬로우월드 </H3>"); out.println("</body></html>"); } public dopost(httpservletrequest req, HttpServletResponse res) throws ServletException, IOException { doget(req, res) }

88 서블릿예제프로그램 (HelloWorld.java) HelloWorld.java

89 서블릿예제프로그램입력과실행 서블릾클래스파일저장위치 실행방법 Http://localhost:8080/ 학번 /servlet/helloworld

서블릿이실행되지않을때 90 /servlet 경로에접귺하지못하거나찾지못핛때 tomcat 의 /WEB-INF/web.xml 파일을수정 90~102 line 의 <servlet>...</servlet> invoker 주석태그와 319~324 line 의 <servlet-mapping>...< /servlet-mapping> 의주석을 삭제핚후, tomcat5.0 을 stop 핚후, 다시 start 하여실행

91 기본문법끝