1 / 35

3 장 . 웹 어플리케이션과 JSP 및 Servlet 의 이해

3 장 . 웹 어플리케이션과 JSP 및 Servlet 의 이해. 1. 웹 어플리케이션 개념 및 폴더 구조. 웹 어플리케이션의 개념 독립 어플리케이션 (Stand-alone Application) 웹 어플리케이션 (Web Application) 웹 브라우저 상에서 수행되는 어플리케이션 HTTP 와 HTML 을 기본으로 사용 웹 어플리케이션이 Tomcat 에서 구현될 때의 규칙 임의의 웹 어플리케이션은 webapps 폴더 하위에 하나의 폴더로 구성. jspbook 웹 어플리케이션

margie
Download Presentation

3 장 . 웹 어플리케이션과 JSP 및 Servlet 의 이해

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장

  2. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션의 개념 • 독립 어플리케이션 (Stand-alone Application) • 웹 어플리케이션 (Web Application) • 웹 브라우저 상에서 수행되는 어플리케이션 • HTTP와 HTML을 기본으로 사용 • 웹 어플리케이션이 Tomcat 에서 구현될 때의 규칙 • 임의의 웹 어플리케이션은 webapps 폴더 하위에 하나의 폴더로 구성 jspbook 웹 어플리케이션 (첫 번째 웹 어플리케이션) 제3장 웹 어플리케이션과 webapps 내의 폴더

  3. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션의 개념 webapps ‘폴더’ 내에 새로운 폴더 생성 = 새로운 ‘Context’ 생성 (ServletContext: servlet들이 실행되는 환경) = 새로운 웹 어플리케이션들 생성 jspbook 웹 어플리케이션 (첫 번째 웹 어플리케이션) myapp 웹 어플리케이션 (두 번째 웹 어플리케이션) webapps 내의 두 번째 웹 어플리케이션 생성 제3장

  4. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션의 개념 • 웹 어플리케이션 폴더는 하나의 ServletContext와 매핑 • ServletContext는 하나의 웹 어플리케이션 폴더 내에 여러 JSP 페이지와 Servlet 들이 ‘공동으로’ 활용할 수 있는 저장소로 활용 • 즉, 어플리케이션 환경(environment) • 서로 다른 두 개의 웹 어플리케이션은 ServletContext 객체와 매핑되어 각자 독립적인 공간에 자신만의 정보를 관리 • 웹 어플리케이션 폴더와 URL간의 매핑 • URL에 웹 어플리케이션 지정 없이 http://localhost:8080 으로요청 • webapps 폴더 밑의 ROOT 폴더로 자동으로 접근 • http://localhost:8080/hello.jsp  webapps/ROOT/hello.jsp 파일 접근 • http://localhost:8080  webapps/ROOT/index.html 파일 접근 제3장

  5. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션 폴더와 URL간의 매핑 • webapps 내에 jspbook과 myapp 웹 어플리케이션을 생성시에 함께 생성되는 URL • 위 URL로 접근하면 jspbook 및 myapp 폴더 밑의 index.html 또는 index.jsp 파일을 접근 • index.html,index.jsp: 파일명까지 정확하게 입력하지 않아도 폴더명만으로도 찾아지는 디폴트 파일 제3장

  6. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션 폴더(Context)와 URL간의 매핑 • 중요 메소드 2개 • request.getContextPath() • 웹 어플리케이션의 경로를 리턴 • application.getRealPath("/") • 웹 어플리케이션의 하드디스크상 실제 경로를 리턴 [예제 3.1] jspbook\ch03\path.jsp 제3장

  7. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션 폴더와 URL간의 매핑 • jspbook/test 폴더 밑의 testjsp.jsp 파일 접근 URL • jspbook/images 폴더 밑의 apple.bmp 파일 접근 URL 제3장

  8. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션의 폴더 구조 일반적인 웹 어플리케이션의 구조에는 반드시 WEB-INF 폴더와 web.xml 파일이 그 안에 존재한다. 하지만 간단한 웹 어플리케이션인 경우에는 WEB-INF 폴더 및 web.xml 생략이 가능하다. 영화제작과 비교하면 영화를 만드는 데에 있어서 뒤에서 일하는 스텝들과 같은 역할을 하는 파일 및 자원들은 모두 WEB-INF 폴더 내에 두어야 하며 WEB-INF 폴더 내의 파일 및 자원들은 웹 브라우저인 클라이언트에서 절대 접근할 수 없다. 제3장

  9. 1. 웹 어플리케이션 개념 및 폴더 구조 • 웹 어플리케이션의 폴더 구조 제3장

  10. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일의 Servlet 파일로의 자동 변환 • 2장에서 만든 다음과 같은 파일이 있는지 확인하고 브라우저에서 실행해보자. • 그다음 아래 경로 및 파일을 탐색기에서 확인해 보자. 제3장

  11. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일의 Servlet 파일로의 자동 변환 • JSP 파일은 실행이 될 때 일단 Servlet인 Java 소스파일로 변환되고 다시 클래스 파일로 컴파일 됨 • 이 클래스 파일이 JSP/Servlet 컨테이너인 Tomcat 내에서 실행되어 그 결과가 최종적으로 웹 브라우저로 전달 제3장

  12. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일의 Servlet 파일로의 자동 변환 개발자에게 코딩하기 복잡한 Servlet 대신에 스크립트 언어인 JSP로 작성하게 하고 JSP/Servlet 컨테이너인 Tomcat이 내부에서 JSP 파일을 Servlet으로 변환 및 컴파일하여 클래스 파일을 메모리에 적재한 후 실행하여 응답한다. jspbook\ch02\helloworld.jsp 제3장

  13. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일의 Servlet 파일로의 자동 변환 Tomcat 설치 폴더\work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.java 제3장

  14. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일의 Servlet 파일로의 자동 변환 Tomcat 설치 폴더\work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.java (계속) JSP 파일에 작성한 내용이 이 곳에 존재함. out 객체의 write 메소드와 println 메소드가 JSP 파일의 내용을 출력시켜주는 역할을 수행 제3장

  15. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일 재요청시의 동작 과정 • 변환 및 컴파일 과정은 해당 JSP를 웹 브라우저에서 맨 처음 요청했을 때에만 이루어지는 과정 • 한번이라도 요청했던 JSP 파일을 다시 임의의 사용자가 재요청하면 이미 메모리에 적재된 클래스를 재실행 • JSP로 작성된 웹 페이지의 대부분의 응답은 하드디스크에 대한 접근 없이 바로 메모리에서 응답을 주기 때문에 대체로 평균 응답 시간이 매우 짧다. 제3장

  16. 2. JSP의 처리 과정 및 Servlet과의 관계 • JSP 파일 수정 후 같은 JSP 재요청시의 동작 과정 • JSP의 장점: JSP를 수정하면 Tomcat이 자동으로 변환 및 컴파일 수행 클래스 파일이 JSP 파일보다 이후에 만들어진 최신 클래스 파일인지 반드시 확인하여 수행 결과를 웹 브라우저로 보내준다 제3장

  17. 2. JSP의 처리 과정 및 Servlet과의 관계 • 종합적인 JSP 파일 처리 과정 SQL/JDBC MySQL/Oracle 제3장

  18. 3. Servlet의 이해 • Servlet의 생성 배경 및 장점 • JSP은 Servlet을 기반으로 한 기술 • JSP는 Servlet을 대체하는 기술이 아니라 상호보완적인 기술 • Servlet은 기본적으로 Java 언어 기반이므로 Java 언어에 대한 프로그램 실력을 쌓는 것이 중요 제3장

  19. 3. Servlet의 이해 • Servlet의 생성 배경 및 장점 [Servlet의 장점] ∙Java를 기반으로 하므로 Java API를 모두 사용할 수 있다. ∙쓰레드를 기반으로 하므로 웹 어플리케이션 서버 자원을 효율적으로 활용할 수 있다. ∙웹 어플리케이션에서 효율적인 자료 공유 방법을 제공한다. ∙비즈니스 로직과 프리젠테이션 로직을 분리할 수 있다. ∙컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 효율적인 업무 분담이 가능하다. ∙유지보수가 수월하다. ∙기능 확장이 용이하다. ∙Servlet 컨텍스트 리스너 및 필터 Servlet 등 고급 프로그래밍 기법을 통해 보다 효과적인 웹 어플리케이션 설계가 가능해진다. 제3장

  20. 3. Servlet의 이해 • Servlet 동작 과정과 생명주기 제3장

  21. 3. Servlet의 이해 • Servlet 동작 과정과 생명주기 • 서블릿에 대한 사용자 요청 처리 과정 • web.xml 파일을 참조해 URL 매핑(URL Mapping)을 확인 • 해당 Servlet 인스턴스로부터 스레드를 생성 • service() 메소드 호출 • 즉, 모든 사용자 요청에 대해 개별적인 service() 메소드가 호출 • GET 또는 POST 요청을 구분하여 doGet() 또는 doPost() 메소드가 호출됨 • 따라서 Servlet 개발자는 doGet() 또는 doPost() 메소드에 대부분의 필요한 기능을 구현한다. Servlet 구조 제3장

  22. 3. Servlet의 이해 • Servlet 동작 과정과 생명주기 • Servlet은 컴파일 과정이 필요하고 특정 클래스를 상속 받아 구현 • javax.servlet.http.HttpServlet 클래스를 상속하여 구현 • 개발자가 구현해야 할 부분은 doGet() 또는 doPost() 메소드에 작성 • 하지만, doGet()메소드에서 다시 doPost()를 호출하고 doPost() 내부에만 관련 처리 과정을 코딩하는 편이 편하다. javax.servlet.http.HttpServlet을 상속받은 MyServlet 동작 구조 제3장

  23. 3. Servlet의 이해 • 클라이언트 요청 #1 - GET 방식 • 단순히 서버에 있는 정보를 가져오기 위해 사용 • 특징 • HTML, 이미지 등을 웹 브라우저에서 가져오기 위한 일반적 방식 • 서버로의 데이터 전달은 QUERY_STRING 환경변수를 통해서 가능 • QUERY_STRING: 요청 URL에서 ‘?’ 이후의 값들.‘속성=값’ 형태로 사용해야 하며 ‘&’는 여러 속성 값을 전달할 때 연결해주는 문자열이다. • 클라이언트에서 서버로 전달할 수 있는 데이터 크기 (QUERY_STRING )는 최대 240Byte까지 가능하다. • - 필요한 데이터를 검색할 때 필요한 key 값 등을 전달 • 요청 URL에 값들이 노출되기 때문에 ‘보안 문제’가 생길 수 있다. • - 보내는 값이 URL 뒤에 붙어서 전송됨: 주소창에서 노출이 가능 • 데이터 조회용 웹 애플리케이션에 적합 제3장

  24. 3. Servlet의 이해 • 클라이언트 요청 #2 - POST 방식 • 클라이언트에 있는 정보를 서버로 올리기 위해 사용 • 특징 • 예를 들어 HTML 폼에 입력한 내용을 서버에 전달할 때 사용 • 서버에 전달할 수 있는 데이터 크기는 제한이 없다 • URL에 전달하려는 정보 값이 표시되지 않는다. • 그래서 로그인 정보를 전달할 때에는 POST 방식을 사용한다. • 데이터 저장용 웹 애플리케이션에 적합 제3장

  25. 4. 첫번째 servlet 프로그램 -helloworldservlet • 컴파일을 위한 환경 설정 • 일반적인 자바 프로그램의 라이브러리들이 위치한 곳 • C:\Program Files\Java\jdk1.6.0_13\jre\lib • 위 폴더의 rt.jar에 대부분의 표준 라이브러리들이 위치 • 위 폴더에 있는 .jar 및 .class들은 CLASSPATH 지원 없이 javac 프로그램 자체적으로 자동으로 검색하여 필요한 내용을 참조 • Servlet 프로그램이 활용하는 라이브러리들이 위치한 곳 • C:\apache-tomcat-6.0.18\lib • 위 폴더의 servlet-api.jar파일에 대부분의 라이브러리들이 위치 • Servlet 소스 코드를 javac.exe 로 컴파일하기 위해서는 CLASSPATH 환경 변수에 등록 필요 • 컴파일시에 CLASSPATH 환경변수 값 설정 옵션:-cp 기존의 CLASSPATH 환경 변수들도 그대로 설정 TOMCAT 이 설치된 폴더(2장에서 등록한 환경변수) 제3장

  26. 4. 첫번째 servlet 프로그램 -helloworldservlet • 컴파일을 위한 환경 설정 • 컴파일된 class 파일이 위치해야 하는 곳 • \웹 어플리케이션 폴더\WEB-INF\classes • 컴파일시에 컴파일된 class 파일이 위치해야 하는 곳 지정 옵션: -d • 웹 어플리케이션 폴더가 jspbook일 때 다음과같이 컴파일 • – cp와 –d를 함께 사용하여 javac 명령을 새로 구성한 배치화일 [예제 3.2 ] Java설치 폴더\bin\sjc.bat sjc.bat 파일을 실행시킬 때 인자로 들어오는 Java 파일명으로 자동으로 대체됨 제3장

  27. 4. 첫번째 servlet 프로그램 -helloworldservlet • Servlet 등록 및 URL 매핑 • Servlet을 작성하여 실행하려면 반드시 JSP/Servlet 컨테이너에 등록을 시키고 관련 URL을 매핑하는 작업 필요 • 웹 어플리케이션의 배치 정의자 역할을 수행하는 web.xml에 기록 제3장

  28. 4. 첫번째 servlet 프로그램 -helloworldservlet • Servlet 등록 및 URL 매핑 • 컴파일한 서블릿을 “http://localhost:8080/jspbook/helloServlet” URL로 접근하기 위한 서블릿 매핑 방법 제3장

  29. 4. 첫번째 servlet 프로그램 -helloworldservlet • Servlet 등록 및 URL 매핑 • 컴파일한 서블릿을 “http://localhost:8080/jspbook/servlets/helloServlet” URL로 접근하기 위한 서블릿 매핑 방법 • <url-pattern> 태그값에 “/servlets/helloServlet” 입력 • [실습] 단계 1 • jspbook 폴더 밑에 WEB-INF 폴더 생성 제3장

  30. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 2 • WEB-INF 폴더 내에 classes 폴더와 java_sources 폴더 생성 • classes 폴더 명은 정확하게 기입 • java_sources 폴더 명은 변경해도 상관없음 제3장

  31. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 3 • 서블릿 코딩 [예제 3.1] jspbook\WEB-INF\java_sources\HelloServlet.java 제3장

  32. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 4 • 컴파일 • WEB-INF 폴더 밑의 classes에 서블릿 클래스가 생성되었는지 확인 제3장

  33. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 5 • web.xml에 서블릿 등록 [예제 3.2 ] jspbook\WEB-INF\web.xml 제3장

  34. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 5 • 웹 브라우저에서 실행 첫 번째 Servlet인 helloServlet 수행 확인 제3장

  35. 4. 첫번째 servlet 프로그램 -helloworldservlet • [실습] – 단계 6 • cmd 창에서 출력 결과 확인 • init() 메소드와 doGet() 메소드수행 확인 • 브라우저에서 새로고침할 때 마다 cmd 창 확인 • 새로고침할 때 마다 doGet() 메소드수행 확인 제3장

More Related