Internet Computing KUT Youn-Hee Han

Slides:



Advertisements
Similar presentations
12 장 자바 애플릿. 2 Applet 개요 Applet 프로그램 – 웹 페이지에 포함되어 구동 된다. 웹 브라우저나 애 플릿뷰어 (appletviewer) 에서 실행되는 프로그램 – 웹 브라우저 내에 Applet 을 해석하여 실행할 수 있 도록 Applet 구동용 인터프리터가.
Advertisements

HTTPS Packet Capture Tutorial
제 07 장 쿠키와 세션 학기 인터넷비즈니스과 강 환수 교수.
Chapter 07 : 서블릿 고급2. chapter 07 : 서블릿 고급2 학습목표 세션 tracking hidden 태그 이용 encodeURL 메소드 사용법 URL 파라미터 이용 쿠키 이용 세션 이용 encodeURL 메소드 사용법.
4 서블릿의 라이프 사이클.
제 12 장 표현 언어 학기 인터넷비즈니스과 강 환수 교수.
Introduction to Servlets
2 서블릿의 기초.
4강. Servlet 맛보기 Servlet 문서 작성 하기 web.xml에 서블릿 맵핑 어노테이션을 이용한 서블릿 맵핑
5강. Servlet 본격적으로 살펴보기-I 프로젝트 만들기 doGet() doPost()
Internet Computing KUT Youn-Hee Han
제 08 장 자바 빈즈 학기 인터넷비즈니스과 강 환수 교수.
Ch.07-5 xml-rpc 사용하기 김상엽.
8장. 기본 객체와 영역 제8장.
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
9 표준 액션.
자바 서버 API와 서블릿 데이타베이스 실험실 이찬섭, 박용문.
5 익셉션 처리.
11 필터와 래퍼.
PHP입문 Izayoi 김조흔.
1. JSP(Java Server Pages) 소개
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
1강 01장. 웹과 자바.
클라우드 환경에서의 session 유지처리
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
Java Web Programming 4일차.
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
8장. 원격지 시스템 관리하기.
12 ███████████ 12.
11장. 세션과 쿠키 제11장.
제14장 자바 서블릿.
Servlet 서블릿 기초 FORM 처리 서블릿의 API 세션과 쿠키 com.oreilly.servelet 패키지
서블릿 이해하기 JSP 기반의 서블릿과 서블릿 소스 코드를 이해한다. 간단한 서블릿 프로그램을 제작할 수 있다.
6강. Servlet 본격적으로 살펴보기-II
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
제 01 장 인터넷 프로그래밍 개요 학기 인터넷비즈니스과 강 환수 교수.
26강. 포워딩(Forwarding) RequestDispatcher 클래스 HttpServletResponse 클래스
7장 JSP페이지의 내장객체(Implicit Object)와 영역(Scope)
속성과 리스너 초기화 파라미터 외 파라미터에 대해 이해한다. 리스너를 생성해보고 사용에 대해 이해한다.
Cookie 와 Session.
JDBC (Java Database Connectivity)
3강. JSP 맛보기 JSP 문서 작성 하기 JSP 아키텍처 Lecturer Kim Myoung-Ho Nickname 블스
Web Basic 김영성 인천대 OneScore
2018년 11월 05일 박성진 Web & Internet [08] 레이아웃 P1 2018년 11월 05일 박성진
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
PHP 개요 및 설치 Yang-Sae Moon Department of Computer Science
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
8장 쿠키와 세션 한빛미디어(주).
웹디자인
7장. JSP페이지의 내장객체(Implicit Object)와 영역(Scope)
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
Internet Computing KUT Youn-Hee Han
12장 쿠키와 세션 이장에서 배울 내용 : 쿠키와 세션은 웹 페이지 간에 정보를 유지할 때 사용된다. 쿠키와 세션은 사용되는 형태가 비슷하나, 쿠키는 웹 브라우저(클라이언트) 쪽에 저장되고, 세션은 웹 서버 쪽에 저장된다. 이 번장에서는 이들에 대해 학습한다.
리스너와 서블릿 필터 초기화 파라미터 관리 개념을 이해한다 리스너 구조를 이해하고 프로그래밍 기법을 배운다
Internet Computing KUT Youn-Hee Han
14강. 세션 세션이란? 세션 문법 Lecturer Kim Myoung-Ho Nickname 블스
JSP Expression Language
12강. 컨트롤러 컨트롤러 클래스 제작 요청 처리 메소드 제작 뷰에 데이터 전달
Web Storage 인공지능 연구실.
Introduction to JSP & Servlet
암호학 응용 Applied cryptography
3장 JSP프로그래밍의 개요 이장에서 배울 내용 : JSP페이지의 기본적인 개요설명과 JSP페이지의 처리과정 그리고 웹 어플리케이션의 구조에 대해서 학습한다.
JSP Programming with a Workbook
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
6 쿠키와 세션.
디지털광고 구동 원리 전중달 CTO.
Presentation transcript:

Internet Computing Laboratory @ KUT Youn-Hee Han Servlet 101 – Part 2 Internet Computing Laboratory @ KUT Youn-Hee Han

Servlet Mapping 초기 개발단계의 Servlet URL과 Serlvet Class 연관에 대한 문제점 http://localhost:8080/2006777888/servlet/HelloServlet 요청이 길다. (항상 /servlet/ 이 포함됨) 보안에 취약하다. (구현 방법이 Servlet임이 노출됨) 서블릿 mapping 작업

Servlet Mapping Servlet Mapping 각 context에 저장된 web.xml 에서 설정한다. <servlet> 태그와 <servlet-mapping> 태그를 이용한다. 여러 개의 서블릿 mapping 도 가능하다. Note: <servlet>태그를 먼저 정의하고 <servlet-mapping> 태그를 정의하여야 한다.

Servlet Mapping Servlet Mapping 일치!!! /2006777888/WEB-INF/web.xml <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> … <servlet> <servlet-name>hello</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/MyHello</url-pattern> </servlet-mapping> </web-app> [주의] Tomcat 재시작 필요 일치!!!

Servlet Mapping Servlet Mapping http://localhost:8080/2006777888/servlet/HelloServlet http://localhost:8080/2006777888/MyHello

Servlet Mapping Package 사용 package test.web; import javax.servlet.*; /2006777888/WEB-INF/src/HelloServelt.java package test.web; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HelloServlet extends HttpServlet { public void init() { System.out.println("Init!!!"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println("packaged modified doGet!!!"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><body bgcolor=\"yellow\">packaged Hello Servlet! </body></html>"); public void destroy() { System.out.println("destroy!!!");

Servlet Mapping 컴파일 및 클래스 파일 위치 web.xml 재구성 sjc.bat로 컴파일 클래스 파일 위치 확인 /2006777888/WEB-INF/web.xml <servlet> <servlet-name>hello</servlet-name> <servlet-class>test.web.HelloServlet</servlet-class> </servlet> <servlet-mapping> <url-pattern>/MyHello</url-pattern> </servlet-mapping>

Servlet Mapping Package 사용한 Servlet Mapping http://localhost:8080/2006777888/MyHello

Servlet Context & Config Web Application 마다 1개의 Context 존재 javax.servlet.ServletContext 로 정의되어 있다. 서블릿과 Tomcat 컨테이너간에 통신하기 위해서 사용되어진다. ServletContext 객체는 Tomcat 컨테이너와 동일한 LifeCycle를 갖는다. 용도 서블릿에서 파일접근시 사용 로그파일 작성시 사용 context 파라미터를 이용 할 때 사용

Servlet Context & Config Servlet Config javax.servlet.ServletConfig로 정의되어 있다. 서블릿마다 하나의 ServletConfig가 생성된다. ( 공유불가 ) 서블릿 초기화시 필요한 정보를 컨테이너에서 제공 받을 수 있다. ServletConfig 객체는 서블릿과 동일한 LifeCycle를 갖는다. 용도 ServletContext을 얻을 때 사용한다. 초기 파라미터를 이용 할 때 사용된다.

Servlet Context & Config Container – Servlet Context - Servlet Config Tomcat (Container) context1 context2 ServletContext ServletContext 서블릿1 ServletConfig 서블릿1 ServletConfig 서블릿2 ServletConfig context3 서블릿1 ServletContext ServletConfig 서블릿2 ServletConfig 서블릿3 ServletConfig

Servlet 의 계층 구조 사용자정의 Servlet

Servlet Context & Config 예제 Servlet Config 실습 - 초기 파라미터(init parameter) 사용 web.xml에 파라미터를 설정하고 특정 서블릿에서만 사용할 수 있다. <servlet></servlet> 태그 내부에 <init-param></init-param> 사용 서블릿에서는 ServletConfig객체의 getInitParameter 메소드를 이용하여 설정된 값을 사용한다.

Servlet Context & Config 예제 web.xml에 파라미터를 설정하고 여러 서블릿에서만 사용할 수 있다. <servlet></servlet> 태그 외부에서 <context-param></context-param>사용 서블릿에서는 ServletContext객체의 getInitParameter 메소드를 이용하여 설정된 값을 사용한다.

쿠키 (Cookie) 쿠키 정의 HTTP 한계를 극복할 수 있도록 웹사이트의 방문기록을 클라이언트에 저장하여 사용자와 웹사이트 사이를 매개해 주는 정보이다. 특징 정보가 클라이언트에 저장된다. 용량에 제한이 있다. ( 도메인당 20개씩 총 300 개, 파일용량은 4kb ) 보안이 취약하다. 클라이언트에 의해서 사용 유무가 결정된다. 도메인당 쿠키가 생성된다. 용도 로그인시 ‘ID저장’ 기능 구현 팝업창에 대해서 ‘오늘은 더 이상 창 열지 않기’ 구현 등에서 사용된다 사이트의 고객맞춤 정보 제공 (타깃 마케팅)

쿠키 (Cookie) www.abc.co.kr 쿠키 동작 원리 2. 서버는 접속한 클라이언트 정보를 저장한 쿠키를 생성한다. 1. 브라우저로 특정 도메인에 요청한다. 3. 쿠키를 가지고 클라이언트에 응답한다. 4. 쿠키를 클라이언트에 저장한다. 2. 서버는 접속한 클라이언트 정보를 저장한 쿠키를 생성한다. 5. 도메인에 재요청시 저장된 쿠키를 서버에 넘겨준다. 6. 서버는 클라이언트에서 넘겨준 쿠키정보를 이용 하여 동일한 클라이언트인지를 판별한다.

쿠키 (Cookie) 로컬 하드디스크의 쿠키 예 관련 쿠키 생성

쿠키 (Cookie) 쿠키 프로그래밍 방식 클래스 javax.servlet.http.Cookie 이용한다. Cookie c = new Cookie(이름, 값) HttpServletResponse의 addCookie 메소드로 클라이언트에 저장한다. HttpServletRequest의 getCookies 메소드로 얻어온다.

쿠키 (Cookie) 실습 예제

쿠키 (Cookie) 실습 예제 (계속)

세션 (Session) 세션 정의 HTTP 한계를 극복할 수 있도록 웹사이트의 방문기록을 서버에 저장하여 사용자와 웹사이트 사이를 매개해 주는 정보이다. 특징 정보가 서버에 저장된다. 쿠키보다 보안에 유리하다. 서버에 부담이 될 수 있다. 브라우저 당 유일한 세션(세션 ID)이 하나씩 생긴다. 서버에 저장된 정보는 유효시간을 갖는다. 기본적으로 30분(1800 초)동안 유효하다. 용도 로그인 기능 구현 쇼핑몰의 장바구니 구현 등에 사용된다. 개인화 (Personalized) 홈페이지 구현

세션 (Session) www.abc.co.kr 세션 동작 원리 2. 서버는 접속한 브라우저에 대한 세션ID 를 1. 브라우저로 특정 도메인에 요청한다. 3. 세션ID를 가지고 클라이언트에 응답한다. 5. 도메인에 재요청시 저장된 세션ID 를 서버에 넘겨준다. 4. 세션ID 를 브라우저에 저장한다. 6. 서버는 클라이언트에서 넘겨준 세션ID를 이용하여 동일한 클라이언트(브라우저)인지를 체크한다.

세션 (Session) 세션 프로그래밍 방식 클래스 javax.servlet.http.HttpSession 이용한다. javax.servlet.http.HttpServletRequest의 getSession 메소드를 이용하여 세션을 얻어오거나 새롭게 생성한다. getSession() : 세션이 있으면 리턴하고 없으면 새로 생성해서 리턴한다. getSession(true) : 세션이 있으면 리턴하고 없으면 새로 생성해서 리턴한다. getSession(false) : 세션이 있으면 리턴하고 없으면 null을 리턴한다.

세션 (Session) javax.servlet.http.HttpSession 메소드

세션 (Session) 실습 예제 1 package test.web; import javax.servlet.*; /2006777888/WEB-INF/src/SessionTest.java package test.web; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.io.*; public class SessionTest extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=euc-kr"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); out.println("<HTML><BODY>"); out.println("Session ID: " + session.getId() + "<br/>"); out.println("Creation Time: " + new Date(session.getCreationTime()) + "<br/>"); out.println("Max Inactive Interval: " + session.getMaxInactiveInterval() + "<br/>"); if (session.isNew()) out.println("NEW"); out.println("<FORM METHOD=\"GET\" ACTION=\"/2006777888/sessionTest.jsp\">"); out.println("<INPUT TYPE=\"SUBMIT\" NAME=\"Go\"></FORM>"); out.println("</BODY></HTML>"); }

세션 (Session) 실습 예제 1 (계속) <servlet> <servlet-name>session</servlet-name> <servlet-class>test.web.SessionTest</servlet-class> </servlet> <servlet-mapping> <url-pattern>/SessionTest</url-pattern> </servlet-mapping> 실습 예제 1 (계속) /2006777888/WEB-INF/web.xml /2006777888/sessionTest.jsp <%@page contentType="text/html;charset=euc-kr"%> <%@page import="java.util.Date"%> <html> <body> <% out.println("JSP Session ID: " + session.getId() + "<br/>"); out.println("JSP Creation Time: " + new Date(session.getCreationTime()) + "<br/>"); out.println("JSP Max Inactive Interval: " + session.getMaxInactiveInterval() + "<br/>"); if (session.isNew()) out.println("NEW"); %> </body> </html>

세션 (Session) 실습 예제 2 /2006777888/WEB-INF/src/SessionTest.java … public class SessionTest extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType("text/html;charset=euc-kr"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); session.setMaxInactiveInterval(10); out.println("<HTML><BODY>"); 10초후