서로관련된페이지의유지 서로관련된페이지란? - 사용자가특정사이트에접속했을때, 사용자의정보를미리파악하고사용자화면에환영의메세지를띄우는방식처럼웹페이지간에서로일정한관계가있는것처럼동작시키는페이지를말한다. - 웹페이지는서로독립적인페이지이므로, 서로관련을시키기위해서는공통의데이터를사용

Similar documents
Data Provisioning Services for mobile clients

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

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

JAVA Bean & Session - Cookie

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

PowerPoint Template

chapter6.doc

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

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

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

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

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

Microsoft PowerPoint - Java7.pptx

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

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

쉽게 풀어쓴 C 프로그래밍

Microsoft Word - php09.doc

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

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

중간고사

PowerPoint Presentation

Secure Programming Lecture1 : Introduction

2009년 상반기 사업계획

Microsoft PowerPoint 웹 연동 기술.pptx

Cookie Spoofing.hwp

어댑터뷰

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

Microsoft Word - src.doc

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

14-Servlet

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

JAVA PROGRAMMING 실습 05. 객체의 활용

Data Provisioning Services for mobile clients

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

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

Microsoft PowerPoint 세션.ppt

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Microsoft PowerPoint - 04-UDP Programming.ppt

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

12. OAuth 2.0 으로사용자관리하기 12.1 들어가며 대부분의회사나조직은직원과고객데이터베이스를가지고있습니다. 쓰리래빗츠를도입하면 일부데이터베이스를이중으로관리해야하는불편함에직면합니다. 이문제를해결하기위해서 쓰리래빗츠는 OAuth 2.0 으로사용자를관리하는기능을제공

The Pocket Guide to TCP/IP Sockets: C Version

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

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

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

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

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

PowerPoint Presentation

3ÆÄÆ®-14

PowerPoint Template

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

PowerPoint Presentation

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

Design Issues

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

System Recovery 사용자 매뉴얼

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

04장

chap 5: Trees

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

Microsoft PowerPoint - CSharp-10-예외처리

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

제 목

Microsoft PowerPoint - chap06-2pointer.ppt

쉽게 풀어쓴 C 프로그래밍

C# Programming Guide - Types

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

PowerPoint Presentation

untitled

11장 포인터

행자부 G4C

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

Visual Basic 반복문

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

JUNIT 실습및발표

PowerPoint Presentation

gnu-lee-oop-kor-lec10-1-chap10

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

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

C++ Programming

JAVA PROGRAMMING 실습 02. 표준 입출력

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

PowerPoint Presentation

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

제11장 프로세스와 쓰레드

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

슬라이드 1

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

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

Transcription:

서로관련된페이지의유지 서로관련된페이지란? - 사용자가특정사이트에접속했을때, 사용자의정보를미리파악하고사용자화면에환영의메세지를띄우는방식처럼웹페이지간에서로일정한관계가있는것처럼동작시키는페이지를말한다. - 웹페이지는서로독립적인페이지이므로, 서로관련을시키기위해서는공통의데이터를사용하도록해야한다. - 이와같이서로공통의데이터를사용하도록하는방법에 쿠키 와 세션 이있다. 쿠키 (Cookie) - 쿠키는웹서버와클라이언트브라우저간에데이터를공유하는방법이다. 웹페이지 요청 쿠키 웹서버 - 쿠키의동작순서쿠키와함께요청 1 클라이언트가웹서버에요청한다. 2 웹서버가클라이언트로데이터를전송한다. 3 클라이언트는수신된데이터를쿠키에저장한다. 4 쿨라이언트가다음에동일한웹서버에요청을할때쿠키에저장된데이터를웹서버로전송한다. 5 웹서버는데이터를확인하고이전에접속했던클라이언트임을확인한다. 6 웹서버는적절한환영인사를클라이언트로전송한다. 새로운데이터를쿠키에저장하는방법 - 쿠키데이터를클라이언트측에저장하기위해서는두가지작업을해야한다. 1 Cookie 객체를생성한다. 2 생성된 Cookie 객체의 addcookie() 메소드를사용한다. - 쿠키클래스는 javax.servlet.http 패키지에속해있다. - 쿠키객체를생성하기위해서는 쿠키의이름 과 값 이필요하다. 이두가지는모두 String 형태이다. 쿠키생성예 ) Cookie cookie = new Cookie("AGE", "26"); - 위의예는 AGE라는이름의쿠키를생성하고 26을값을저장한다. - 쿠키가생성이되었으면 response.addcookie(cookie); 를사용해서쿠키를클라이언트측에저장한다. - 쿠키데이터를클라이언트측에저장하는 JSP의예 (StoreCookies.jsp) response.addcookie(new Cookie("NAME", "John")); response.addcookie(new Cookie("GENDER", "Male")); response.addcookie(new Cookie("AGE", "15")); <HTML><HEAD><TITLE> 쿠키데이터저장 </TITLE></HEAD> <BODY> 쿠키데이터가저장되었습니다.</BODY></HTML> - 1 -

- 쿠키의처리는가급적 JSP 페이지의상단부, 즉 <HTML> 이시작되기전에한다. 이전에방문했던사실을어떻게알수있을까? - 클라이언트는웹서버에접속할때쿠키도함께전송하므로, 웹서버에서는쿠키를확인해서이전에방문했던클라이언트의여부를확인할수있다. - 쿠키를수신하기위해서는 request.getcookie() 메서드를사용한다. 이메서드는모든쿠키정보를리턴하므로, 쿠키정보를수신하려면배열변수에저장해야한다. - 쿠키수신예 ) Cookie cookies[] = request.getcookies(); - 쿠키를수신한후, 특정한쿠키정보를찾기위해서는쿠키객체를하나씩이름을비교해야한다. 이를위해서 getname() 메서드를사용한다. - 원하는쿠키를찾았으면, getvalue() 메서드를사용해서값을읽어온다. - 다음은저장된쿠키의데이터를읽는예저 JSP(ReadCookies.jsp) @page contenttype="text/html; charset=euc-kr" Cookie[] cookies = request.getcookies(); <HTML> <HEAD><TITLE> 쿠키데이터읽기 </TITLE></HEAD> <BODY> 이름 : = getcookievalue(cookies, "NAME") <BR> 성별 : = getcookievalue(cookies, "GENDER") <BR> 나이 : = getcookievalue(cookies, "AGE") </BODY> </HTML>! private String getcookievalue(cookie[] cookies, String name) { String value = null; if (cookies == null) for (Cookie cookie : cookies) { if (cookie.getname().equals(name)) return cookie.getvalue(); - 위의예제는쿠키에저장된데이터중에 "NAME", "GENDER", "AGE" 들을찾고, 만약에쿠키에존재하면값을읽어서클라이언트에출력한다. - 쿠키테스트를다음과같이진행한다. 1 StoreCookies.jsp를실행한뒤동일한브라우저에서 ReadCookies.jsp를실행한다. -> 결과확인 2 StoreCookies.jsp를실행한뒤브라우저를닫고새로운브라우저에서 ReadCookies.jsp를실행한다. -> 결과확인 - 2 -

- 위의두가지테스트결과는서로다른다. - 1의결과는브라우저에 "John", "Male", "15" 라는쿠키에저장되었던데이터가출력된다. - 2의결과는부라우저에 null, null, null이출력된다. 즉, 아무런데이터를출력하지못한다. - 2의결과가발생한이유는웹브라우저가종료되면자신이가지고있던쿠키를지워버리기때문이다. 쿠키의구성 - 쿠키를구성하는요소는다음과같다. 이름 : 각각의쿠키를구별하는데사용되는이름 값 : 쿠키의이름과관련된값 유효시간 : 쿠키가유지되는시간 도메인 : 쿠키를전송할도메인 경로 : 쿠키를전송할요청경로 - 쿠키의이름은다음의규칙을지켜야한다. 쿠키의이름은알파벳과숫자만을포함할수있다. 콤마 (,), 세미콜론 (;), 공백 ( ) 등의문자는포함할수없다. $ 문자로시작할수없다. - 쿠키를생성한후에는다음의메소드를사용하여쿠키를처리한다. 메서드 리턴타입 설명 getname() String 쿠키의이름을구한다. getvalue() String 쿠키의값을구한다. setvalue(string value) void 쿠키의값을지정한다. setdomain(string pattern) void 이쿠키가전송될서버의도메인을지정한다. getdomain() String 쿠키의도메인을구한다. setpath(string uri) void 쿠키를전송할경로를지정한다. getpath() String 쿠키의전송경로를구한다. setmaxage(int expiry) void 쿠키의유효시간을초단위로지정한다. 값이음수이면브라우저를닫을때쿠키가함께삭제된다. getmaxage() int 쿠키의유효시간을구한다. 쿠키의변경 - 쿠키의변경은쿠키를생성할때마찬가지로, 쿠키를생성하고 addcookie() 메소드를사용한다. 웹브라우저는동 일한이름의쿠키를찾아서새로운쿠키의값을저장한다. 쿠키의삭제 - 쿠키의삭제는삭제하는기능의메소드를사용하는것이아니고, 쿠키의생존기간을 0으로설정함으로써삭제를수행한다. - 웹브라우저는종료가될때자신이가니고있던쿠키를모두지워버리는것을기본동작으로한다. - 그러나, 쿠키에수명을지정하면웹브라우저와는상관없이지정된수명동안보존된다. - 쿠키에수명을부여하기위해서는 addcookic() 메서드를호출하기전에 setmaxage() 메서드를호출해서쿠키의생존기간을설정한다. - 쿠키의수명을설정하는예 ) Cookie cookie = new Cookie("LIFE", "GOOD"); cookie.setmaxage(3600); 쿠키의생존시간을 1시간 (3600초) 으로설정 response.addcookie(cookie); - 3 -

- 쿠키를삭제하는방법 : cookie.setmaxage(0); 해당쿠키를찾아서삭제한다. - 웹브라우저가종료되면쿠키를삭제하도록설정 : cookie.setmaxage(-1); 마이너스값을설정 도전과제 : 위의예제 StoreCookies.jsp에서생성했던 GENDER" 라는이름의쿠키를삭제하는 DeleteCookie.jsp 를작성하세요. 그리고, ReadCookies.jsp를실행해서삭제가되었는지확인하세요. 확인순서는다음과같습니다. 1 StoreCookies.jsp("NAME", "GENDER", "AGE" 쿠키를생성한다.) 2 ReadCookies.jsp( 쿠키를읽어서생성을확인한다.) 3 DeleteCookie.jsp("GENDER" 쿠키를삭제한다.) 4 ReadCookies.jsp( 쿠키를읽어서삭제를확인한다.) - 4 -

쿠키의선택적적용즉, 특정한폴더의페이지에서만쿠키를설정하도록한다. - 쿠키에경로를설정하면해당경로에있는페이지에서만쿠키를생성할수있다. - setpath() 메서드를사용해서경로를지정한다. - 경로지정의예 ) cookie.setpath("/ 프로젝트이름 /sub1"); 경로이름를지정한다. - 위와같이쿠키에경로를지정하면, sub1 폴더에있는페이지에서만쿠키를설정할수있게된다. - sub1 폴더밒에있는페이지에서만쿠키를사용하도록하는예제 ) - 위의그림과같이구성한다. - StoreJobCookie.jsp @page contenttype="text/html; charset=euc-kr" Cookie cookie = new Cookie("JOB", "programmer"); cookie.setpath("/cookietest/sub1"); response.addcookie(cookie); <HTML> <HEAD><TITLE> 쿠키데이터저장하기 </TITLE></HEAD> <BODY> JOB 쿠키가저장되었습니다. </BODY> </HTML> - ReadJobCookie.jsp Cookie[] cookies = request.getcookies(); <HTML> <HEAD><TITLE> 쿠키데이터읽기 </TITLE></HEAD> <BODY> JOB: = getcookievalue(cookies, "JOB") </BODY> </HTML>! private String getcookievalue(cookie[] cookies, String name) { String value = null; - 5 -

if (cookies == null) for (Cookie cookie : cookies) { if (cookie.getname().equals(name)) return cookie.getvalue(); - 다음순서로실행하면서결과를확인한다. 1 "sub1" 의 StoreJobCookie.jsp를실행한다. 2 동일한브라우저에서 URL 부분의 StoreJobCookie.jsp를 ReadJobCookie.jsp로고치고 새로고침 버튼을클릭한다. 결과를확인한다. 3 동일한브라우저에서 URL 부분의 /sub1/storejobcookie.jsp를 /sub2/readjobcookie.jsp로고치고 새로고침 버튼을클릭한다. 결과확인. - 위의결과정리 쿠키의 setpath() 메서드에의해서설정된경로에서만쿠키를확인할수있다. 쿠키를사용한로그인처리 - 웹사이트의가장기본적인기능중의하나는회원인지의여부를판단하는로그인 / 로그아웃기능이다. - 사용자의로그인상태를쿠키에기록해서사용자의상태를판단한다. - 다음은로그인과정을쿠키에기록하는과정이다. 1 사용자가로그인하면쿠키를생성한다. 2 관련된쿠키가존재하면로그인한상태라고판단한다. 3 사용자가로그아웃하면쿠키를삭제한다. - 예를들면, 사용자가로그인에성공하면 "LOGIN" 이라는쿠키를생성하고, "LOGIN" 쿠키가존재하는동안은로그인한상태라고판단한다. - 로그인정보입력 JSP(loginForm.jsp) <form action = "memberlogin.jsp" method = "post"> 아이디 <input type = "text" name = "id" size = "10"> 암호 <input type = "password" name = "password" size = "10"> <input type = "submit" value = " 로그인 "> </form> - 로그인처리 JSP(memberLogin.jsp) String id = request.getparameter("id"); String password = request.getparameter("password"); if(id.equals(password)) { 사용자 id와암호가동일한것이면로그인에성공한것으로한다. Cookie cookielogin = new Cookie("LOGIN", "SUCCESS"); Cookie cookieid = new Cookie("ID", id); - 6 -

response.addcookie(cookielogin); response.addcookie(cookieid); 로그인에성공했습니다. else { 로그인에실패했습니다. - 로그인여부판단 JSP(loginCheck.jsp) Cookie[] cookies = request.getcookies();! private String getcookievalue(cookie[] cookies, String name) { String value = null; if (cookies == null) for (Cookie cookie : cookies) { if (cookie.getname().equals(name)) return cookie.getvalue(); <html> <head><title> 로그인여부검사 </title></head> <body> 아이디 = getcookievalue(cookies, "ID") 로로그인한상태입니다. </body> </html> 쿠키를사용한로그아웃처리 - 로그아웃은로그인할때생성했던쿠키를삭제하는기능을수행한다. - 쿠키의삭제는쿠키의유효시간을 0으로지정하면된다. 따라서, 로그인할때생성했던 "LOGIN" 쿠키와 "ID" 쿠키를삭제하면로그아웃이처리된다. - 7 -

- 로그아웃처리 JSP(logout.jsp) Cookie cookielogin = new Cookie("LOGIN", ""); cookielogin.setmaxage(0); response.addcookie(cookielogin); Cookie cookieid = new Cookie("ID", ""); cookieid.setmaxage(0); response.addcookie(cookieid); out.println(" 로그아웃이하였습니다."); 도전과제 : 위의예제를응용해서로그인한후 10 초후에자동으로로그아웃되도록위의 JSP 를수정하세요. 힌트 ) 로그아웃기능은쿠키를삭제하는것으로구현합니다. - 8 -