百見不如一打 Servlet& JSP Ecipse & Oracle
|
|
- 서호 음
- 5 years ago
- Views:
Transcription
1 百見不如一打 Servlet& JSP Ecipse & Oracle
2 예제소스및퀴즈해답등의자료다운로드 질의응답사이트 특별부록 ( 온라인쇼핑몰 ) 다운로드 백견불여일타 JSP&Servlet : Ecipse&Oracle 지은이성윤정 1판 1쇄발행일 2014년 7월 28일펴낸이임성춘펴낸곳로드북편집장미경디자인이호용 ( 표지 ), 박진희 ( 본문 ) 주소서울시관악구신림로29길 호출판등록제 호 (2011년 3월 22일 ) 전화 02) 팩스 02) 정가 27,000원 ISBN 성윤정 & 로드북, 2014 책내용에대한의견이나문의는출판사이메일이나블로그로연락해주십시오. 잘못만들어진책은서점에서교환해드립니다. 이메일 chief@roadbook.co.kr 블로그
3 지은이의글 백견불여일타! 이책은여러분들이스스로확장해가면서일부로에러도내보고또덧붙여보면서 실습을해보면좋겠습니다. 눈으로보아서는절대아무것도얻을수없는책입니다. 처음프로그래밍을시작할때필자가늘학생들에게강조하는 주저함없이도전하라 라는필자의일관된철학이들어가있는것같아참마음에드는말입니다. 누구나고수가되는길의첫발걸음의설렘과도전은깊은 사유 가아니라무심코따라한간단한코드에서그리고컴파일되어나오는시시한 (?) 결과화면에서시작됩니다. 이책은웹서비스개발자가되고자하는입문자를대상으로하고있습니다. 필자가 실습 에포커스를두고이책을설계한이유입니다. 입문자는손이닳도록코딩을반복해봐야합니다. 과정에익숙해지면그원리가보이고원리가보이면전체적인그림이보이기때문입니다. 이책은 원리와개념 을말로써알려주지는않습니다. 차례만보아도실습하고결과를바로확인할수있는 [ 직접해봅시다 ] 코너만 200개가넘고각장말미에나오는 [ 도전해보세요 ] 과제만보아도이책이얼마나 실습 을강조하고있는지금방알아챌수있을것입니다. 필자는사실 1980년대학번으로 IT 기술의초창기에입문해서지금까지현업과강의현장을누벼왔습니다. 대학시절에ㅇ는파스칼, 포트란, 코볼을배웠고회사에서이들을활용한개발을했습니다. 시간이지나면서웹서비스가등장하자콘솔화면에 그리고단순히따라만해서도좋은성과를얻을수없습니다. 고쳐보고확장해보고다른기능을붙여보면서응용력을키워보시기바랍니다. 그리고자바개발자라고해서 HTML이나 CSS, 자바스크립트등을대강만알면안됩니다. 이책에서는거의모든예제에클라이언트에사용되는대표적인기술들이들어가있습니다. 자세한설명은없지만역시레이아웃이나자바스크립트기능도변경해보면서클라이언트기술에도익숙해지는계기가되었으면좋겠습니다. 그리고 [ 도전해보세요 ] 코너는정말여러분들이정답을보지않고몇일이걸리더라도꼭직접풀어보라고권하고싶습니다. 정답을찾아는과정에서여러분이배울수있는게너무많기때문입니다. 자바로밥먹고살려면이책만으로는절대부족합니다. 이책은정말 JSP& 서블릿을배우는데진입장벽을낮춰주는책이지이책을학습하고바로현업개발자로나설수있는책이절대아닙니다. 이책으로드넓은자바웹프로그래밍의세계에서진정한고수가되는날을만날수있기를충심으로기원합니다. 마지막으로집필을마치고마지막정리하는과정에서갑자기아프게된바람에고생을많이하게만든임성춘편집장에게진심으로감사를드립니다. 서의개발영역은좁아지고이클립스와같은복잡해보이지만상당히편한개발툴이 등장하게되었습니다. 더불어학습방법도예전과는많이달라야한다는생각을하게 되었습니다. 복잡한웹서비스개발을배워야하는데, 콘솔화면에서문자열찍고있 2014 년 7 월 성윤정 는것을알려주거나개발방식은빠르게변해가는데, 과거의패턴을그대로학생들에게가르치는것은개발현장에나갈그들에게이중고를주는것과다름없다고생각했습니다. 그래서이책을집필할때크게두가지에주안점을두었습니다. 현업에서활용하는개발환경과개발방식입니다. 현업에서활용하는개발방식은이클립스와오라클등이며개발방식은모델과뷰를분리해서개발하는방식입니다. 처음부터끝까지책을따라학습을마치면이러한개발환경에상당히익숙해질수있을것입니다.
4 편집자이자베타테스터의글 1990년대에 IT 편집자로입문하고제일처음만들었던책이 Servlet 책이었습니다. 번역서였고국내에서첫번째책이었던것으로기억합니다. 바로 1년정도뒤에 JSP 책을만들고 EJB 책을만들었습니다. 국내서였죠. 그로부터십수년이흘러다시한번 JSP& 서블릿책을기획해서출간을앞두고있습니다. 어쩌다가 10년도훌쩍넘은후에다시같은주제의책을만들고있는지죽을때까지 IT 편집자로살아야할운명같습니다. 처음서블릿책을접했을때는아키텍처자체마저생소했고영어로된용어를어떻게번역해야할지정말어려웠습니다. 그리고국내에서도이제막도입했던시기였기때문에게시판예제하나없었고단순히 Servlet 클래스들을분석하고어떤역할을하는지에관한책이었습니다. 물론 MVC니하는패턴이야기는전혀없었죠. 하지만, 지금은이러한패턴을기본으로지키고있고당연시하고있습니다. 시간이지날수록서블릿은 JSP를낳고또서블릿과 JSP는스트럿츠니스프링이니하는수많은프레임워크를낳게되는데, 이걸보면스스로진화하는기술을보고있는듯한이상한느낌마저듭니다. 처음엔이클립스도엉뚱한버전을설치해서당황한적도있었습니다. 서블릿컨테이너에대한개념이잡히질않아수많은문서를뒤적이며겨우이해를할수있었는데, 이부분은저자와상의하여초고에서약간의수정을함으로써깔끔하게해결되었습니다. 다른 JSP 페이지로포워딩을해야하는데, JSP 파일이름을잘못입력해서계속해서에러가나황당한적도있었고임포트가안되었거나오라클에서커밋을해주지않아한창을헤맸던적도있었습니다. 대부분아주사소한오타때문에에러가많이난다는사실에놀라지않을수없었습니다. 점차에러에익숙해지기시작했고근원지를찾아고쳐내고자하는도전의식까지생기더군요. 이런게프로그래밍의재미가아닌가싶었습니다. 마지막에모델2 로해보는게시판예제까지테스트를하고나서이글을쓰고있습니다. 물론지금도어떤기능상의버그가있어저자에게수정의뢰를해놓았는데, 깔끔하게처리하고책을내놓도록기다리고있습니다. 집필도중에건강이많이안좋았지만최선을다해편집자의엉뚱한요청에도잘대해주신성윤정저자에게진심으로감사를드립니다. 이책을집필하신성윤정강사님은오래전부터 IT 책을다수집필하셨습니다. 처 음로드북에이책을제안하였을때는 개념과원리 를중시하는로드북의출간철학 에는맞지않아많은고민을하였습니다. 하지만, 곰곰이생각해보면너무나큰장점 2014 년 7 월 편집자 & 베타테스터임성춘 이있었습니다. 초보자들이가장쉽게접근할수있도록직접해보면서배울수있다는점이었습니다. 그래서 백견불여일타 라는제목을붙이게되었습니다. 그리고프로그래머가아닌편집자가일일이테스트를해보았습니다. 처음엔한글워드에있는소스를복사해서붙여다가테스트를했습니다 ( 시간상일일이타이핑은못했습니다 ). 그리고책이디자인된뒤에도마지막교정시에 PDF 상태에서도역시소스를복사해서일일이테스트를하였습니다. 완전소스에는반영이되어있어도책에는반영이안되는경우도있고편집과정에서실수가있을수있어독자를괴롭힐수가있기때문입니다.
5 이책을제대로보는방법 1. 이론적인내용은최대한앞부분에핵심만간추려설명 JSP& 서블릿의역사나단순한 API 등의나열은과감히생략하였습니다. 이론적인내용을최 대한간결하게정리하여실습을바로해볼수있게하였습니다. 5. [ 도전해보세요 ] 코너는직접풀어봐야이코너는반드시직접풀어보기를바랍니다. 답안소스를제공하고있지만, 여러분이같은 실행결과가나올때까지끝까지도전하여결과를내고답안과비교를하면서어떤부분이 다른지를꼭파악해보시기바랍니다. 2. 예제소스를보는방법 이클립스에서자동으로생성되는소스외에별도로입력해야할소스는별색으로처리하였 습니다. 일부자동으로입력된소스가변경된부분이있는부분이있지만, 실행상에는문제 가없습니다. 도전해보세요 문제의답은로드북홈페이지 ( 에서확인할수있습니다. 회원가입페이지작성하기 3. [ 직접해보세요 ] 코너는반드시직접해보아야이코너에서는실습뿐만아니라개발환경설정, DB 설정등여러환경설정까지함께들어 목표 <form> 태그를사용하여입력폼의대표할만한사용예인회원가입페이지를작성하고여기서입력받은값을서블릿에받아처리합니다. 난이도상조건표시된내용은회원가입을위해반드시입력해야하는항목입니다. 자바스크립트로유효성을체크하세요. 가있기때문에처음부터끝까지직접해보아야합니다. [ 직접해보세요 ] get과 post 전송방식의폼과서블릿테스트 1. 웹프로젝트 (web-study-02) 에서마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [New JSP File] 를선택합니다. [New JSP File] 창이나타나면파일이름을입력합니다. 이책에서는파일이름을 "04_ method" 로합니다. 파일이름만입력하면확장자는자동으로.jsp로붙습니다. get 방식전송버튼과 post 방식전송버튼을갖는입력폼을작성합니다. 1 <%@ page language="java" contenttype="text/html; charset=utf-8" 2 pageencoding="utf-8"%> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="utf-8"> 7 <title> 서블릿 </title> 8 </head> 9 <body> 10 <form method="get" action="methodservlet"> 11 <input type="submit" value="get 방식으로호출하기 " > 12 </form> 13 <br><br> 14 <form method="post" action="methodservlet"> 15 <input type="submit" value="post 방식으로호출하기 " > 16 </form> 17 </body> 18 </html> 6. 궁금하면여기물어보세요로드북전용 Q&A 게시판입니다. 질문앞머리에 [JSP] 만붙여주세요. 저자분께바로질문 의뢰가가고빠른답변을받아볼수있습니다. 4. [ 퀴즈로정리합시다 ] 로이론적인내용을정리각장에서배운내용을객관식과서술형식을섞어테스트하는과정입니다. 무슨지식을습 득하든지연습문제를풀어봐야그지식에더익숙해질수있습니다. 7. 특별부록제공이책은 온라인쇼핑몰개발 을특별부록으로예제소스와함께해설을 PDF 형태로제공합 니다. 우선은한번따라해보면서감을익혀보고자신만의쇼핑몰을만들어보시기바랍니다. 퀴즈로정리합시다 문제의답은로드북홈페이지 ( 에서확인할수있습니다. 1. JSP 가무엇의약어인지표시하고정의하시오. 2. 사용자가 JSP를요청하면이를서블릿컨테이너에서어떻게처리하는지순서대로각단계를상세히기술하시오.
6 목차 지은이의글편집자이자베타테스터의글이책을제대로보는방법 1장. 서블릿과 JSP 개요 1.1 웹프로그래밍이란? 웹애플리케이션개발환경구축하기 프로그램설치 JDK 설치하기 톰캣설치하기 이클립스설치하기 이클립스로첫웹애플리케이션작성하기 서블릿과 JSP의기초개념 서블릿 JSP [ 직접해보세요 ] JDK, 톰캣, 이클립스설치하기 [ 도전해보세요 ] 자신의이름을출력하는 JSP 작성하기 2장. 서블릿의기초 2.1 서블릿프로그램을만들어보자 서블릿의동작원리 서블릿의라이프사이클 서블릿의한글처리와데이터통신 서블릿에서응답시한글처리 get 방식과 post 방식 쿼리스트링이란? 요청객체 (request) 와파라미터관련메소드 (getparameter) 자바스크립트로폼에입력된정보가올바른지판단하기 서블릿에서요청시한글처리 기타다양한입력양식 암호를입력받기위한암호입력상자 여러줄입력할수있는글상자와배타적선택을하는라디오버튼 체크박스와 request의 getparametervalues( ) 목록상자 [ 직접해보세요 ] Dynamic Web Project 만들고서블릿만들기 [ 직접해보세요 ] 서블릿의라이프사이클테스트 [ 직접해보세요 ] 한글메시지를출력하는서블릿만들기 [ 직접해보세요 ] get과 post 전송방식의폼과서블릿테스트 [ 직접해보세요 ] 텍스트박스에입력된값얻어오기 [ 직접해보세요 ] 유효성체크하기 [ 직접해보세요 ] 입력폼에서한글읽어오기 [ 직접해보세요 ] POST 방식으로한글읽기 [ 직접해보세요 ] 로그인폼만들기 [ 직접해보세요 ] 배타적선택하기 [ 직접해보세요 ] 관심분야다중선택하기 [ 직접해보세요 ] 작업과관심분야선택하기 [ 도전해보세요 ] 회원가입작성하기 3장.JSP 기본다루기 3.1 JSP로시작하는웹프로그래밍 JSP와 HTML 서블릿과 JSP의차이 JSP 기본태그 JSP 스크립트요소 주석문 지시자 include 지시자 [ 직접해보세요 ] Dynamic Web Project와컨텍스트패스 [ 직접해보세요 ] 두수의합을출력하는 JSP [ 직접해보세요 ] 변수값을 1 증가하여출력하는 JSP [ 직접해보세요 ] 선언문에변수선언과메소드정의하기 [ 직접해보세요 ] 선언문에선언한변수와스크립트릿변수의성격파악하기 [ 직접해보세요 ] 표현식의사용예 [ 직접해보세요 ] HTML 주석문과 JSP 주석문의사용 [ 직접해보세요 ] 오늘날짜출력하기 [ 직접해보세요 ] 에러발생페이지와에러페이지만들기 [ 직접해보세요 ] include 지시자사용법알아보기 [ 도전해보세요 ] 두수를더하는함수를만들고사용하기
7 4장. 내장객체와액션태그 4.1 JSP 내장객체 out 내장객체 request 내장객체 response 내장객체 application 내장객체 내장객체의영역 액션태그 <jsp:forward> 액션태그 <jsp:param> 액션태그 <jsp:include> 액션태그 [ 직접해보세요 ] 브라우저와웹서버의정보를알아내는 JSP [ 직접해보세요 ] 설문조사폼만들기 [ 직접해보세요 ] 페이지강제이동하기 [ 직접해보세요 ] 로그인인증처리하기 [ 직접해보세요 ] 성년만입장가능한사이트만들기 [ 직접해보세요 ] application의실제경로알아보기 [ 직접해보세요 ] 내장객체영역테스트 [ 직접해보세요 ] 페이지이동 [ 직접해보세요 ] 조건에따른페이지이동 [ 직접해보세요 ] <jsp:include> 액션태그를활용한모듈화 [ 도전해보세요 ] 웹사이트이동하기 5장. 쿠키와세션 5.1 쿠키 (cookie) 세션 (session) 세션사용하기 세션관련메소드 세션제거하기 세션을이용한로그인처리 [ 직접해보세요 ] 쿠키를생성하는 JSP [ 직접해보세요 ] 생성된모든쿠키를얻어와출력하기 [ 직접해보세요 ] id 쿠키삭제하기 [ 직접해보세요 ] 세션에값설정하기 [ 직접해보세요 ] 세션에설정한모든값얻어오기 [ 직접해보세요 ] 세션객체의메소드사용하기 [ 직접해보세요 ] 세션에저장된특정객체삭제하기 [ 직접해보세요 ] 설정된모든세션제거하기 [ 직접해보세요 ] 회원인증을위해아이디와비밀번호를입력받는폼 [ 직접해보세요 ] 회원인증처리하기 [ 직접해보세요 ] 로그인인증받은회원에게제공되는 JSP [ 직접해보세요 ] 인증된사용자의인증을무효화하는 JSP [ 도전해보세요 ] 로그인처리하기 6장. 자바빈과액션태그 6.1 자바빈과의첫데이트 자바빈클래스만들기 자바빈관련액션태그 자바빈객체를생성하는 <jsp:usebean> 액션태그 자바빈에서정보를얻어오는 <jsp:getproperty> 액션태그 자바빈에정보를새롭게설정하는 <jsp:setproperty> 액션태그 자바빈으로회원정보처리하기 [ 직접해보세요 ] 첫자바빈만들기 [ 직접해보세요 ] 자바빈객체생성하기 (usebean 액션태그 ) [ 직접해보세요 ] 자바빈프로퍼티값얻기와변경하기 [ 직접해보세요 ] 폼양식에입력한내용을자바빈으로처리하기 [ 도전해보세요 ] 게시글정보를위한자바빈작성하기 [ 도전해보세요 ] 상품정보를위한자바빈작성하기 [ 도전해보세요 ] 영화정보를위한자바빈작성하기 7장. 표현언어와 JSTL 7.1 표현언어로표현단순화하기 표현언어로요청파라미터처리하기 표현언어로내장객체접근하기
8 7.4 JSTL JSTL 라이브러리를사용하는이유 JSTL 라이브러리 JSTL core 태그 <c:set> 과 <c:remove> 태그 흐름을제어하는태그 <c:import>, <c:redirect>, <c:url> 태그사용하기 <c:out> 과 <c:catch> 태그사용하기 JSTL fmt 태그 숫자날짜형식지정관련태그 로케일지정을위한태그 [ 직접해보세요 ] 표현언어로간단한메시지를출력하는 JSP 페이지 [ 직접해보세요 ] 표현언어에서사용가능한데이터 [ 직접해보세요 ] 표현언어의연산자사용하기 [ 직접해보세요 ] 로그인폼만들기 [ 직접해보세요 ] EL로형변환ㅎ없이두수를입력받아합을구하기 [ 직접해보세요 ] 서블릿클래스에서두수에대한합을구해 JSP에서출력하기 [ 직접해보세요 ] 표현언어의내장객체를명시적으로사용하기 [ 직접해보세요 ] 자바빈클래스만들기 [ 직접해보세요 ] 표현언어로자바빈객체속성값얻어오기 [ 직접해보세요 ] JSTL 다운로드받아설치하기 [ 직접해보세요 ] <c:out 태그로간단한메시지를출력하는 JSP 페이지 [ 직접해보세요 ] <c:set> 태그로변수에값저장하기 [ 직접해보세요 ] 색상선택하기 [ 직접해보세요 ] 과일선택하기 [ 직접해보세요 ] 아이디중복체크를위한 JSP [ 직접해보세요 ] 영화제목을저장한배열을 <c:foreach> 태그의 varstatus 속성을사용하여인덱스와반복횟수출력하기 [ 직접해보세요 ] first, last 프로퍼티사용하기 [ 직접해보세요 ] begin, end 속성사용하기 [ 직접해보세요 ] 관심분야다중선택하기 [ 직접해보세요 ] <c:import> 사용하기 [ 직접해보세요 ] <c:url> 사용하기 [ 직접해보세요 ] <c:redirect> 사용하기 [ 직접해보세요 ] 출력과예외처리를지원하는태그사용하기 [ 직접해보세요 ] 날짜형식지정하기 [ 직접해보세요 ] 타임존설정하기 [ 직접해보세요 ] 로케일지정하기 [ 직접해보세요 ] 입력폼에서한글깨지지않고읽어오기 [ 직접해보세요 ] 요청파라미터의캐릭터인코딩지정하기 [ 도전해보세요 ] ( 조건에따라분기하는 ) 로그인페이지작성하기 8장. 데이터베이스와 JDBC 8.1 데이터베이스개요및오라클 DB 환경구축하기 오라클다운로드와설치 SQL 테이블을생성하는 create table 테이블에레코드를추가하는 insert 데이터를조회하는 select 저장된데이터를변경하는 update 테이블에저장된레코드를삭제하는 delete JDBC를이용한데이터조작하기 데이터베이스와연결하기 SELECT문과 Statement, ResultSet 클래스 데이터저장과 PreparedStatement 클래스 [ 직접해보세요 ] 오라클다운로드 (Oracle Database 11g Express Edition) 와설치 [ 직접해보세요 ] 오라클데이터베이스관리프로그램접속하기 [ 직접해보세요 ] 사용자생성하기 [ 직접해보세요 ] 회원테이블생성하기 [ 직접해보세요 ] JDBC 드라이버연결하기 [ 직접해보세요 ] member 테이블에데이터추가하기 [ 도전해보세요 ] 사원정보관리 [ 도전해보세요 ] 상품정보관리 9장. 데이터베이스를이용한회원관리시스템구축하기 9.1 데이터베이스커넥션풀 데이터베이스를연동한회원관리시스템 사용자관리시스템의전체구조 회원관리 member 테이블과연동하는 DAO 로그인인증처리
9 회원가입을위한프로그래밍 로그아웃처리를위한프로그래밍 회원정보수정을위한프로그래밍 [ 직접해보세요 ] DBCP 설치하기 [ 직접해보세요 ] 이클립스에서회원정보를저장하는 VO 클래스만들기 [ 직접해보세요 ] 이클립스에서회원테이블을액세스하는 DAO 클래스만들기 [ 직접해보세요 ] 커넥션을얻어오는메소드 [ 직접해보세요 ] 회원인증을위해아이디와비밀번호를입력받는폼 [ 직접해보세요 ] 회원관리웹애플리케이션을위한자바스크립트파일 [ 직접해보세요 ] 로그인입력폼을위한서블릿클래스만들기 [ 직접해보세요 ] 홈 ( 프론트 ) 페이지 [ 직접해보세요 ] 회원인증을위한메소드추가하기 [ 직접해보세요 ] 회원인증을위한서블릿클래스만들기 [ 직접해보세요 ] 회원인증된사용자에게제공되는 JSP 페이지 [ 직접해보세요 ] 회원정보입력폼을위한서블릿클래스만들기 [ 직접해보세요 ] 회원가입을위한회원정보를입력받는폼 [ 직접해보세요 ] 중복체크페이지를새로운창으로띄우기위한자바스크립트함수 [ 직접해보세요 ] 아이디중복체크를위한메소드추가하기 [ 직접해보세요 ] 아이디중복체크를위한서블릿클래스만들기 [ 직접해보세요 ] 아이디중복체크를위한 JSP 페이지 [ 직접해보세요 ] 아이디중복체크완료처리를위한자바스크립트함수 [ 직접해보세요 ] 회원정보의유효성을체크하기위한자바스크립트함수 [ 직접해보세요 ] 회원정보를 DB에추가하기위한메소드추가하기 [ 직접해보세요 ] 회원정보를데이터베이스에추가하는서블릿 [ 직접해보세요 ] 인증된사용자의인증을무효화하는서블릿 [ 직접해보세요 ] 회원정보수정을위한폼으로이동하는처리를하는서블릿 [ 직접해보세요 ] 인증된사용자에게제공되는회원정보수정페이지 [ 직접해보세요 ] 회원정보를변경하기위한메소드추가하기 [ 직접해보세요 ] 회원정보수정처리서블릿의 dopost( ) 메소드에데이터베이스처리를위한코드추가 [ 도전해보세요 ] 사원관리프로그램만들기 쇼핑몰관리자페이지개요 데이터베이스구축하기 프로젝트환경설정 상품정보를저장하기위한 VO 클래스정의 데이터베이스처리를위한 DAO 클래스 화면디자인을위한스타일시트정의하기 상품등록하기 상품수정하기 상품삭제하기 [ 직접해보세요 ] 파일전송폼만들기 [ 직접해보세요 ] 파일업로드를위한서블릿 [ 직접해보세요 ] 한꺼번에여러파일을업로드하기위한폼 [ 직접해보세요 ] 한꺼번에여러파일을업로드하기위한서블릿 [ 직접해보세요 ] 이클립스에서상품정보를저장하는 VO 클래스작성 [ 직접해보세요 ] Connection 객체얻기와사용이끝난리소스해제를위한클래스 [ 직접해보세요 ] 스타일시트파일 [ 직접해보세요 ] ProductDAO 클래스정의하기 [ 직접해보세요 ] 상품리스트를위한서블릿 [ 직접해보세요 ] 상품리스트를위한 JSP 페이지 [ 직접해보세요 ] 상품등록을위한서블릿 [ 직접해보세요 ] 상품등록화면을위한 JSP [ 직접해보세요 ] ProductDAO 클래스에상품등록을위한메소드추가하기 [ 직접해보세요 ] 폼입력정보의유효성체크를위한자바스크립트 [ 직접해보세요 ] ProductDAO 클래스에상품등록을위한메소드추가하기 [ 직접해보세요 ] ProductDAO 클래스에상품정보수정을위한메소드추가하기 [ 직접해보세요 ] 상품수정을위한서블릿 [ 직접해보세요 ] 상품삭제를위한서블릿 [ 직접해보세요 ] 상품삭제화면을위한 JSP 페이지 [ 직접해보세요 ] ProductDAO 클래스에상품삭제를위한메소드추가하기 [ 도전해보세요 ] 영화관리프로그램 10장. 파일업로드 10.1 파일업로드에사용되는 COS 라이브러리 쇼핑몰관리자애플리케이션작성-cos.jar 파일을이용한이미지업로드 장.MVC 패턴 ( 모델2) 을사용한게시판 11.1 모델2 기반의 MVC 패턴개요 MVC 패턴의컨트롤러 : 서블릿 MVC 패턴의뷰 : JSP MVC 패턴의모델
10 11.2 게시판 - 모델 2 기반의간단한 MVC 패턴구현하기 [ 직접해보세요 ] 이클립스에서게시글정보를저장하는 VO 클래스만들기 [ 직접해보세요 ] Connection 객체얻기와사용이끝난리소스해제를위한클래스만들기 [ 직접해보세요 ] 게시글테이블을액세스하는 DAO 클래스만들기 [ 직접해보세요 ] 폼입력정보의유효성을체크하는자바스크립트 [ 직접해보세요 ] 화면레이아웃을위한스타일시트 [ 직접해보세요 ] MVC 패턴의 Controller 역할을하는서블릿만들기 [ 직접해보세요 ] 모델을동일한방식으로실행하기위한인터페이스 [ 직접해보세요 ] 커맨드 (command) 패턴으로작업처리를위한명령처리클래스 [ 직접해보세요 ] BoardServlet 클래스에코드추가하기 [ 직접해보세요 ] 게시글리스트를위한액션클래스 [ 직접해보세요 ] 게시글리스트를위한 JSP 페이지 [ 직접해보세요 ] 커맨드패턴으로작업처리를위한명령처리클래스 ActionFactory 수정 [ 직접해보세요 ] 게시글등록을위한폼으로이동하게하는액션클래스 [ 직접해보세요 ] 게시글등록화면을위한 JSP 페이지 [ 직접해보세요 ] 게시글을데이터베이스에추가하기위한액션클래스 [ 직접해보세요 ] 게시글상세보기페이로이동하게하는액션클래스 [ 직접해보세요 ] 게시글상세보기를위한 JSP 페이지 [ 직접해보세요 ] 비밀번호입력화면으로이동하게하는액션클래스 [ 직접해보세요 ] 비밀번호입력화면을위한 JSP 페이지 [ 직접해보세요 ] 게시글의비밀번호확인을위한액션클래스 [ 직접해보세요 ] 게시글의비밀번호가일치할경우처리를위한 JSP 페이지 [ 직접해보세요 ] 게시글수정화면으로이동하게하는액션클래스 [ 직접해보세요 ] 게시글수정화면을위한 JSP 페이지 [ 직접해보세요 ] 게시글을데이터베이스에수정하기위한액션클래스 [ 직접해보세요 ] 게시글삭제를위한액션클래스 [ 도전해보세요 ] 사원관리프로그램
11 1 장 서블릿과 JSP 개요 이장을시작하기전에 만약여러분이 자바웹애플리케이션개발환경 ( 톰캣 +JDK+ 이클립스 ) 을구축할수있거나, JSP와서블릿으로 HelloWorld 수준의웹애플리케이션을만들어실행할수있다면, 다음장으로넘어가도좋습니다. 자바문법에대해아직아리송하고잘모르고있다면, 우선은자바기본서를한번정도는정독하며학습한후에배우기를권장합니다. 이책은가능하면자바의기본문법을알고있다는전제하에설명을하고있기때문입니다. 물론좀어려운기초문법은간단히설명하고있으니겁먹지마세요. 자, 이제시작입니다. 코드를직접입력하고실행해보고변경해보면서그의미를파악하며이책의끝까지완주할수있기를바랍니다. 화이팅!
12 웹프로그래밍이란? 인터넷은컴퓨터들이연결된거대한네트워크구조입니다. 예를들어인터넷쇼핑을하기위해브라우저에사이트주소를입력하면이는해당사이트에있는웹페이지를내가사용하는브라우저에보내달라고요청하는것을의미합니다. 이렇게요청을받아웹페이지를찾아서보내주는일을하는컴퓨터나프로그램을웹서버라고하고요청된페이지를받아보는브라우저나컴퓨터를클라이언트라고합니다. 아래그림은인터넷쇼핑사이트의동작원리를나타내고있습니다. 되었다가보여주는것입니다. 이렇듯다양한정보를데이터베이스에서얻거나저장하기위해서등장한언어가 PHP, ASP, 서블릿 /JSP 입니다. 인터넷을통해카멜레온처럼변화무쌍한정보를얻거나쇼핑을할수있는이유는웹애플리케이션언어 (PHP, ASP, 서블릿 /JSP) 로개발한웹애플리케이션, 예를들면네이버 Naver나다음Daum과같은포털사이트, GMarket 이나티켓몬스터와같은온라인쇼핑몰이웹서버에구축되어있기때문입니다. 참고 ➊ 사이트주소를입력한다. 브라우저 ➋ 웹페이지를요청한다. 웹서버 웹애플리케이션이란? 웹애플리케이션은웹 ( 인터넷 ) 을기반으로실행되는애플리케이션 ( 프로그램 ) 을말합니다. 즉, 웹브라우저로접근하여사용되는애플리케이션을말합니다. 이책에서학습하게되는웹프로그래밍 (Web Programming) 이바로웹애플리케이션을제작하는과정을뜻합니다. 기억하세요. 이책에서의미하는웹프로그래밍이란 웹애플리케이션을제작 하는과정입니다. ➌ 해당웹페이지를찾는다. 이책을읽는독자의학습목표는서블릿 /JSP 를사용하여웹애플리케이션을개발하는것입니다. 여러분이쇼핑몰을웹애플리케이션으로구축하는것을목표로한다 면사용자가원하는상품을검색한후구입을하는과정을모두서블릿 /JSP 를사용하 ➍ 찾은웹페이지를보낸다. 여제작해야합니다. [ 클라이언트측 ( 사용자 )] [ 서버측 ] 브라우저를통해서각종정보를제공해주는웹페이지는 HTML을이용하여웹프로그래밍을한것입니다. 하지만 HTML만으로는시시각각변경되는새로운정보를제공해주지못합니다. 왜냐하면 HTML은같은내용만표시해주는정적인페이지이기때문입니다. 우리가사용하는인터넷은바로바로새로운내용을제공해주어야하기때문에 HTML만가지고웹프로그래밍을하는데문제가있습니다. 그래서등장하게된것이동적인페이지입니다. 동적인페이지에서새로운정보를제공해주기위해서는방대한정보를관리할데이터베이스가필요합니다. 예를들어게시판에게재되는글은데이터베이스에저장 서버는일반적으로사용자 ( 클라이언트 ) 의요청이들어오면이에대한처리를한결과페이지를전송하는웹서버Web Server와실질적으로요청한페이지의로직이나데이터베이스와의연동을처리할수있는비즈니스로직이구현되어야하는웹애플리케이션서버 (Web Application Server : WAS) 로이루어져있습니다. 대표적인 WAS로는 BEA사의웹로직WebLogic, IBM의웹스피어 WebSphere, SUN사의 iplanet, Oracle 9iAS, 티맥스의제우스 Jeus, 우리책에서사용하는톰캣 Tomcat 등이있습니다. 여기에서톰캣은웹서버기능이내장되어있어별도로웹서버를설치하지않고 WAS 역할까지합니다. WAS라는서버프로그램이웹애플리케이션을어떻게동작시키는지그원리를이해하기위해 회원가입을위한프로그램 ( 애플리케이션 ) 이어떤절차를거쳐서실행되는지를살펴보겠습니다. 회원가입을하기위해서는회원가입페이지에서이름, 20 1 장서블릿과 JSP 개요 21
13 아이디, 별명, 비밀번호등을입력한후 < 확인 > 버튼을클릭할것입니다. 그러면브라 우저는입력된회원정보를서버로전송하고서버에서는이정보를 WAS 를통해데 이터베이스에저장합니다. 앞에서도언급하였지만톰캣은웹서버를내장하고있다고했습니다. 위의그림에 서는웹서버와톰캣이분리되어있지만사실두기능을함께수행하고있는것입니다. 지금까지웹프로그래밍의전체적인그림을살펴보았다면, 다음절에서는구체적 ➊ 회원가입페이지에서회원정보를입력한후 < 확인 > 버튼을클릭 웹서버 ➋ 입력된회원정보전송 ➎ 회원가입처리결과전송 ➏ 입력된정보를다음페이지에서확인하기위해서출력해준다. 웹애플리케이션서버 ( 톰캣 ) ➌ 입력된회원정보를읽어와데이터베이스에저장 데이터베이스 ➍ 회원가입성공실패여부를결과값으로얻어옴 으로서블릿과 JSP 가무엇인지아주기초적인내용을살펴볼것입니다. 웹애플리케이션개발환경구축하기 - 프로그램설치 웹애플리케이션개발환경구축을위한설치프로그램은 JDKJava Development Kit, 톰캣Apache Tomcat, 이클립스 Eclipse입니다. 이번절에서서블릿 /JSP 웹프로그래밍을학습하기위해서웹애플리케이션개발환경을구축하는방법을학습해보도록하겠습니다. 다음은이들설치프로그램들이각각어떤역할을하는지정리한표입니다. [ 클라이언트측 ( 사용자 )] [ 서버측 ] 웹서버는요청이있을경우이를받아들여요청한페이지를응답할책임을지고있습니다. 웹서버가요청을받아응답할때까지의웹애플리케이션의동작순서는다음과같습니다. ➊ 사용자가브라우저주소입력란에특정사이트의주소를입력하게되면브라우저가해당웹서버에웹페이지를요청하는것이됩니다. 단요청한페이지가단순한정적인페이지라면웹서버에서바로클라이언트에게해당페이지를전송합니다. ➋ 해당웹서버는입력된회원정보를웹애플리케이션서버 (WAS : Web Application Server) 로전송합니다. ➌ 요청한페이지는웹서버에서바로제공되지못하고웹애플리케이션서버에서다양 설치프로그램 JDK (Java Development Kit) 톰캣 (Apache Tomcat) 이클립스 (Eclipse) 설명제일먼저무료로제공해주는자바개발도구인 JDK(Java Development Kit) 를다운받아설치해야합니다. 자바는플랫폼에독립적이므로어떠한플랫폼에서도설치할수있습니다. 우리는 JDK를설치하기위한개발플랫폼으로 Windows를선택했습니다. 톰캣 (Tomcat) 은아파치와썬마이크로시스템즈에서공동프로젝트로만든웹애플리케이션서버입니다. 웹애플리케이션서버가무엇인지모르면앞부분을다시한번살펴보세요. 이클립스는애플리케이션개발을위한코딩과컴파일을함께할수있는종합개발툴 (IDE) 입니다. 최근개발자들이가장많이사용하는툴입니다. 한로직이나데이터베이스와의연동을통해서완성되어야만제공됩니다. 웹애플리케이션서버는웹서버가클라이언트에게제공할페이지를완성하기위해이에필요한로직이나데이터베이스와의연동과데이터처리를담당합니다. ➍ 로직이나데이터베이스작업처리결과를웹서버에게보냅니다. ➎ 웹서버는이결과를다시클라이언트측브라우저에응답하게됩니다. ➏ 회원가입이성공적으로이루어졌다면가입당시에입력된정보를확인하기위해서 설치프로그램들의버전은자주최신버전으로변경됩니다. 설치방법은 [ 직접해보세요 ] 코너에서자세히알려드리겠습니다. 각각의버전은설치시점에따라약간다를수있으며해당사이트에가면이책에언급한버전과다른버전이제공될수있습니다. 버전에따라사용방법이크게다르지않기에자유롭게버전을선택해도상관없습니다. 다음은이책의집필시점의버전입니다. 출력해줍니다 장서블릿과 JSP 개요 23
14 JDK(Java Development Kit) Windows x86(jdk-7u17-windows-i586.exe) 라는윈도우 32 비트용버전 을다운로드하여설치합니다. 윈도우가 64 비트라면 64 비트용을다운로드해 도상관없습니다. 톰캣 (Apache Tomcat) 톰캣 (Tomcat) 7.0 을다운로드하여압축을풀면됩니다. 이클립스개발도구 이클립스를다운로드하여압축을풀면됩니다. 현재웹애플리케이션개발은 대부분이클립스를사용합니다. 회사에서업무를수행하기위해서워드프로 세스를공부하듯이웹애플리케이션개발을위해서는이클립스를반드시익 참고서블릿과 JSP 학습을위해 JDK를설치하는이유서블릿과 JSP를구동시키는것은 WAS입니다. 하지만, WAS에서서블릿과 JSP를구동하기위해서는자바컴파일러가필요합니다. 왜냐하면이미설명한대로서블릿과 JSP는자바를기반으로한기술이기때문입니다. 우선 JDK를다운로드하여설치하도록합시다. JDK는오라클사의홈페이지에서무료로다운로드한후설치할수있습니다. Java SE의최신버전 ( 집필시점에서는 Java SE 7u17) 을다운로드하기바랍니다. JDK는자주버전이갱신되므로설치시점에따라버전이약간다를수있다는점에주의하세요. 버전이갱신되어찾기가어려우면 Java SE(Standard Edition) 를찾으면됩니다. 다운로드하는시점에따라최신버전이다를수있으므로 7u17 버전 이아니더라도가장최신의버전을다운로드하면됩니다. 혀야합니다. 학습할때는메모장과같은윈도우즈의기본에디터를이용해서 프로그램을작성한후콘솔창에서컴파일하고브라우저에직접입력하여요청하여실행할수도있습니다. 하지만, 실제실무에서이와같은방식으로는웹애플리케이션개발이거의불가능합니다. 이클립스를사용하면소스작성은물론컴파일, 실행을원스톱으로한꺼번에실행할수있어빠른개발이가능합니다. 자주사용하면서익혀두기바랍니다. [ 직접해보세요 ] JDK 다운로드하여설치하기 1. 브라우저를열어주소란에다음 URL을입력하여오라클사이트의 JDK 다운로드페이지에접속합니다. JDK 설치하기이클립스가설치되면서자바의개발환경을자동으로설정하기때문에 JDK를먼저설치한후이클립스를설치해야합니다. 또한 JDK는서블릿과 JSP를포함한자바로작성한프로그램을컴파일하기위한툴로서이를 WAS(WAS 란앞에서이미언급한바있는 Web Application Server 의약어로서톰캣과같은웹애플리케이션서버를말합니다 ) 를설치하기전에 JDK를먼저설치해야합니다 장서블릿과 JSP 개요 25
15 2. 다운로드에앞서 Accept License Agreement 에체크하여동의를거칩니다. 플랫폼 ( 운영체제 ) 별로 JVM 설계가다르므로 JDK는다음과같이여러종류로나뉘어있습니다. 사용자의 PC에설치된플랫폼에맞는 JDK를선택합니다. 윈도우즈 32비트인경우 Windows x86(jdk- 7u17-windows-i586.exe) 을다운로드합니다. 5. 이번에는 JRE의설치위치를변경하겠느냐는화면이나타납니다. JRE의설치위치역시변경하지않기로합니다. [Next] 버튼을클릭하여설치를진행합니다. 6. 설치진행화면이나타나게된후에 JDK가설치가완료되면다음그림과같이설치종료화면이나타나게됩니다. [Close] 버튼을눌러설치를종료합니다. 3. 다운로드페이지를통해받은파일을더블클릭하면설치가시작됩니다. [Next] 버튼을클릭하여설치를진행합니다. 7. JDK 설치가완료되면등록화면이뜹니다. 오라클계정없이설치하고나면바로사용할수있으므로익스플로러창을닫습니다. 4. JDK의설치위치를변경하겠느냐는화면이나타납니다. 본서에서는 JDK의설치위치를변경하지않습니다. [Next] 버튼을클릭한후계속설치합니다 장서블릿과 JSP 개요 27
16 톰캣설치하기 JDK 설치가완료되었으면이제실질적으로서블릿과 JSP 를구동시키는 WAS 를설 치해보도록하겠습니다. WAS 로는 BEA 사의웹로직, IBM 의웹스피어 SUN 사의 3. 받은파일을더블클릭하여설치를시작합니다. 설치화면이나타나면 [Next] 버튼을클릭한후에나타난라이센스동의화면에서라이선스에동의하겠다는의미로 <I Agree> 버튼을클릭합니다. iplanet, Oracle 9iAS, 티맥스의제우스등이있다고이미언급했습니다. 이책에서 는이렇게다양한 WAS 중에서오픈소스프로젝트로개발되어무료로제공되는톰캣 을사용하겠습니다. [ 직접해보세요 ] 톰캣다운로드하여설치하기 1. 브라우저를열어아파치톰캣사이트 ( 에접속한후화면왼쪽에있는메뉴에서 Download Tomcat 7.0을선택하여톰캣다운로드페이지로이동합니다. 4. 환경설정부분에서 Examples 에추가로체크한후 [Next] 버튼을클릭합니다. 2. 화면을스크롤하여중앙에있는 밑에 Binary Distributions / Core 영역의 32-bit/64- bit Windows Service Installer (pgp, md5) 를선택해다운로드합니다. 5. Tomcat 내부환경설정을변경해야합니다. 기존오라클에서사용하는포트와충돌이발생할우려가있기때문에 port를 8181로수정합니다. 오라클사용자이름인 User Name과오라클에접속하기위해서필요한비밀번호인 Password를각각 admin, 1234로지정한후 [Next] 버튼을클릭합니다 장서블릿과 JSP 개요 29
17 6. 톰캣설치경로는기본설정값을사용할것이므로 [Next] 버튼을클릭하여설치를진행합니다. 설치가완료되면오른쪽과같은화면이나타납니다. [Finish] 버튼을클릭하여설치를마무리합니다. 이클립스설치하기 JDK 와톰캣이설치되었으면웹프로그램을작성하기위한이클립스를설치합니다. 이클립스까지설치가끝나면서블릿과 JSP 를학습하기위한예제를작성하고실행해 보도록하겠습니다. [ 직접해보세요 ] 이클립스다운로드하여설치하기 1. 웹브라우저를열고, 사이트로이동합니다. 위쪽의메뉴에서 [downloads] 메뉴를클릭한후이클립스 (Eclipse IDE for Java EE Developers) 를클릭합니다. 참고로이클립스는 Standard가아니라 EE Developers를위한 IDE로다운을받아야합니다. 7. 설치하자마자톰캣이구동됩니다. 확인은화면아래의트레이아이콘으로확인할수있습니다. 8. 브라우저를실행시켜 을입력하여다음과같이톰캣의시작페이지가나타나면톰캣이제대로설치된것입니다. 2. 이클립스 (Eclipse IDE for Java EE Developers) 를클릭하면미러사이트로이동합니다. 미러사이트란인기있는웹사이트에서통신량이폭주하는장거리또는국제회선을경유하지않고도파일을전송받을수있도록 2개이상의파일서버를두는것을말합니다. 인터넷상에는유명한사이트의경우전세계에몇군데의미러사이트가있으므로사용자들은가까운곳또는국내에있는미러사이트를이용하는것이바람직합니다 장서블릿과 JSP 개요 31
18 3. 미러사이트에서이클립스를다운로드합니다. 이클립스로첫웹애플리케이션작성하기 이클립스를사용하기에앞서먼저워크스페이스와프로젝트개념을알아봅시다. 우리는일반적으로파일을관리하기위해폴더를만듭니다. 예를들어문서파일을관리하기위해서문서라는폴더를만들어놓지요. 그런데문서에도종류가많기때문에이를구분하기위해문서폴더내부에워드문서관리폴더를만들고거기에워드파일들을, 엑셀문서관리폴더를만들어놓고거기에는엑셀파일을나누어관리합니다. 이와마찬가지로병원관리프로젝트를위한파일을 [ 병원관리 ] 폴더에저장하고학사관리프로젝트는 [ 학사관리 ] 폴더에저장합니다. 또한 [ 병원관리 ] 폴더와 [ 학 4. 받은압축파일을푸는것으로이클립스설치가끝납니다. 사관리 ] 폴더와같이개발을위한프로젝트폴더들을워크스페이스란작업을위한 공간 ( 폴더 ) 에저장해둡니다. 만일프로젝트를할때마다여기저기에저장해두면찾 기힘들까봐프로젝트를한꺼번에작업을위한공간인워크스페이스 ( 작업공간 ) 내에모아서관리하는것입니다. 대규모프로젝트나소규모프로젝트는모두프로젝트이고프로젝트폴더들을관리의편의를위해서워크스페이스라는작업공간에저장해두는것입니다. 우리가지금이클립스로간단한예제를작성하기위해서우선적으로해야할일은워크스페이스와프로젝트와 JSP 파일을만드는일입니다. 생성된 JSP 파일에실행결과로얻고싶은내용을코딩한후저장하고, 이를실행하여결과를확인합니다. 이들을만드는순서는다음과같이워크스페이스를생성한후생성된워크스페이스를작업공간으로하여프로젝트를생성합니다. 생성된프로젝트내에서블릿이나 JSP 등필요한파일을생성한후원하는결과가나타날수있도록코드를입력한후저장하 지금까지 JDK, 톰캣, 이클립스를설치하였습니다. 이제부터는본격적으로서블릿 과 JSP 로능숙하게웹애플리케이션을개발할수있도록서블릿과 JSP 문법을학습할 것입니다. 여이를실행합니다. 원하는결과가나오지않으면원하는결과가나올때까지코드 를수정한후다시저장하여실행하는작업을반복합니다. 이러한작업은이책의전 반에걸쳐반복되니지금은이런절차를거치는구나정도만알면됩니다. 워크스페이스생성프로젝트생성 JSP 파일생성코딩저장 실행 32 1 장서블릿과 JSP 개요 33
19 [ 직접해보세요 ] 이클립스실행하기 1. 제대로설치가되었는지확인하기위해서탐색기에서 C:\eclipse-jee-juno-SR2-win32\ eclipse 폴더안에있는 eclipse.exe 파일을더블클릭하여이클립스를실행합니다. 바탕화면에바로가기를해놓으면편리합니다. 4. 이클립스가실행되면 [Welcome] 창이나타납니다. [Welcome] 창에표시된아이콘들은자바를학습하기위한튜토리얼이나예제들과연결하는기능을합니다. 화면상단왼쪽의닫기버튼을눌러 [Welcome] 창을닫습니다. 2. 이클립스가실행되면작업공간 (workspace) 을선택하는창이나타납니다. 기본으로설정된작업공간이아닌다른작업공간을만들고자할경우에는 [Browse...] 버튼을클릭합니다. [Select a workspace] 창이나타나면 eclipse 폴더하위폴더에워크스페이스를생성하기위해서 eclipse 폴더를선택한후여기에서 [ 새폴더만들기 ] 버튼을클릭합니다. [ 새폴더 ] 항목의이름을원하는폴더명으로변경합니다. 필자의경우에는폴더이름을 web_workspace 로변경하고변경된폴더를선택한후 [ 확인 ] 버튼을누릅니다. 5. [Welcome] 창을닫으면다음과같은화면이제공됩니다. 3. 그러면 [Workspace] 항목의값이 web_workspace로변경되어적용되는것을알수있습니다. 화면아래에 [Use this as file default and do not ask again] 항목을체크하지않으면이클립스를실행할때마다워크스페이스를지정하라고 [Select a workspace] 창이매번나타나므로귀찮을경우이항목에체크하여이클립스실행할때마다해당창이나타나지않도록합니다 장서블릿과 JSP 개요 35
20 참고 이클립스가실행이안된다면이렇게해보세요. 2. [New Server] 창이뜨면, [Define a New Server] 에서 [Apache Tomcat v7. 0 Server] 를선택한후 [Next] 버튼을클릭합니다. 이러한문제는메모리사이즈때문인경우가대부분이므로 eclipse.ini 파일을열어서아래 xmx 부분이메모리사이즈를나타내는데, 이부분만잘조정하면됩니다. eclipse.ini 파일의맨아래줄 Xmx512m 을 Xmx256m 으로변경합니다. 3. 그다음 [Tomcat Server] 창에서, [Browser] 버튼을클릭하여 Tomcat 경로 (C:\Program Files\Apache Software Foundation\Tomcat 7.0) 를찾아지정합니다. [ 확인 ] 버튼을클릭한후 Tomcat 경로가제대로지정되었는지확인한후에 [Finish] 버튼을클릭합니다. [ 직접해보세요 ] 이클립스에서톰캣연동하기 1. 이클립스의화면아래의 [Server] 창에서마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [New Server] 를선택합니다. 4. [Server] 창에만들어진 Tomcat 7.0 Server에서마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [Start] 를선택하여서버를구동시킵니다 장서블릿과 JSP 개요 37
21 5. 서버가구동되지않고다음과같은에러창이뜨면이미톰캣서버가실행중이기때문입니다. 이클립스에서서버를구동하기위해서는이미실행중인톰캣서버를중지시켜야합니다. 그러기위해서화면하단의작업표시줄의톰캣트레이아이콘을클릭하거나시작메뉴에서 [Monitor Tomcat] 를선택하여 [Tomcat Monitor] 창을띄웁니다. 참고이클립스에서인코딩방식을 UTF-8로변경하기웹프로그래밍에서한글을위한작업을위해서는인코딩을지정해야합니다. 이클립스의기본인코딩은시스템인코딩에따릅니다. 한글윈도우에설치된이클립스의경우기본인코딩이 MS949입니다. 이것을다국어지원을위해서일반적으로보편화된 UTF-8로설정해줍시다. [Window Preferences] 메뉴를선택하여 [Preferences] 창이나타나면화면왼쪽에서는 [General] 하위항목으로 [Workspace] 를선택하고화면오른쪽상세내용중맨하단에서는 [Text file encoding] 항목의선택박스에서 UTF-8로선택하고 [Apply] 버튼을클릭합니다. 6. [Tomcat Monitor] 창이나타나면 [Stop] 버튼을클릭하여톰캣서버를중지시킵니다. [Stop] 버튼이비활성화되면톰캣서버가중지된것입니다. [ 확인 ] 버튼을클릭합니다. [Stop] 버튼을클릭하여톰캣서버를중지 7. 톰캣서버를중지했으므로다시이클립스에서톰캣서버를시작시켜봅시다. [Server] 창에만들어진 [Tomcat 7.0 Server] 에서마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [Start] 를선택합니다. 다음과같이나타나면톰캣서버가성공적으로시작된것입니다. 또한 [Preferences] 창의왼쪽에서 [Web] 하위항목으로 [JSP Files] 를선택하고화면오른쪽상세내용중 [Encoding] 항목의선택박스에서 ISO 10646/Unicode(UTF-8) 를선택합니다. 역시 [Apply] 를클릭한후 [OK] 버튼을클릭하여설정을마무리합니다 장서블릿과 JSP 개요 39
22 톰캣서버가이클립스와연동되었으므로이제웹프로젝트를생성하고 JSP로간단한웹애플리케이션을생성하여실행해보도록합시다. 서블릿과 JSP 로게시판이나회원관리애플리케이션더나아가서쇼핑몰까지만들수있습니다. 이런다양한웹애플리케이션은프로젝트단위로작성합니다. 프로젝트는개발에필요한파일을관리할뿐아니라각종라이브러리나디버깅정보등을관리합니다. 자, 웹프로그래밍을학습하기위한첫번째단계로프로젝트를생성합시다. 문자인코딩이란? 인코딩은문자셋을컴퓨터가이해할수있는바이트와매핑한규칙을말합니다. 예를들면 ASCII Code에서 ABC 등은문자셋이고 A는코드 65, B는코드 66 등바이트순서와매핑한것이인코딩입니다. 따라서문자셋을어떻게매핑하느냐에따라하나의문자셋이다양한인코딩을가질수있습니다. [ 직접해보세요 ] Dynamic Web Project 만들고 jsp 파일만들기 1. 웹프로젝트를만들기위해서는화면왼쪽에 [Project Explorer] 에서마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [New Dynamic Web Project] 를선택합니다. 컴퓨터는영미권에서만들어졌기때문에영어를표현하는경우는아무런문제가없지만다른문자를사용하는나라에서자국의언어로표현하려면문제가되는경우가있습니다. 그렇기때문에한글을표현하는인코딩을적용하여문서를만들어야합니다. 한글인코딩은 MS949( 윈도 OS에서기본으로사용 ), UTF-8 등이있습니다. 브라우저는내부적으로모두유니코드로처리합니다. 그렇기때문에 HTML5에서는문자인코딩에 UTF-8을권장하고있습니다. UTF-8은전세계적으로모두통용될수있는표준화된텍스트데이터를표현하기위해서만들어진인코딩방식입니다. UTF-8 방식을이용하면다음과같이 HTML에서제공되는 <meta> 태그에 charset 속성을추가한후인코딩방식을지정해야합니다. <meta charset="utf-8"> 또한 MS949 방식을이용하면다음과같이표기합니다. 2. 프로젝트이름을입력합니다. 이책에서는프로젝트이름을 web-study-01 로하고 [Finish] 버튼을클릭합니다. <meta charset="euc-kr"> 위방식은 HTML5에서지정하는인코딩방식이고 HTML4의인코딩방식을지정하는 <meta> 태그는다음과같습니다. <meta http-equiv="content-type" content="text/html; charset=utf-8"> charset(character Set, 문자셋 ) 은하나의언어권에서사용하는언어를표현하기위한모든문자 ( 활자 ) 의모임을말하며 HTML 문서뿐만아니라다른애플리케이션에도언어권에맞는문자들의집합을언급해야할때 charset이란키워드를사용합니다. 아직은문자셋에익숙하지않겠지만앞으로예제를만들어가면서확실히이해를할수있을겁니다 장서블릿과 JSP 개요 41
23 3. 이클립스의화면왼쪽에 [Project Explorer] 에웹프로젝트가추가되어나타납니다. 새롭게나타난웹프로젝트를선택한후마우스오른쪽버튼을클릭하여나타난바로가기메뉴에서 [New JSP File] 을선택합니다. 6. 실행을하기위해서는 JSP 파일을선택한후 [Run Run] 을선택합니다. 단축키를사용하고자할경우에는 [Ctrl+F11] 을누릅니다. 4. [New JSP File] 창이나타나면파일이름을입력합니다. 이책에서는파일이름을 helloworld 로합니다. 파일이름만입력하면확장자는자동으로.jsp가됩니다. 역시 [Finish] 버튼을클릭합니다. 7. JSP 파일을실행시킬서버를선택하라는창이나타납니다. 화면아래 [Always use this server when running this project] 체크박스를클릭하면실행시킬서버를선택하라는창이더이상나타나지않습니다. [Next] 버튼을누르면웹서버에웹프로젝트를추가하는화면이제공됩니다. [Finish] 버튼을클릭합니다. 5. 웹애플리케이션이제대로실행되는지확인을위해생성된 JSP 파일의 <body> 태그안에 <h1> Hello World! </h1> 을기술합니다 장서블릿과 JSP 개요 43
24 8. 서버에새로운웹프로젝트를추가하려면서버가새로구동되어야합니다. [OK] 버튼을클릭하면서버에웹프로젝트가추가된후서버가새로구동되어 JSP 파일을실행합니다. 9. JSP 실행결과는이클립스내부에있는브라우저에표시됩니다. [ 직접해보세요 ] 글꼴변경과줄번호출력하기 1. 글꼴을변경하기위해서는 [Window Preferences] 메뉴를선택합니다. 이곳에서다양한환경설정을할수있습니다. [Preferences] 창이나타나면화면왼쪽에서는 [General] 하위항목으로 [Appearance Colors and Fonts] 를선택하고화면오른쪽에서는 [Basic Text Font] 항목을선택한후 [Edit...] 버튼을클릭합니다. 10. 결과화면을이클립스내부가아닌팝업창형태로외부에서확인하고자한다면 [Window Preferences] 를선택한후에 [Preferences] 창이나타나면, 화면왼쪽에서는 [General] 하위항목으로 [Web Browser] 를선택하고 [Use external web browser] 라디오버튼을선택합니다. 2. [ 글꼴 ] 창이나타나면원하는글꼴을선택합니다. 보통은 Consolas 서체를사용합니다. 11. 다음은이클립스외부의브라우저에서 JSP 파일을실행한결과를보여주는화면입니다 장서블릿과 JSP 개요 45
25 3. [ 에디터 ] 뷰에라인번호가표시되지않아불편하므로, 라인번호가표시되도록이번에는 [Preferences] 창왼쪽에 General의 [Editors] 하위항목으로 [Text Editors] 를선택하고화면오른쪽에서는 [Show line numbers] 항목을체크한후에 [Ok] 버튼을클릭합니다. 서블릿과 JSP 의기초개념 이제야본론으로들어왔습니다. 앞서웹프로그래밍이필요한이유에대해서학습했 고개발환경까지세팅하였고간단하게 JSP 페이지로만들어실행해보았습니다. 이 제는웹프로그래밍의핵심기술인서블릿과 JSP 의기초개념을알아보고어떻게개 발하는지알아볼차례입니다. 서블릿서블릿 Servlet은 Server + Applet 의합성어로서버에서실행되는 Applet 이란의미로자바를이용하여웹에서실행되는프로그램을작성하는기술을말합니다. 웹애플리케이션을제작하기위해제공되는언어는이미언급한 PHP, ASP와같이 4. 글꼴이변경되고줄번호가생성된것을확인할수있습니다. 많지만요즘에많은기업에서는 JSP& 서블릿을사용하고있습니다. 이는다른웹기 술에비해빠른응답을해줄수있다는장점이있기때문입니다. PHP 처럼 JSP 라하 지않고 JSP& 서블릿이라고한이유는독특한탄생비화때문입니다. 이부분은뒤이어설명합니다. 하지만앞으로서블릿을공부하면서상속이나출력스트림, 예외처리와같은자바기술에서사용되는용어들이아주자연스럽게나오는데, 이들용어에대해서낯선분들은자바기술에대한별도의학습이필요합니다. 서블릿은자바클래스형태의웹애플리케이션을말하는데, 브라우저를통해자바클래스가실행되도록하기위해서는 javax.servlet.http 패키지에서제공하는 HttpServlet 클래스를상속받아구현해야합니다. HttpServlet 클래스를상속받아만든서브클래스를서블릿클래스라고합니다. 지금까지이클립스를설치하고간단하게 JSP 파일을생성하여실행까지해보았습니다. 성공했다는기쁨도있지만, 이클립스에의해생성된 JSP가어떻게톰캣에의해구동되는지궁금한게한두가지가아닐겁니다. 아직은서블릿에대해자세한학습을하지않은상태이기때문에이러한궁금증을풀기란시기상조이고서블릿과 JSP 의개념을우선파악하고톰캣이 JSP를어떻게동작시키지알아보도록하겠습니다. 이제본격적으로서블릿으로웹프로그래밍을하는방법을익히도록합시다. 서블릿또한자바프로그램의다른클래스들처럼자바가상머신인 JVM에서동작해야하므로클래스파일이생성되어야합니다. 그래서클래스의형태로작성합니다. JDK에는웹애플리케이션을제작할수있는클래스가제공되지않고톰캣을설치하고나면웹애플리케이션을제작할수있는클래스가제공되는데, 그클래스가바로 HttpServlet 입니다. HttpServlet 은웹서비스가가능한웹애플리케이션을제작할수있도록자바를확장해놓은클래스로톰캣을설치하면제공됩니다. HttpServlet 을상속받은클래스를서블릿이라고합니다. 이미여러기능들이미리만들어져있기 때문에개발자는편리하게 HttpServlet 을활용하여새로운기능의웹프로그램을만 들수있는것입니다 장서블릿과 JSP 개요 47
26 이제서블릿클래스가어떤구조로되어있는지살펴보기위해지금부터덧셈을 해주는서블릿을이클립스를이용하여단계적으로만들어보겠습니다. [ 직접해보세요 ] 두수에대한합을구하여결과를출력하는서블릿클래스 1. 이클립스의 [Project Explorer] 에서웹프로젝트 (web-study-01) 를클릭하여선택한후 [File New Servlet] 을선택합니다. 2. [Create Servlet] 창이나타나면패키지 (unit01) 와서블릿클래스이름 (AdditonServlet01) 을입력한후 [Finish] 버튼을클릭합니다 번라인부터다음과같이입력합니다. 3. 서블릿클래스가생성됩니다 줄에서에러가발생하는데이는 PrintWriter 클래스사용을위한 import문이없기때문입니다. Ctrl+Shift+O를동시에누르면 import java.io.printwriter; 와같은임포트구문이자동추가되면서발생했던에러가해결됩니다 장서블릿과 JSP 개요 49
27 다음은위에서실습한 AdditonServlet01.java 파일의전체소스내용입니다. 2 장 에서서블릿에대해서자세하게설명할것이기에소스코드다음의설명을보고전체 적인내용만이해하도록합시다. 6. 작성한서블릿을실행하여결과를얻으려면 [Run Run] 을선택합니다. 7. 웹브라우저주소입력란에 가자동입력되어다음과같은결과가출력됩니다 package unit01; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; /** * Servlet implementation class AdditonServlet01 public class AdditonServlet01 extends HttpServlet { private static final long serialversionuid = 1L; /** * Default constructor. */ public AdditonServlet01() { // TODO Auto-generated constructor stub } /** HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { int num1 = 20; int num2 = 10; int add = num1 + num2; PrintWriter out = response.getwriter(); out.println("<html><head><title>additon</title></head>"); out.println("<body>"); out.println(num1 + "+" + num2 + "=" +add); out.println("</body>"); 50 1 장서블릿과 JSP 개요 51
28 out.println("</html>"); } /** HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } } 클라이언트는서버에 get과 post 두가지방식중하나로요청을합니다. 두전송방식의차이점은다음과같습니다. 전송방식설명주소창을타고넘어가기때문에서버로보내는데이터를사용자가그대로볼수있습 get 방식니다. 그래서보안에취약합니다. 255자이하의적은양의데이터를전송합니다. html header를타고넘어가기때문에보안에강합니다. 255자이상의대용량의데이 post 방식터를전송합니다. 1 : 패키지를만듭니다. 패키지는비슷한프로그램들을묶을때유용합니다. 패키지의유용성에대해서는자바기본서를참고하세요. 3 : 입출력시예외처리를위한클래스로 doget 메소드의 thorws 절에서 IOException을사용했기에임포트합니다. 4 : 클라이언트에결과를출력하기위한 out 객체를 PrintWriter 클래스로선언하였기때문에 PrintWriter를임포트합니다 ( 위에서자동으로임포트하는방법도배웠죠?) 6 : 서블릿에서발생하는예외처리를위한클래스로 doget 메소드의 thorws 절에서 ServletException을사용했기에임포트합니다. 7 : 8 : HttpServlet 클래스를 16줄에서사용하기때문에임포트해야합니다. 9~10 : 30줄과 46줄의 doget, dopost 메소드의매개변수에서사용한모든 HttpServletRequest, HttpServletResponse 클래스를사용하기위한임포트구문입니다. 15 : ) 안에기술된 URL로요청을하는것이기에요청 URL을정하는것입니다. 16 : HttpServlet에는웹애플리케이션으로동작하도록하는기본동작즉요청에대한응답이가능하도록하는내용이기술되어있기때문에상속받아야합니다. 29 : 서블릿이요청을받으면이벤트처리방식으로자동으로호출되는메소드입니다. HttpServlet에정의된메소드인데, 이를오버라이딩해서개발자가요청이있을경우어떤처리를해야하는지명시해주어야합니다. 그래서오버라이딩해놓은것입니다. 오버라이드등의필요성에대해서는자바기본서를참고하세요. 웹프로그래밍에서가장중요한것은클라이언트가어떻게서버에요청하는지를알아야합니다. 이것을이해해야서블릿의동작방식을이해할수있기때문입니다. 서블릿클래스에대한문법적인내용은 2장에서자세히살펴보고이번예제에서는서블릿동작방식을이해하기위해클라이언트가어떻게서버에요청하는지부터살펴봅시다. 1 바이트가 8 비트인것처럼, 연필한자루가 12 개인것처럼, 주소입력란에데이터 를전송하는데는제한이있습니다. 컴퓨터는 2 진수체계이므로 2 8 에저장할수있는 최댓값이 255 이다보니 255 자까지저장가능하도록한것이다. 서블릿클래스에는 doget() 혹은 dopost() 가있는데, 요청방식에따라호출되 는메소드가달라집니다. get 방식으로요청하면 doget() 이호출되고 post 방식으 로요청하면 dopost() 가호출됩니다. 그렇기때문에요청방식에따라 doget() 혹은 dopost() 메소드내부에호출되었을때해야할일을써넣어야합니다. doget() 혹은 dopost() 메소드중어떤메소드가호출되는지실질적인 HTML 코 드로설명하겠습니다. 보통 <form> 태그를통해서버에무엇인가를전달하거나요청 을하게됩니다. 다음과같이말입니다. 요청할서블릿 <form action="callservlet"> <input type="submit" value=" 전송 "> </form> 클릭하면서블릿이요청된다. 위그림은 <form> 태그로서버측에존재하는많은서블릿중하나를정해서요청 하고있습니다. 이를위해 action 이라는속성값에요청할서블릿이름을기술해야합 니다. 전송버튼이눌리는순간에 action 속성값에지정된서블릿이요청됩니다. 전 송버튼은일반버튼이아닌 <input> 태그의 type 속성값을 submit 으로지정하여 만들어야합니다. <form> 태그가서블릿을요청할때는 get 과 post 두가지전송방식중한가지 로전송됩니다. 개발자가원하는전송방식을결정해줄수있는데, 그러기위해서는 52 1 장서블릿과 JSP 개요 53
29 method 속성값을 <form> 태그에추가하면됩니다. method 속성값으로 get 을기술 하면 doget() 메소드가, post 를기술하면 dopost() 메소드가호출됩니다. 그런데폼태그에서블릿이름을넣어놓으면서버에서는어떻게해당서블릿을찾 요청에대한처리를위한 doget() 과 dopost() 메소드는어떤요청이왔느냐에따 라둘중하나가호출된다는것빼고는메소드의형태는완전히동일합니다. 다음은 doget(), dopost() 의형태입니다. 을수있을까요? 그것은 WAS( 톰캣엔진 ) 가운영체제와같은시스템프로그램이므로 확장자가.class 인파일을톰캣이가지고있다가요청이들어오면해당서블릿클래 스들을찾아서실행하는원리입니다. 뒷부분으로갈수록이런동작원리는확실하게 이해할수있을겁니다. <form> 태그를이용한 get 방식의요청의예 <form method="get" action="callservlet"> <input type="submit" value=" 전송 "> </form> public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { } public void dopost(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { } <form> 태그를이용한 post 방식의요청의예 <form method="post" action="callservlet"> <input type="submit" value=" 전송 "> </form> method 속성을생략한채전송방식을결정하지않으면기본값인 get 방식으로 요청을하게됩니다. <form> 태그외에도 HTML 의 <a> 태그를사용하여링크를걸어주면서블릿은 get 방식으로요청한것으로인식합니다. doget(), dopost() 에서동일한방식으로처리되기때문에 doget() 메소드만대표 로살펴보도록합시다. 요청처리 응답처리 public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { } 예외처리 그렇다면어떤경우에 post 방식을쓰고어떤경우에 get 방식을쓸까요? <a> 태그를이용한 get 방식요청의예 <a href="callservlet"> get 방식의요청 </a> 1 분만생각해봅시다 주소입력란에서직접서블릿요청을위한 URL 을입력해도 get 방식으로요청한 것으로인식합니다. 앞에서도잠깐언급했지만 get 방식은서버로데이터가전송될때주소창을타고넘어가기때문에보안에취약합니다. 그렇기때문에로그인폼을만들면서 get 방식을사용한다면회원이입력한암호가그대로노출됩니다. 그래서 get 혹은 post를선택할수있는일반적인폼에서는 post 방식을사용하는것이일반적입니다. 반면폼이아닌 <a> 태그를통해서도페이지를이동할수있는데, 이렇게하이퍼링 크를통해서서버가요청되는경우에는무조건 get 방식으로요청됩니다 장서블릿과 JSP 개요 55
30 doget() 메소드는 throws 절로메소드에서발생하는 IOException, Servlet Exception 예외를외부에서처리하도록정의되어있고두개의매개변수를갖습 니다. HttpServletRequest 형으로선언된첫번째매개변수는클라이언트의요청 (request) 을처리하고, HttpServletResponse 형으로선언된두번째매개변수는 요청처리결과를클라이언트에게되돌리기 ( 응답하기, response) 위해사용됩니다. 서버가요청에대한처리를마치고클라언트에게결과를되돌려주기위해서는아 래와같이 doget() 혹은 dopost() 의두번째매개변수인 HttpServletRequest 로부 터 PrintWriter 형의출력스트림객체를얻어와야합니다. public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getwriter(); } 요한페이지를위한로직이나데이터베이스와의연동을위해필요한것들을포함합니다. 이러한서버페이지에서실행되는로직을구현하기위해서는프로그래밍언어가필요한데, JSP에서는자바를사용하고있습니다. 여기서말하는자바는우리가알고있는썬마이크로시스템즈 ( 현오라클로변경 ) 의 자바 를말합니다. 즉 JSP에서는자바언어로로직 ( 프로그램 ) 을구현합니다. 다음은서블릿클래스를학습하면서살펴본두수에대한합을구하여결과를출력하는예제를 JSP로변환한예입니다. 이예제를실행하기위해서는주소입력란에서직접 JSP 페이지를기술하여실행합니다. 또한아래와같이 PrintWriter 출력스트림객체의 println() 을호출하면브라우 저에 HTML 코드를보내주어결과를얻어볼수있게됩니다. public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getwriter(); out.println("<html><head><title>additon</title></head>"); } 자바의문법적인형태를그대로닮은서블릿에대해서살펴보았으니이제같은목 적을위해나왔지만자바의성격은거의느끼지못하는 HTML 과유사한 JSP 의전반 적인개요에대해서살펴보도록하겠습니다. JSP JSP 는 Java Server Page 의줄임말로자바로서버페이지를작성하기위한언어입니 다. HTML 과 JSP 태그 ( 스크립트릿 ) 로구성되어화면을작성하는데유리한웹프로 그래밍기술입니다. 서버페이지는웹서버에서실행되는페이지를말하며요청에필 두수에대한합을구하여결과를출력하는 JSP [ 파일이름 : addition02.jsp] <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <html> <head> <title>addition</title> </head> <body> <% int num1 = 20; int num2 = 10; int add = num1 + num2; %> <%=num1%>+<%=num2%>=<%=add%> </body> </html> 앞에서이클립스로 JSP 페이지를만들고실행하는방법을알려주었는데, 그방법 대로여러분이직접 JSP 페이지를만들고실행해보기바랍니다. 위 JSP 예제를살 펴보면서블릿과는사뭇다르다는것을느낄것입니다. 서블릿은자바코드내부에 56 1 장서블릿과 JSP 개요 57
31 HTML 코드가들어가는구조이지만, JSP 는이와반대로 HTML 문서내부에자바코 드가들어가는구조입니다. HTML 문서일부분에서자바를사용할수있도록하기위해서 JSP 는다양한태그 를제공합니다. 위예 (addition02.jsp) 에서는 page %> 태그가사용되었는데이 태그는해당페이지내에사용되는전반적인환경을결정해주는태그입니다. 이페이 지에서 language="java" 는사용하는언어가자바이며 contenttype="text/html"; 은이페이지가 html 문서이며 charset=utf-8 pageencoding="utf-8" 은한글인코 딩을 UTF-8 로처리하겠다는의미입니다. <% %> 태그를스크립트릿 scriptlet 이라고하고 <%= %> 태그는표현식 (expression) 이라고합니다. JSP 페이지에기술한내용은 HTML 로간주되기때문에자바코드를 기술하기위해서는 <% %> 태그내부에기술해야하며변수에저장된값이나함수의 결과값을출력하기위해서는 <%= %> 태그를사용합니다. 자세한내용은뒤에서살펴 볼예정이니이런게있구나정도만기억하고넘어가시기바랍니다. 서블릿과 JSP 를비교해보면 JSP 로개발하는편이훨씬쉽고간단하다는것을알 수있을것입니다. 그렇다면서블릿은필요없을까요? 지금까지살펴본예제에서는 로직이복잡하지않기때문에 HTML 코드중심의구조인 JSP 로페이지를개발하는 것이효율적으로보이지만쇼핑몰과같은웹애플리케이션을개발하다보면복잡한 자바코드가기술되어야하는데, 이를 JSP 페이지에기술해두면디자이너가실수로 코드를건드려문제가발생하게됩니다. 그렇기때문에실무에서는아래에서보여주는예 (AdditonServlet03.java, addition03.jsp) 와같이복잡한로직은서블릿에기술해놓고결과만을 JSP 페이지 를통해클라이언트에제공하는형태로개발합니다. 두수에대한합을구하는서블릿클래스 [ 파일이름 : unit03\additonservlet03.java] package unit02; import java.io.ioexception; import javax.servlet.*; import javax.servlet.annotation.webservlet; import public class AdditonServlet03 extends HttpServlet { protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { int num1 = 20; int num2 = 10; int add = num1 + num2; request.setattribute("num1", num1); request.setattribute("num2", num2); request.setattribute("add", add); RequestDispatcher dispatcher = request.getrequestdispatcher("02_addition.jsp"); dispatcher.forward(request, response); } } AdditonServlet03 클래스의내용은 AdditonServlet01.java 내용보다간단합니 다. 이클립스에서자동으로생성해주는클래스에는불필요한내용이많기때문에코 드길이가길어져서이해하기힘들어질수있기때문에필요한내용만남겨두고정 리해둔것입니다. 이후에나오는서블릿클래스도이와마찬가지로이클립스에서생 성해준코드보다는훨씬간단한형태일것입니다. 직접만든서블릿클래스와내용이 다르다고혼동하지말기바랍니다. 두수의합을출력하는 JSP [ 파일이름 : addition03.jsp] <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <html> <head> <title>addition</title> </head> <body> ${num1}+${num2}=${add} </body> </html> 58 1 장서블릿과 JSP 개요 59
32 AdditonServlet03.java 에서는두수에대한합을구하는자바코드를기술하고 출력할데이터를 request 객체의속성값으로저장한후서버상에서페이지가이동 되는포워드방식으로 addition03.jsp 페이지로이동을하면 addition03.jsp 페이지 퀴즈로정리합시다 에서는 request 객체에저장된속성값을얻어와출력해줍니다. 포워드방식은 4 장에 서자세히학습합니다. 이와같이로직과표현을분리하여프로그래밍을하는것을 MVC 패턴이라고합니다. 서블릿이비즈니스로직을구현하는 Model 역할을하고 JSP가결과를출력하는 View 역할을하고있습니다. MVC 패턴으로웹프로그래밍을하는것은복잡하고까다로운것이므로서블릿과 JSP 문법을다습득한후에다루도록하겠습니다. 문제의답은로드북홈페이지 ( 에서확인할수있습니다. 1. 다음 Java 기술중웹애플리케이션을지원하며 HTML과 JSP 태그 ( 스크립트릿 ) 로구성되어화면을작성하는데유리한것은? 1 JSP 2 Servlet 3 Java Bean 4 JDBC 2. 웹서버와웹애플리케션서버가무엇인지개념을설명하시오. 3. 알고있는 WAS 를모두기술하시오. 4. 어떤식으로요청을하면 doget 메소드가호출되는지사례를들어설명하시오. 5. 서블릿과 JSP 의차이점을기술하시오. 6. 한글인코딩은무엇이며왜해야하는지설명하시오. 7. localhost 는자신의컴퓨터를지칭하는도메인네임이다. 이도메인네임에대응되 는 IP 주소는무엇인가? 8. 웹프로그래밍을하기위해 WAS 서버로톰켓 (tomcat) 을사용했을때에, 사용할 웹포트번호를변경하기위해수정해야할파일명은 ( ) 이다. 9. Tomcat 에대한설명으로바른것은? 1 Apache Software Foundation 에서개발한서블릿 /JSP 컨테이너 2 C 언어로구현된 HTTP 웹서버 3 오픈소스의통합개발환경 4 Java 플랫폼 60 1 장서블릿과 JSP 개요 61
33 도전해보세요 문제의답은로드북홈페이지 ( 에서확인할수있습니다. 자신의이름을출력하는 JSP 작성하기 2 장 서블릿의기초 목표이클립스에서워크스페이스 (self_study) 를생성하고서버를설정하고웹프로젝트 (self-study-01) 를새롭게만들고환경설정을하며 JSP 파일 (name.jsp) 을만들어실행하는과정을익힙니다. 난이도중힌트새롭게워크스페이스를만들경우 [File Switch Workspace Other] 를선택하여야합니다. 또한톰캣서버도새롭게등록해야합니다. 이장을시작하기전에 이제서블릿을본격적으로학습할시간입니다. 서블릿의라이프사이클을잘알고있다면 서블릿에서한글처리와데이터통신을잘할수있다면 get 방식과 post 방식을자세하게알고싶다면이장을꼭보셔야합니다. 폼을만들어데이터를가져와서브라우저에표현하는서블릿을능숙하게만들수있다면, 다음장으로건너뛰어도좋습니다 장
34 서블릿프로그램을만들어보자 복잡한개념을먼저설명하기전에우선서블릿이라는프로그램을한번만들어봅시 다. 보통처음프로그래밍언어를배울때처럼여기에서도역시 Hello Servlet 을 3. URL Mapping이란서블릿을동작시키기위해서실제자바클래스이름대신에사용하는문자열을말합니다. 즉그문자열을부르면맵핑된해당서블릿이호출되는것이죠. [URL mappings:] 목록에서항목을선택한후 [Edit] 버튼을클릭합니다. [URL Mappings] 창이나타나면 [Pattern:] 입력란에패턴명 (/hello) 을입력한후에 [OK] 버튼을클릭합니다. 출력하기위한서블릿클래스를만들어보겠습니다. 또한서블릿을요청하기위한 URL Mapping( 바로뒤에설명 ) 을실제자바클래스 명과는다른이름으로지정하는방법도알아보겠습니다. [ 직접해보세요 ] Dynamic Web Project 만들고서블릿만들기 1. [File New Dynamic Web Project] 를선택하여프로젝트이름 (web-study-02) 을입력합니다. [Project Explorer] 에서새로생성된웹프로젝트 (web-study-02) 를클릭하여선택한후 [New Servlet] 을선택합니다. 4. 이번에작성하는서블릿클래스는브라우저의주소란에서블릿이름을직접입력해서실행시키는 get 방식으로요청할것이므로 doget만체크한후 [Finish] 버튼을클릭합니다. 2. [Create Servlet] 창이나타나면패키지 (unit01) 와서블릿클래스이름 (HelloServlet) 을입력한후 [Next] 버튼을클릭합니다. 5. 다음과같은서블릿클래스가생성됩니다 장서블릿의기초 65
35 out.print("</h1></body></html>"); out.close(); } } 4 : 출력스트림인 PrintWriter를사용하기위해서는 import를해야하는데, 이클립스에서는 [Ctrl+Shift+ 오우 ( 알파벳 )] 을누르면자동으로 import됩니다. 혹시 PrintWriter를입력하는동안에 import 구문이자동으로추가될수도있으므로컴파일에러메시지가나타날경우에만 [Ctrl+Shift+ 오우 ( 알파벳 )] 을눌러자동 import하면됩니다. 20~24 : 서블릿은실행결과를클라이언트에게 HTML 문서로응답해주기때문에 response로부터얻어온출력스트림인 out 객체의출력메소드인 print에일일이하드코딩한 HTML 태그를기술해주어야합니다. 24 : 출력스트림과같은자원들은사용이끝나면이를안전하게닫아주어야합니다. 6. 생성된서블릿클래스의 doget( ) 내부에클라이언트에게응답해줄메시지 ("Hello Servlet") 를 HTML 코드로작성합니다. package unit01; import java.io.ioexception; import java.io.printwriter; // PrintWriter 클래스사용을위한 import 문 import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import public class HelloServlet extends HttpServlet { private static final long serialversionuid = 1L; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { // 클라이언트에게응답할페이지정보를셋팅한다. response.setcontenttype("text/html"); // [Ctrl+Shift+ 오우 ( 알파벳 )] : 자동 import PrintWriter out=response.getwriter(); out.print("<html><body><h1>"); out.print("hello Servlet"); 참고 private static final long serialversionuid = 1L; 는무엇일까요? 자동으로추가된 14라인은클래스를구분하기위한값으로사람에게주민등록번호와같은역할을합니다. 객체의직렬화와같이객체에저장된데이터를일렬로입출력할때 JVM은같은클래스이름과버전 ID를가진객체를출력합니다. JVM은버전 ID가다른객체의직렬화된형태와연결하는것을거부합니다. 클래스는명시적으로 serialversionuid 필드를정의해클래스버전에따른고유번호를포함하기때문입니다. 7. 실행을하기위해서는서블릿클래스를선택한후에 [Run Run] 을선택합니다. 단축키를사용하고자할경우에는 [Ctrl + F11] 을누릅니다. 참고코드인사이트로코딩을손쉽게합시다. 코드편집과정에서클래스의앞부분 ( r ) 만입력한후에 [ 컨트롤 + 스페이스바 ] 를누르면해당스펠링으로시작되는클래스들을목록으로보여줍니다. 목록에서원하는클래스이름 ( response ) 을클릭하면코드가자동입력됩니다. 이를코드인사이트라고합니다 장서블릿의기초 67
36 언트에서비스가되는것입니다. 하나의웹서버는병원관리나학원관리, 영화예매관리, 온라인쇼핑몰등다양한서비스를제공할수있습니다. 이러한각각의서비스는개별적인웹애플리케이션으로작성해야하며웹애플리케이션하나당하나의프로젝트를생성합니다. 병원관리를위한웹애플리케이션은병원관리프로젝트로학원관리웹애플리케이션은학원관리프로젝트를개별적으로생성합니다. 이클립스에서생성하는하나의프로젝트는하나의웹애플리케이션이됩니다. 까지입력하여웹서 코드를입력하다보면팝업창에해당클래스가갖고있는메소드나멤버변수들이나타나는것을볼수있는데이는프로그래머가메소드의이름을일일이입력해야하는불편함을해소시켜줍니다. response.set 까지입력하고 [ 컨트롤 + 스페이스바 ] 를클릭하면해당스펠링으로시작되는메소드목록을보여줍니다. 목록에서원하는메소드 (setcontenttype) 를선택하면코드가자동으로입력됩니다. 버까지접근했다면어떤서비스를받을지에따라그이후에기술되는내용이달라지는데, 이후에기술하는문자열을컨텍스트패스라고하고이에의해서요청되는웹애플리케이션이달라집니다. 컨텍스트패스 Context Path란개념을다시정리해서말하자면웹서버에서제공하는다양한웹애플리케이션을구분하기위해서사용하는것입니다. 병원관리를위한 웹애플리케이션을위한병원관리프로젝트를 hospital 이란이름으로이클립스에서 생성하면 hospital 이란컨텍스트패스가추가되고외부에서이애플리케이션에접근 할때에는다음과같은 URL 을입력합니다. hospital 병원관리애플리케이션에접근하기위한컨텍스트패스 영화예매웹애플리케이션을 movie 란이름으로프로젝트를생성하면 movie 란 서블릿을요청하기위한 URL은다음과같습니다. web-study-02 / hello 켄텍스트패스서블릿요청 URL 패턴서블릿을요청하기위한 URL에서 는웹서버에접속하기위한 IP 주소이고 8181은톰캣을설치하면서지정한포트번호입니다. 그렇기때문에 localhost:8181 은톰캣서버에접속하겠다는의미입니다. 컴퓨터가웹서버로동작하도록하기위해서 1장에서 WAS의한종류인톰캣서버를설치했습니다. 우리가작성하는웹애플리케이션은톰캣서버에의해서클라이 컨텍스트패스가추가되고외부에서이애플리케이션에접근할때에는다음과같은 URL 을입력합니다. movie 영화예매애플리케이션에접근하기위한컨텍스트패스 톰캣서버에서클라이언트에게웹애플리케이션을서비스해주기위해서는톰캣 서버에웹애플리케이션을등록해야합니다. 등록방법은톰캣서버의 server.xml 파 일의 <Context> 태그를사용하여컨텍스트패스를추가합니다 장서블릿의기초 69
37 <Context docbase="web-study-02" path="/web-study-02" reloadable="true" source="org.eclipse.jst.jee.server:web-study-02" /> 뒤에추가되어한줄에 <Context> 태그가여러번기술되기때문에스크롤바를움직 여오른쪽끝으로가야보입니다. 이클립스를사용하지않고웹애플리케이션을개발할때에는일일이 <Context> 태그를개발자가기술해야했지만이클립스는컨텍스트패스를프로젝트단위로자동생성해줍니다. 톰캣서버의환경설정을위한 server.xml 파일을열어보면이클립스에서자동으로추가해주는컨텍스트패스를확인할수있습니다. 나중에추가된웹프로젝트에대한 <Context> 태그를찾으려면스크롤바를움직여서오른쪽끝으로가서확인하는번거로운작업을반복해야하기때문에들여쓰기를하여 <Context> 태그가서로다른라인에출력되도록하면됩니다. 하지만들여쓰기를개발자가직접하는것이번거롭다면 [Source Format] 메뉴를선택하거나단축키인 [Ctrl+Shift+F] 를사용하면코드가자동으로들여쓰기가 server.xml 을이클립스에서열어보면위와같이나오지않고 1 장에서만든 <Context 됩니다. docbase="web-study-01".../> 만보이고 <Context docbase="web-study-02".../> 는보이지않습니다. 이러한현상이나타나는이유는 <Context> 태그가웹애플리케이션을최초로실 행시키면서추가되는데, 새로운 <Context> 태그가이미존재하는 <Context> 태그 <Context> 태그에 path 속성이바로서블릿을요청할때지정할 URL에기술할가상패스입니다. 앞의그림에서보면 path 속성값이프로젝트이름인 /webstudy-02 로지정되어있음을확인할수있습니다. 이클립스에의해 serever. xml 파일에자동추가된 <Context> 태그덕분에톰캣이컨텍스트패스 /webstudy-02 를인식할수있게됩니다. 이제위에서실습한서블릿클래스의구조에대해서살펴보도록합시다 장서블릿의기초 71
38 @WebServlet("/hello") public class HelloServlet extends HttpServlet { ➊ ➋ 그렇다면 URL 매핑을하는이유는뭘까요? } protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html"); PrintWriter out=response.getwriter(); out.print("<html><body><h1>"); out.print("hello Servlet"); out.print("</h1></body></html>"); out.close(); } ➌ ➍ ➎ ➏ ➐ 2 분만생각해봅시다 실제서블릿클래스를공개하지않기위해서입니다. 실제호출되는서블릿클래스 는 HelloServlet 이지만외부에서이서블릿을요청할때에는서블릿클래스이름이 아닌서블릿클래스와매핑된 URL 인 hello 로접근합니다. hello 어노테이션으로 URL 은서블릿 3.0에서부터제공되었으며서블릿클래스의요청을위한 URL 매핑을보다쉽게자바클래스에서설정할수있도록제공되는어노테이션입니다. 서블릿 3.0 이전에는 web.xml 에서매핑을했기때문에다소불편함이있었습니다. HelloServlet 클래스가요청을받는다. public class HelloServelt extends HttpServlet{ } 즉, 서블릿클래스를요청하기위해서브라우저의주소입력란에서블릿클래스이름대신 URL 매핑으로지정한이름을입력하여호출하기위한설정입니다. 이이름은서블릿클래스를생성하는단계에서직접지정한이름입니다. 어노테이션 (Annotation) Java 5.0부터 AT 사인 (@) 으로시작하는어노테이션이지원되었습니다. 어노테이션은문장이나문서에추가적인정보를기입하는것을말합니다. 자바프로그램에영향을주는것이아니라컴파일할때환경설정을변경해줄것을알려주는주석형태를말합니다. 이전에는환경설정을 XML 파일에서직접해왔습니다. 하지만 XML 파일을열어서일일이환경설정하는일이번거롭기도하고 XML 문법을시간내어학습해야만하기때문에개발자가직접 XML 파일에서작업하지않고자바코드에서어노테이션을사용하는방식으로쉽게환경을설정하기위해자바 5.0에서부터등장하게된것입니다. 어노테이션등장덕분에개발시간이단축되었습니다. URL Mapping 이란서블릿을동작시키기위해서실제자바클래스명 (HelloServlet) 을사용하는대신서블릿을요청하기위한문자열 (hello) 을서블릿클래스와매핑시키 는것을말합니다. 마지막에기술한 hello 는 URL pattern 어노테이션에의해서 자바클래스명인 HelloServlet 대신 hello 로서블릿을요청할수있습니다 장서블릿의기초 73
39 참고개발자가어노테이션으로패턴을지정하는것과이클립스에서직접패턴을지정하는것의차이가있나요? 개발자가 URL pattern을이클립스메뉴에서변경하든하지않았든, 사용자가서블릿을요청하기위해서는브라우저주소입력란에 URL pattern을기술해야만서블릿이요청됩니다. URL Mapping 없이는서블릿을호출하지못합니다. 개발자는자신이만든서블릿클래스가어느경로에무슨이름으로만들어졌는지알아야하지만클라이언트는어느디렉토리에어느파일명으로존재하는지는관심없고 URL 이름을입력하여원하는서비스만받을수있으면됩니다. 만일사용자가서블릿의실제경로와파일이름을직접입력해야한다면디렉토리구조가바뀌었을때사용자에게일일이변경된위치를통보해주어야합니다. 개발자가아닌사용자가실제개발구조를다알아야만사용할수있다면수정된내용을다알고있어야합니다. 하지만매핑을통해사용자가접근하는 URL 이름은실제물리적인위치정보가아니기에이런문제에유연하게대처할수있게됩니다. 또한사용자에게디렉토리구조와파일명을모두공개한다는것은보안측면에서도심각한문제가발생할수있습니다. 요청은 URL pattern으로하고 hello 서블릿요청 URL 어노테이션코드의 URL Mapping에서찾아서일치하면이 URL Mapping HelloServlet 클래스가요청을받는다. public class HelloServelt extends HttpServlet{ } 개발자가직접패턴을지정하지않아도서블릿클래스를생성하면서자동으로서블릿클래스이름을 URL 어노테이션코드가추가되어있습니다. 왜냐하면서블릿요청은 URL pattern으로해야하고이렇게패턴으로요청하면패턴과매핑해놓은서블릿이호출되기때문입니다. 우리가이클립스메뉴를열어서패턴을바꾼것은서블릿클래스이름과동일한패턴을사용하지않고전혀다른이름으로서블릿을호출하기위한작업입니다. 어노테이션코드내의패턴이름만바뀐것입니다. WebServlet 어노테이션코드를통해서만 URL pattern과클래스이름이매핑됩니다. 서블릿클래스정의하기 1 장에서이미언급한대로서블릿클래스를정의하는것은정형화되어있습니다. 새 롭게서블릿클래스를정의하기위해서는 javax.servlet.http 패키지에서제공하는 HttpServlet(➋) 클래스를상속받아구현해야하고브라우저를통해외부에서실행 되기때문에접근제한자는반드시 public(➋) 이어야합니다. 접근제한자는반드시 public 이어야함 public class HelloServelt extends HttpServlet { } 서블릿클래스이름 HttpServlet 의상속을받아야함 우스운질문일수있겠으나, 왜서블릿은위와같이정형화한형태를띄게된걸까 요? 그냥일반자바클래스처럼만들면안될까요? 다시한번언급하지만 URL Mapping은 URL pattern과서블릿클래스이름을매핑해놓는것을의미합니다. 1 분만생각해봅시다 개발자가 URL ") public class HelloServlet extends HttpServlet { } 개발자가 URL ") public class HelloServlet extends HttpServlet { } 서블릿이정형화되어있다는말은자바클래스에서사용하던상속이란개념을그대로사용하는데자바클래스에서는어떤클래스의상속을받아도되지만서블릿클래스는 HttpServlet 클래스의상속만을받아야하는것으로정해디져있다는것을말합니다 장서블릿의기초 75
40 요청메소드 1장에서설명한것처럼요청방식에따라 doget() 혹은 dopost() 가호출되기때문에요청방식에맞추어서 HttpServlet 클래스의 doget() 혹은 dopost() 를오버라이딩해야합니다. 이메소드는요청이되면호출되기때문에요청메소드라고불리기도합니다. 참고 요청 request 응답 response 클라이언트의요청이있을때마다 doget 메소드가자동호출된다. HttpServlet 을상속받은서브클래스 (HelloServlet) doget 웹서버 HttpServletRequest 객체에의해서요청이처리되고 HttpServletResponse 객체에의해서처리결과가전달된다. 오버라이딩을기억하시나요? 자바의클래스들은부모 ( 수퍼 ) 클래스에모든필드나메소드를상속받아사용합니다. 상속받아사용하던메소드의기능을더이상사용하지않고자식 ( 서브 ) 클래스에서새롭게메소드를정의해서사용하는것을오버라이딩이라고합니다. 참고로위의서블릿은 get 방식으로만요청을처리하는데, 하나의서블릿이라도 get 과 post 방식에따라서로다른기능을제공해야하는경우도있기때문에그럴 경우에는 doget() 과 dopost() 를모두오버라이딩해야합니다. 응답객체에콘텐트타입지정하기 우리가처음으로작성할서블릿은브라우저의주소란에직접서블릿이름을입력 하여수행시킬것이기때문에 HttpServlet 의 doget() 을오버라이딩 (➌) 하여처리를 위한코드를입력하겠습니다. HttpServletResponse 객체인 response 로 setcontenttype() 메소드 (➍) 를호출하 여클라이언트에게응답할페이지에대한환경설정을결정해주어야합니다. 응답 방식이 text/html 로지정되어있으므로 text 나 html 로보여주겠다는의미입니다. 요청처리 응답처리 참고 public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException, { 예외처리 } doget() 은두개의매개변수 (HttpServletRequest, HttpServletResponse) 를갖습니다. HttpServletRequest는클라이언트의요청 (request) 을처리하고, 서블릿의실행방식일반적인자바클래스를실행하기위해서는 main 메소드가있는클래스에서객체를생성하여실행해야합니다. 하지만서블릿은이런방식으로실행되지않고웹서버가실행을해주는독특한방식을갖습니다. 서블릿은 Event-Driven Programming으로사용자의요청이들어오면동작 ( 실행 ) 을시작합니다. 요청이들어오면톰캣서버가서블릿객체를생성한후에 init( ) 메소드를호출한후요청방식에따라 doget( ) 혹은 dopost( ) 메소드가호출됩니다. 뒤에자세하게배우게되니지금은이정도만알고넘어갑시다. HttpServletResponse 는요청처리결과를클라이언트에게되돌리기 ( 응답하기, response) 위해사용됩니다. doget() 은반드시예외처리 (IOException, Servlet Exception) 를해주어야하는데, 일반적으로 throws 절을이용해서 doget 메소드를 결과로출력할내용이한글일경우인코딩방식을지정하지않으면한글이깨지는 현상이나타납니다. 호출한웹서버에게예외처리를넘깁니다 장서블릿의기초 77
혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가
혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에
More informationMicrosoft Word - ntasFrameBuilderInstallGuide2.5.doc
NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,
More information다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher
More informationB.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위
B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위해서설치한다. http://www.microsoft.com/ko-kr/download에접속해
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More information1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과
1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas
More information2장 변수와 프로시저 작성하기
Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.
More informationMicrosoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 Eclipse (IDE) JDK Android SDK with ADT IDE: Integrated Development Environment JDK: Java Development Kit (Java SDK) ADT: Android Development Tools 2 JDK 설치 Eclipse
More information본 강의에 들어가기 전
웹서버프로그래밍 2 JSP 개요 01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationView Licenses and Services (customer)
빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차
More information슬라이드 1
전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new
More informationStuduino소프트웨어 설치
Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...
More information4S 1차년도 평가 발표자료
모바일 S/W 프로그래밍 안드로이드개발환경설치 2012.09.05. 오병우 모바일공학과 JDK (Java Development Kit) SE (Standard Edition) 설치순서 Eclipse ADT (Android Development Tool) Plug-in Android SDK (Software Development Kit) SDK Components
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More informationPowerPoint 프레젠테이션
실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)
More informationJAVA 플랫폼 개발 환경 구축 및 활용
페이지 1 / 9 작성일 : 2011/7/30 JDK Download Eclipse IDE 구축및홗용 For Java JDK Download JDK Setting the Path Eclipse Download Eclipse Font Setting Eclipse API Setting > 1. http://www.oracle.com/index.html
More information슬라이드 1
- 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.
More informationISP and CodeVisionAVR C Compiler.hwp
USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler
More informationMicrosoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx
To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 개발환경구조및설치순서 JDK 설치 Eclipse 설치 안드로이드 SDK 설치 ADT(Androd Development Tools) 설치 AVD(Android Virtual Device) 생성 Hello Android! 2 Eclipse (IDE) JDK Android SDK with
More informationMicrosoft PowerPoint - GUI _DB연동.ppt [호환 모드]
GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가
More informationMicrosoft Word - windows server 2003 수동설치_non pro support_.doc
Windows Server 2003 수동 설치 가이드 INDEX 운영체제 설치 준비과정 1 드라이버를 위한 플로피 디스크 작성 2 드라이버를 위한 USB 메모리 작성 7 운영체제 설치 과정 14 Boot Sequence 변경 14 컨트롤러 드라이버 수동 설치 15 운영체제 설치 17 운영체제 설치 준비 과정 Windows Server 2003 에는 기본적으로
More information쉽게 풀어쓴 C 프로그래밊
Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.
More informationMicrosoft Word - src.doc
IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...
More informationSBR-100S User Manual
( 1 / 13 ) SBR-100S 모델에 대한 사용자 펌웨어 업그레이드 방법을 안내해 드립니다. SBR-100S 는 신규 펌웨어가 있을시 FOTA(자동업데이트) 기능을 통하여 자동 업그레이드가 되며, 필요시 사용자가 신규 펌웨어를 다운받아 수동으로 업그레이드 할 수 있습니다. 1. 준비하기 1.1 연결 장치 준비 펌웨어 업그레이드를 위해서는 SBR-100S
More information중간고사
중간고사 담당교수 : 단국대학교응용컴퓨터공학박경신 답은반드시답안지에기술할것. 공간이부족할경우반드시답안지몇쪽의뒤에있다고명기한후기술할것. 그외의경우의답안지뒤쪽이나연습지에기술한내용은답안으로인정안함. 답에는반드시네모를쳐서확실히표시할것. 답안지에학과, 학번, 이름외에본인의암호 (4자리숫자 ) 를기입하면성적공고시학번대신암호를사용할것임. 1. JSP 란무엇인가? 간단히설명하라.
More informationMicrosoft PowerPoint - aj-lecture1.ppt [호환 모드]
인터넷과웹서비스 개발환경구성, JSP 기본구조 인터넷과 WWW(World Wide Web) 인터넷은 TCP/IP 기반의네트워크가전세계적으로확대되어하나로연결된 네트워크의네트워크 WWW(World Wide Web) 는인터넷기반의서비스중하나 이름프로토콜포트기능 WWW http 80 웹서비스 524730-1 2019 년봄학기 3/11/2019 박경신 Email SMTP/POP3/IMAP
More informationJDK이클립스
JDK 와이클립스설치 A. JDK 다운로드, 설치및환경설정 지금부터 JDK를다운로드받아설치하고 JDK를윈도우에서활용할수있도록환경을설정하는전과정을소개한다. 다운로드 www.oracle.com 사이트에접속하여 Downloads 메뉴를선택한후 [ 그림 1] 과같이 "Java for Developers" 를클릭한다. [ 그림 1] www.oracle.com 사이트
More information데이터베이스_오라클_부록(최종).indd
C JDK, 이클립스, 톰캣설치 http://www.oracle.com/ 에접속하여상단메뉴에서 [Downloads] 를한다. Downloads 페이지의 Java 섹션에서다시 [Java SE] 를한다. C. 설치개요이절에서는 5장데이터베이스프로그래밍실습에필요한 JDK, 이클립스, 톰캣의설치방법을알아본다. JDK는 Java Development Kit의약자로자바언어를사용하기위한개발도구다.
More information에접속하여상단메뉴에서 [DOWNLOADS] 를클릭한다. 다운로드페이지에서 Java 카테고리에있는 [Java SE] 를클릭하고페이지가바뀌면 [Java Platform (JDK)] 를클릭한다. JDK 버전은다운로드하는시점에따라다를수
B JDK, 이클립스, 톰캣설치 B. 설치개요이절에서는 5장데이터베이스응용 실습에필요한 JDK, 이클립스, 톰캣의설치방법을알아본다. JDK는 Java Development Kit의약자로자바를사용하기위한개발도구다. 이클립스 eclipse 는이클립스재단에서개발 배포하는범용 IDE( 통합개발환경 ) 로자바프로그램의개발시사용한다. 톰캣 tomcat 은아파치재단에서개발하고있는
More informationNTD36HD Manual
Upnp 사용 D7 은 UPNP 를지원하여 D7 의네크워크에연결된 UPNP 기기에별다른설정없이연결하여, 유무선으로네트워크상의연결된 UPNP 기기의콘텐츠를재생할수있습니다. TV 화면의 브라우저, UPNP 를선택하면연결가능한 UPNP 기기가표시됩니다. 주의 - UPNP 기능사용시연결된 UPNP 기기의성능에따라서재생되지않는콘텐츠가있을수있습니다. NFS 사용 D7
More information아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상
Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는
More information14-Servlet
JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server
More informationvRealize Automation용 VMware Remote Console - VMware
vrealize Automation 용 VMware Remote Console VMware Remote Console 9.0 이문서는새버전으로교체되기전까지나열된각제품버전및모든이후버전을지원합니다. 이문서에대한최신버전을확인하려면 http://www.vmware.com/kr/support/pubs 를참조하십시오. KO-002230-00 vrealize Automation
More information소프트웨어공학 Tutorial #2: StarUML Eun Man Choi
소프트웨어공학 Tutorial #2: StarUML Eun Man Choi emchoi@dgu.ac.kr Contents l StarUML 개요 l StarUML 소개및특징 l 주요기능 l StarUML 화면소개 l StarUML 설치 l StarUML 다운 & 설치하기 l 연습 l 사용사례다이어그램그리기 l 클래스다이어그램그리기 l 순서다이어그램그리기 2
More informationJavaGeneralProgramming.PDF
, Java General Programming from Yongwoo s Park 1 , Java General Programming from Yongwoo s Park 2 , Java General Programming from Yongwoo s Park 3 < 1> (Java) ( 95/98/NT,, ) API , Java General Programming
More information<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770>
[ 퀴즈로정리합시다 ]_ 정답 _1 장 1. 1 JSP 해설 : JSP는웹애플리케이션을지원하는 Java 지원기술입니다. JSP = HTML + JSP 태그 ( 스크립트릿 ) 웹서버는클라이언트의요청을받으면해당처리를하여클라이언트에결과페이지를응답해줄수있도록구성된서버또는그서버가설치된컴퓨터를의미합니다. 웹애플리케이션서버는웹서버만으로는데이터베이스와연동되어처리되어야하는동적인데이터들을처리해낼수없기때문에
More informationPowerPoint Template
설치및실행방법 Jaewoo Shim Jun. 4. 2018 Contents SQL 인젝션이란 WebGoat 설치방법 실습 과제 2 SQL 인젝션이란 데이터베이스와연동된웹서버에입력값을전달시악의적동작을수행하는쿼리문을삽입하여공격을수행 SELECT * FROM users WHERE id= $_POST[ id ] AND pw= $_POST[ pw ] Internet
More informationInstall stm32cubemx and st-link utility
STM32CubeMX and ST-LINK Utility for STM32 Development 본문서는 ST Microelectronics 의 ARM Cortex-M 시리즈 Microcontroller 개발을위해제공되는 STM32CubeMX 와 STM32 ST-LINK Utility 프로그램의설치과정을설명합니다. 본문서는 Microsoft Windows 7
More information1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아
LG U+ SMS/MMS 통합클라이언트 LG U+ SMS/MMS Client Simple Install Manual LG U+ SMS/MMS 통합클라이언트 - 1 - 간단설치매뉴얼 1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml
More informationAPI STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum
API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 2012.11.23 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Document Distribution Copy Number Name(Role, Title) Date
More information목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault
사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash
More informationI 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
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 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 Jakarta is a Project of the Apache
More information뇌를 자극하는 JSP & Servlet 슬라이드
JSP 와서블릿 Servlet & JSP 2/78 Contents 학습목표 JSP 기술과서블릿기술의기초를배워본다. 내용 JSP와서블릿에대하여 JDK 설치하기 톰캣설치하기 간단한 JSP 페이지작성하기 3/78 1. JSP 와서블릿에대하여 웹브라우저의요청을받아해당하는웹페이지를찾아서보내주는일을하는컴퓨터 ( 일 을하는소프트웨어 ) 를웹서버라고한다. 웹브라우저와웹서버
More informationResearch & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W
Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments
More information제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호
제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법
More informationMicrosoft Word - Armjtag_문서1.doc
ARM JTAG (wiggler 호환 ) 사용방법 ( IAR EWARM 에서 ARM-JTAG 로 Debugging 하기 ) Test Board : AT91SAM7S256 IAR EWARM : Kickstart for ARM ARM-JTAG : ver 1.0 ( 씨링크테크 ) 1. IAR EWARM (Kickstart for ARM) 설치 2. Macraigor
More information<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC
내장객체의정리 헷갈리는내장객체들정리하기 - 컨테이너안에서는수많은객체들이스스로의존재목적에따라서일을한다. - ServletContext, ServletConfig 객체는컨텍스트초기화와서블릿초기화정보를가지고있다. - 이외에도다음의객체들이서블릿과 JSP와 EL에서각각의역할을수행한다. 서블릿의객체 JspWriter HttpServletRequest HttpServletResponse
More informationPathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.
PathEye Mobile Ver. 0.71b 2009. 3. 17 By PathEye 공식 블로그 다운로드 받으세요!! http://blog.patheye.com 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다. PathEye 설치 1/3 최종 배포 버전을 다 운로드 받습니다. 다운로드된 파일은 CAB 파일입니다. CAB 파일에는
More information슬라이드 1
Subclipse 1. 도구개요 2. 설치및실행 3. 주요기능 4. 활용예제 1. 도구개요 도구명 Subclipse (http://subclipse.tigris.org/) 라이선스 Eclipse Public License v1.0 소개 Subversion( 이하 svn) 용 Eclipse 플러그인 SVN 을만든 Tigris.org 에서만든클라이언트툴 Java
More information윈도우시스템프로그래밍
데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationJ2EE Concepts
! Introduction to J2EE (1) - J2EE Servlet/JSP/JDBC iseminar.. 1544-3355 ( ) iseminar Chat. 1 Who Are We? Business Solutions Consultant Oracle Application Server 10g Business Solutions Consultant Oracle10g
More information아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다
공유기사용환경에서 MNC-V100 환경설정하기 다음설명은 AnyGate GW-400A (Http://www.anygate.co.kr) 를사용하는네트워크환경에서 MNC-V100 을연결하여사용하는법을설명합니다. 공유기내부네트워크환경설정공유기를사용하는환경에서공유기의설정을아래그림과같이설정하시면 MNC-V100의설정을변경하지않아도모비캠과연결할수있습니다. ( 공유기의환경을변경하기어려운경우에는
More informationtiawPlot ac 사용방법
tiawplot ac 매뉴얼 BORISOFT www.borisoft.co.kr park.ji@borisoft.co.kr HP : 00-370-077 Chapter 프로그램설치. 프로그램설치 3 2 Chapter tiawplot ac 사용하기.tiawPlot ac 소개 2.tiawPlot ac 실행하기 3. 도면파일등록및삭제 4. 출력장치설정 5. 출력옵션설정
More information슬라이드 1
Tadpole for DB 1. 도구개요 2. 설치및실행 4. 활용예제 1. 도구개요 도구명 소개 Tadpole for DB Tools (sites.google.com/site/tadpolefordb/) 웹기반의데이터베이스를관리하는도구 Database 스키마및데이터관리 라이선스 LGPL (Lesser General Public License) 특징 주요기능
More informationserver name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지
ArcGIS for Server (Windows) 설치가이드 ArcGIS 10.2 for Server 설치변경사항 1 설치 간편해진설치 -.Net Framework나 Java Runtime 요구하지않음 - 웹서버 (IIS, WebSphere ) 와별도로분리되어순수하게웹서비스기반의 GIS 서버역할 - ArcGIS Server 계정을이용한서비스운영. 더이상 SOM,
More informationJSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른
JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른 URL로바꿀수있다. 예 ) response.sendredirect("http://www.paran.com");
More information을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을
안드로이드설치및첫번째예제 안드로이드설치 안드로이드개발킷은안드로이드개발자사이트 (http://developer.android.com/) 에서다운로드받을수있으며현재 1.5 버전으로윈도우즈, 맥 OS X( 인텔 ), 리눅스플랫폼패키지가링크되어져있다. 안드로이드개발킷을설치하기위해서는다음과같은시스템환경이갖추어져있어야한다. 플랫폼 Windows Mac Linux 지원환경
More informationMicrosoft Word - PLC제어응용-2차시.doc
과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,
More informationvar answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");
자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트
More informationBEA_WebLogic.hwp
BEA WebLogic Server SSL 설정방법 - Ver 1.0-2008. 6 개정이력 버전개정일개정내용 Ver 1.0 2008 년 6 월 BEA WebLogic Server SSL 설명서최초작성 본문서는정보통신부 한국정보보호진흥원의 보안서버구축가이드 를참고하여작성되었습니다. 본문서내용의무단도용및사용을금합니다. < 목차 > 1. 개인키및 CSR 생성방법
More informationEndpoint Protector - Active Directory Deployment Guide
Version 1.0.0.1 Active Directory 배포가이드 I Endpoint Protector Active Directory Deployment Guide 목차 1. 소개...1 2. WMI 필터생성... 2 3. EPP 배포 GPO 생성... 9 4. 각각의 GPO 에해당하는 WMI 연결... 12 5.OU 에 GPO 연결... 14 6. 중요공지사항
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information슬라이드 제목 없음
MS SQL Server 마이크로소프트사가윈도우운영체제를기반으로개발한관계 DBMS 모바일장치에서엔터프라이즈데이터시스템에이르는다양한플랫폼에서운영되는통합데이터관리및분석솔루션 2 MS SQL Server 개요 3.1 MS SQL Server 개요 클라이언트-서버모델을기반으로하는관계 DBMS 로서윈도우계열의운영체제에서만동작함 오라클관계 DBMS 보다가격이매우저렴한편이고,
More informationData Provisioning Services for mobile clients
4 장. JSP 의구성요소와스크립팅요소 제 4 장 스크립팅요소 (Scripting Element) 1) 지시문 (Directive) 1. JSP 구성요소소개 JSP 엔진및컨테이너, 즉 Tomcat 에게현재의 JSP 페이지처리와관련된정보를전달하는목적으로활용 (6 장 )
More informationgcloud storage 사용자가이드 1 / 17
gcloud storage 사용자가이드 1 / 17 문서버전및이력 버전 일자 이력사항 1.0 2016.12.30 신규작성 1.1 2017.01.19 gcloud storage 소개업데이트 1.2 2017.03.17 Container 공개설정업데이트 1.3 2017.06.28 CDN 서비스연동추가 2 / 17 목차 1. GCLOUD STORAGE 소개... 4
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationq 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2
객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가
More informationCubase AI installation guide
Steinberg Cubase AI 프로그램 및라이선스설치가이드 (2018. 1. 31) Ver. 1.0.0 1 목차 1. 계정만들기 2. Download access code 등록및 Activation Code 발급 3. Steinberg Download Assistant 다운로드및설치 4. Cubase AI 다운로드및설치 5. 라이선스활성화 (Activation)
More informationMF Driver Installation Guide
Korean MF 드라이버 설치설명서 사용자 소프트웨어 CD-ROM... 드라이버 및 소프트웨어 정보...1 지원되는 운영 체제...1 MF 드라이버 및 MF Toolbox 설치... [쉬운 설치]를 사용한 설치...2 [사용자 정의 설치]를 사용한 설치...10 USB 케이블 연결(USB를 이용해 연결하는 경우만)...20 설치 결과 확인...21 온라인
More information목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.
소프트웨어매뉴얼 윈도우드라이버 Rev. 3.03 SLP-TX220 / TX223 SLP-TX420 / TX423 SLP-TX400 / TX403 SLP-DX220 / DX223 SLP-DX420 / DX423 SLP-DL410 / DL413 SLP-T400 / T403 SLP-T400R / T403R SLP-D220 / D223 SLP-D420 / D423
More informationSpring Boot
스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...
More informationPowerPoint 프레젠테이션
HTML5 웹프로그래밍입문 부록. 웹서버구축하기 1 목차 A.1 웹서버시스템 A.2 PHP 사용하기 A.3 데이터베이스연결하기 2 A.1 웹서버시스템 3 웹서버의구축 웹서버컴퓨터구축 웹서버소프트웨어설치및실행 아파치 (Apache) 웹서버가대표적 서버실행프로그램 HTML5 폼을전달받아처리 PHP, JSP, Python 등 데이터베이스시스템 서버측에데이터를저장및효율적관리
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More informationMF5900 Series MF Driver Installation Guide
한국어 MF 드라이버설치설명서 사용자소프트웨어 CD-ROM................................................ 1.................................................................... 1..............................................................................
More information윈도우시스템프로그래밍
데이타베이스 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2013.05.15. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생
More information게시판 스팸 실시간 차단 시스템
오픈 API 2014. 11-1 - 목 차 1. 스팸지수측정요청프로토콜 3 1.1 스팸지수측정요청프로토콜개요 3 1.2 스팸지수측정요청방법 3 2. 게시판스팸차단도구오픈 API 활용 5 2.1 PHP 5 2.1.1 차단도구오픈 API 적용방법 5 2.1.2 차단도구오픈 API 스팸지수측정요청 5 2.1.3 차단도구오픈 API 스팸지수측정결과값 5 2.2 JSP
More informationWindows Server 2012
Windows Server 2012 Shared Nothing Live Migration Shared Nothing Live Migration 은 SMB Live Migration 방식과다른점은 VM 데이터파일의위치입니다. Shared Nothing Live Migration 방식은 Hyper-V 호스트의로컬디스크에 VM 데이터파일이위치합니다. 반면에, SMB
More information1
2/33 3/33 4/33 5/33 6/33 7/33 8/33 9/33 10/33 11/33 12/33 13/33 14/33 15/33 16/33 17/33 5) 입력을 다 했으면 확인 버튼을 클릭합니다. 6) 시작 페이지가 제대로 설정이 되었는지 살펴볼까요. 익스플로러를 종료하고 다시 실행시켜 보세요. 시작화면에 야후! 코리아 화면이 뜬다면 설정 완료..^^
More informationTCP/IP Model
Servlet HTTP Connection & Tomcat Server 숙명여자대학교 _ 멀티미디어과학과 2012 년여름학기 윤용익 yiyoon@sm.ac.kr 2012 Web Program Language Web page 작성용언어 CGI 와서블릿 CGI(Common Gateway Interface) 웹사이트에서방명록, 게시판을작성하기위해서는 HTML 문서와함께방명록이나게시판을위한프로그램도작성해야하는데이프로그램은
More informationAPI - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어
메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어서가장중요한부분이라고도할수있기때문입니다. 1. 새로운메크로생성 새메크로만들기버튺을클릭하여파일을생성합니다. 2. 메크로저장 -
More informationEclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일
Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae
More informationSIGIL 완벽입문
누구나 만드는 전자책 SIGIL 을 이용해 전자책을 만들기 EPUB 전자책이 가지는 단점 EPUB이라는 포맷과 제일 많이 비교되는 포맷은 PDF라는 포맷 입니다. EPUB이 나오기 전까지 전 세계에서 가장 많이 사용되던 전자책 포맷이고, 아직도 많이 사 용되기 때문이기도 한며, 또한 PDF는 종이책 출력을 위해서도 사용되기 때문에 종이책 VS
More informationSystem Recovery 사용자 매뉴얼
Samsung OS Recovery Solution 을이용하여간편하게 MagicInfo 의네트워크를설정하고시스템을백업및복원할수있습니다. 시스템시작시리모컨의 - 버튼이나키보드의 F3 키를연속해서누르면복구모드로진입한후 Samsung OS Recovery Solution 이실행됩니다. Samsung OS Recovery Solution 은키보드와리모컨을사용하여조작할수있습니다.
More informationMicrosoft PowerPoint - e pptx
Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells
More informationSpring Boot/JDBC JdbcTemplate/CRUD 예제
Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.
More informationOracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치
Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치 VirtualBox를 사용하기 위해서는 일단 https://www.virtualbox.org/wiki/downloads 사이트에서 윈도우용 버추얼박스 설치화일을 다운로드 해야합니다. Ubuntu를 사용하기 위해서는 Ubuntu 디스크 이미지 화일을 다운로드
More informationData Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager
Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager are trademarks or registered trademarks of Ari System, Inc. 1 Table of Contents Chapter1
More informationMicrosoft PowerPoint 웹 연동 기술.pptx
웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우
More informationOnTuneV3_Manager_Install
OnTuneV3.1 Manager 설치하기 # 사전준비사항 - Manager Version 3.1.6-2010-06-21 TeemStone 1. OnTune Manager를설치할 NT 서버 - Windows 2000, Windows 2003, Windows 2008, Windows XP, Windows Vista, Windows 7 등 Windows 2000이후모든
More information뇌를 자극하는 JSP & Servlet 슬라이드
속성 & 리스너 JSP & Servlet 2/39 Contents 학습목표 클라이언트요청에의해서블릿이실행될때에컨테이너에의해제공되는내장객체의종류와역할, 그리고접근범위특성등을알아본다. 웹컴포넌트사이의데이터전달을위한내장객체에서의속성설정과이에따른이벤트처리방법에대해알아본다. 내용 서블릿의초기화환경을표현하는 ServletConfig 객체 웹애플리케이션의실행환경을표현하는
More informationMicrosoft Word - 3부A windows 환경 IVF + visual studio.doc
Visual Studio 2005 + Intel Visual Fortran 9.1 install Intel Visual Fortran 9.1 intel Visual Fortran Compiler 9.1 만설치해서 DOS 모드에서실행할수있지만, Visual Studio 2005 의 IDE 를사용하기위해서는 Visual Studio 2005 를먼저설치후 Integration
More informationChapter 1
3 Oracle 설치 Objectives Download Oracle 11g Release 2 Install Oracle 11g Release 2 Download Oracle SQL Developer 4.0.3 Install Oracle SQL Developer 4.0.3 Create a database connection 2 Download Oracle 11g
More informationSQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자
SQL Developer Connect to TimesTen 유니원아이앤씨 DB 팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 2010-07-28 작성자 김학준 최종수정일 2010-07-28 문서번호 20100728_01_khj 재개정이력 일자내용수정인버전
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
More informationJDBC 소개및설치 Database Laboratory
JDBC 소개및설치 JDBC } What is the JDBC? } JAVA Database Connectivity 의약어 } 자바프로그램안에서 SQL 을실행하기위해데이터베이스를연결해주는응용프로그램인터페이스 } 연결된데이터베이스의종류와상관없이동일한방법으로자바가데이터베이스내에서발생하는트랜잭션을제어할수있도록하는환경을제공 2 JDBC Driver Manager }
More informationPowerPoint Presentation
public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +
More information2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.
10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1
More information