1 / 44

14 장 . 이미지 처리 및 웹 어플리케이션의 배포

14 장 . 이미지 처리 및 웹 어플리케이션의 배포. 1. Thumbnail 이미지 만들기. 썸네일 (thumnail) 이미지 원본 이미지에 대해서 가로 및 세로 크기를 줄여서 파일 사이즈를 작게 만든 이미지. Google 이미지 검색에 사용되는 썸네일 이미지들. 1. Thumbnail 이미지 만들기. 썸네일 (thumnail) 이미지를 만드는 방법 이미지 처리 기능 구현

ninon
Download Presentation

14 장 . 이미지 처리 및 웹 어플리케이션의 배포

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. 14장. 이미지 처리 및 웹 어플리케이션의 배포 제14장

  2. 1. Thumbnail 이미지 만들기 • 썸네일 (thumnail) 이미지 • 원본 이미지에 대해서 가로 및 세로 크기를 줄여서 파일 사이즈를 작게 만든 이미지 Google 이미지 검색에 사용되는 썸네일 이미지들 제14장

  3. 1. Thumbnail 이미지 만들기 • 썸네일 (thumnail) 이미지를 만드는 방법 • 이미지 처리 기능 구현 • java.awt.*, java.awt.image.*, javax.imageio.*, javax.swing.* 과 같은 패키지를 사용 • 각 클래스마다 썸네일 이미지를 만들기 위한 몇몇 개의 메소드들을 활용 • 이들 메소드들에 대한 자세한 설명까지는 이 책에 담지 않는다. • 이미지 처리에 관한 이들 메소드들에 대한 자세한 동작방법은 다른 Java 이미지 처리 관련 책 참고 제14장

  4. 1. Thumbnail 이미지 만들기 • 썸네일 이미지를 만드는 유틸리티 [예제 14.1] jspbook \ WEB-INF\java_sources\ImageUtil.java 제14장

  5. 1. Thumbnail 이미지 만들기 • 썸네일 이미지를 만드는 유틸리티 [예제 14.1] jspbook \ WEB-INF\java_sources\ImageUtil.java 제14장

  6. 1. Thumbnail 이미지 만들기 • ImageUtil 클래스의 두 개의 정적 메소드 사용 예시 • 위 예에서 보면 각각 가로와 세로 길이만을 설정하지만 새롭게 만들어지는 이미지는 가로와 세로가 동시에 변환된 이미지가 된다. • 즉, 원본 이미지에 대해 가로 길이를 100으로 설정하면 그 비율대로 세로 길이도 맞추어서 저장된다. 제14장

  7. 1. Thumbnail 이미지 만들기 • 눈에 보이는 크기만을 줄이는 예제 [예제 14.2] jspbook\ch14\imagesize.jsp 제14장

  8. 1. Thumbnail 이미지 만들기 • 썸네일 이미지를 이용하는 예제 [예제 14.3] jspbook\ch14\thumb.jsp 제14장

  9. 2. 동적 이미지 출력 • 정적 vs. 동적 이미지 • 정적 (static) 이미지 • 이미 그 내용이 결정되어 있는 파일로 존재하는 이미지 • 동적 (static) 이미지 • 파일 형태로 존재하지 않는 이미지이며 임의의 요청이 있는 순간 그 내용이 새롭게 생성되는 이미지 • 단순하게 gif 또는 jpg 인코딩 방식으로 브라우저에 출력만 될 뿐 제14장

  10. 2. 동적 이미지 출력 • 단순 동적 이미지 생성하기 • 1) JSP의 출력 결과를이미지로 하기 위하여 contentType 속성 지정 • 2) java.awt.image.BufferedImage 클래스의 객체 생성 • width와 height 변수는 생성할 이미지의 가로와 세로 사이즈 값 • BufferedImage.TYPE_3BYTE_BGR는 파랑 (Blue), 초록 (Green), 빨강 (Red) 색상의 정도가 각각 1 바이트씩 총 3바이트에 표현되는 방식을 지정 • 3) BufferedImage 객체로부터 Graphics2D 클래스 객체 얻어오기 제14장

  11. 2. 동적 이미지 출력 • 단순 동적 이미지 생성하기 • 4) 그림을 그리는 코딩 • 5) ImageIO 클래스가 지닌 write() 메소드를 활용해서 BufferedImage 객체를 response 객체의 출력스트림으로 보내고 그 출력스트림을 닫아줌 제14장

  12. 2. 동적 이미지 출력 • 단순 동적 이미지 생성하기 예제 [예제 14.4] jspbook\ch14\dynamicImage.jsp 제14장

  13. 2. 동적 이미지 출력 • 이미지 합성하기 • 1) 다음 URL을 입력하여 웹 상에 이미지가 있다는 것을 확인 • 2) bird.jpg의 이미지를 BufferedImage 객체로 담아오는 코딩 제14장

  14. 2. 동적 이미지 출력 • 이미지 합성하기 예제 [예제 14.5] jspbook\ch14\compImage.jsp 제14장

  15. 3. 그래프 생성 및 출력하기 • 그래프 생성과 출력 • Java2D 및 Java3D 관련 패키지를 활용하여 별도의 추가 라이브러리 없이도 그래프를 그리는 작업을 무난하게 할 수 있다. • 하지만, 기본 클래스를 활용하여 좀 더 편하게 그래프를 작성할 수 있는 라이브러리가 다음과 같이 존재 • JfreeChart : 가장 많이 사용되는 공개 라이브러리. 현재까지도 계속해서 업데이트 중이다. • JOpenChart : 공개 그래프 출력 라이브러리. 0.94 버전 (2002년) 까지 나온 이후 현재는 개발이 중단되어 있다. • the Chart2D project (LGPL) : 공개 그래프 출력 라이브러리. 1.9.6 버전 (2002년) 까지 나온 이후 현재는 개발이 중단되어 있다. • E-Gantt : 스케줄러 (Scheduler)나 타임라인 (Timeline) 같은 테이블 형태의 데이터 출력에 활용하기 좋은 라이브러리. 2006년도에 나온 이후 업데이트되지 않았지만 활용도가 높다. • PtPlot : 미국의 버클리 대학에서 만든 전문적인 공학도를 위한 플로팅 (Plotting) 라이브러리 제14장

  16. 3. 그래프 생성 및 출력하기 • JFreeChart의 공식 사이트 • http://www.jfree.org/jfreechart • freeChart의 최신 버전 다운로드 • http://www.jfree.org/jfreechart/download.html • JFreeChart 다운로드 및 설치 • 한글이 지원되는 JFreeChart • http://blog.naver.com/mnk1231?Redirect=Log&logNo=120056645547 제14장

  17. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 piechart.jsp 수행결과 및 차트 구성요소 제14장

  18. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 • 1) page 지시문의 contentType과 import를 정의 • 2) 그래프(차트)의 종류 결정 및 데이터 집합 생성 제14장

  19. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 • 3) 그래프(차트) 생성 • 4) 구성된 그래프(차트)를 이미지 형태로 브라우저로 출력 제14장

  20. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 [예제 14.6] jspbook\ch14\piechart.jsp // JFreeChart 라이브러리의 클래스를 import // 파이차트 생성을 위한 데이터값 생성 제14장

  21. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 • 특정 데이터에 대해서 강조를 하고 싶다면 연관된 파이 조각을 다른 조각들 보다 조금 떨어지게 표현 • PiePlot 클래스 활용 • setExplodePercent 메소드의 첫번째 인자는 데이터 인덱스 • 인덱스는 0부터 시작 • setExplodePercent() 메소드의 두 번째 인자 • 다른 데이터 파이 조각들에 비하여 강조되는 데이터 파이 조각이 떨어져서 표현되는 정도 제14장

  22. 3. 그래프 생성 및 출력하기 • 간단한 파이 (Pie) 차트 만들기 [예제 14.7] jspbook\ch14\piechart2.jsp // 0번째 파이 조각 강조 제14장

  23. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • 컨테이너 • 웹 어플리케이션을 실행시키기 위한 환경으로서 Tomcat 엔진에 대한 좀 더 일반화된 용어이다. • 웹 어플리케이션에 대해서 사용자의 요청을 받아들이고 처리하는 역할을 수행하는 일종의 서버 데몬이다. • JSP/Servlet의 같은 스펙 버전을 준수하는 서로 다른 회사에서 개발된 컨테이너라면 동일한 웹 어플리케이션에 대해 아무런 수정 없이 실행가능 • 컨테이너의 종류 • 무료 컨테이너 • Tomcat, Resin (Caucho Technology) • 유료컨테이너 (신뢰성과 성능이 어느 정도 보장  서비스 품질 보장) • JSP/Servlet 스펙을 포함하여 J2EE 표준 스펙까지 구현한 중대형급들이 대부분 • Sun사의 Java System Application Server • IBM의 WebSphere Application Server • Oracle 사의 Oracle Application Server (OAS) • Oracle Container for J2EE (OC4J), JBoss 커뮤니티에서 만든 Jboss • BEA사에서 만든 Weblogic 제14장

  24. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • 회사에서의 개발 환경 • 중대형급 웹 어플리케이션을 운영하는 곳에서는 개발하는 컴퓨터와 실제 서비스를 운영하는 서버가 일반적으로 다르게 존재 • 개발단계에서 서비스단계까지의 일련의 과정 • 배포 (Deploy) 방법 • war (webapplication archive)파일로 한데 묶어서 서버에 올려놓는다. 제14장

  25. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • 웹 어플리케이션의 폴더 및 파일 구조 제14장

  26. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • war 파일 • 웹 어플리케이션의 전체 폴더 및 파일을 한데 묶은 압축 파일 형태 • Java에서 사용하는 압축형식인 jar로 압축하여 확장자만 war 로 바꾼 것이다. • jar를 지원하는 압축 툴 (예를 들어 winzip이나 알집)에서는 war를 jar처럼 취급하여 압축을 풀 수 있다. • jar.exe를 활용한 war 파일 생성 • c: 새로운 파일을 생성한다. • v: command창으로 진행사항에 관한 메시지를 출력한다. • f: 압축해서 새롭게 생성될 파일이름을 지정한다. • jspbook.war: 새롭게 생성할 war 파일 이름을 지정한다. 가능하면 현재 웹 어플리케이션 폴더 이름과 동일한 파일 명을 사용한다. 제14장

  27. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • 탐색기에서 jspbook.war 생성 확인 제14장

  28. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • Tomcat 에서 war 파일의 배포 방법 • 1) Tomcat 설치 폴더 밑의 webapps 폴더에 war 파일을 옮겨놓는 방법 • 간단하지만 권장되지는 않는 방법 • 2) Tomcat 엔진의 관리도구인 Tomcat Manager를 활용하는 방법 • 비교적 쉽게 war 파일을 배포할 수 있으며 웹 상에서 모든 관리 기능을 사용할 수 있기 때문에 권장되는 방법 • Tomcat Manager 계정 추가 • Tomcat 설치 폴더의 conf 폴더 밑에 있는 tomcat-users.xml 초기 내용 • admin 계정 추가 제14장

  29. 4. 컨테이너와 웹 어플리케이션 배포 (Deploy) • Tomcat 기본 웹 페이지에서 Tomcat Manager 실행 제14장

  30. 5. 배포 서술자인 web.xml의 자세한 설명 • 배포 서술자 (Deployment Descriptor)인 web.xml의 역할 정리 • 효율적인 웹 어플리케이션의 운영 및 유지보수 • 서블릿 매핑 및 필터와 리스너 매핑 등을 텍스트 기반으로 설정할 수 있기 때문에 프로그램을 수정하지 않고도 웹 어플리케이션의 동작 방법을 큰 관점에서 제어하고 수정 • 초기화 파라미터의 손쉬운 설정 • 웹 어플리케이션의 동작에 영향을 주는 초기화 파라미터의 설정을 텍스트 기반에서 할 수 있기 때문에 응용 프로그램 수정 없이도 초기화 파라미터를 변경하여 웹 어플리케이션 동작을 쉽게 제어 • 컨테이너 호환성 유지 • 웹 어플리케이션의 배포와 관련된 정보를 텍스트 기반으로 유지함으로써 서로 다른 컨테이너에서 손쉽게 그 정보를 분석하여 동일한 방법으로 웹 어플리케이션을 운영 • 최근에는 시스템의 환경 설정 정보는 대부분 XML 텍스트 문서로 만들어 저장하고 있으며 web.xml도 대표적인 XML기반 환경 설정 파일이다. 제14장

  31. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <web-app> 루트 태그 (Root Tag) • <description> 태그 및 <display-name> 태그 • <display-name>은 Tomcat Manager 같은 관리형 어플리케이션에서 현재 웹 어플리케이션을 표시할 때 사용하는 이름을 지정 제14장

  32. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (1/7) • Servlet에 대한 요청 URL을 "/controller/my.do"로 만들고 있다는 점에 주목 • 이 URL에 대해서 controller 라는 폴더와 my.do라는 파일이 물리적으로 존재하는가? 그렇지 않다. • 물리적으로는 그 URL에 매핑되는 Servlet을 thinkonweb.mvc.MyController로 등록해 놓았기 때문에 논리적 폴더 및 파일 구조와 물리적 구조가 전혀 다르다. 제14장

  33. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (2/7) 제14장

  34. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (3/7) • <url-pattern>과 </url-pattern>에 기입할 수 있는 내용의 종류 • 요청 URL과 <url-pattern> 내용과의 매칭 규칙 • 규칙 1) 폴더명과 파일명 및 확장자까지 정확히 일치하는 <url-pattern> 값이 최우선시 된다. • 규칙 2) 다음으로 폴더명까지 일치하는 <url-pattern> 값이 우선시 된다. • 규칙 3) 마지막으로 확장자만 일치하는 <url-pattern> 값이 있는지 찾아본다. • 규칙 4) 위와 같은 규칙을 통해서도 여러 <url-pattern> 값과 일치한다면 많은 내용이 일치하는 것이 우선시 된다. 제14장

  35. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (4/7) • web.xml 에 작성된 <servlet>과 <servlet-mapping> 태그 예 제14장

  36. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (5/7) • 앞선web.xml에 대한 여러 URL의 매핑 예 • http://localhost:8080/jspbook/list.do ⇔ thinkonweb.foo.TestA (규칙 3) • http://localhost:8080/jspbook/foo/bar ⇔ thinkonweb.foo.TestB (foo와 bar를 폴더명이라고 가정했을 때 규칙 2와 규칙 4 적용) • http://localhost:8080/jspbook/foo/bar/list.do ⇔ thinkonweb.foo.TestC (규칙 2) • http://localhost:8080/jspbook/foo/list.do ⇔ thinkonweb.foo.TestC (규칙 2) • http://localhost:8080/jspbook/bar/list.do ⇔ thinkonweb.foo.TestA (규칙 3) • http://localhost:8080/jspbook/foo ⇔ thinkonweb.foo.TestC (규칙 2) • http://localhost:8080/jspbook/foo/bar/view.goo ⇔ thinkonweb.foo.TestC (규칙 2) • http://localhost:8080/jspbook/bar/view.goo ⇔ 404 FILE NOT FOUND 에러 (일치하는 Servlet 클래스 없음) 제14장

  37. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (6/7) • web.xml 에 작성된 <servlet>과 <servlet-mapping> 태그의 약간 난해한 예 제14장

  38. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <servlet>과 <servlet-mapping> 태그 (7/7) • 앞선web.xml에 대한 여러 URL의 매핑 예 • http://localhost:8080/jspbook/foo/bar/ ⇔ thinkonweb.foo.TestE (규칙 2 & 규칙 4) • http://localhost:8080/jspbook/foo/bar ⇔ thinkonweb.foo.TestD (규칙 2 & 규칙 4) 제14장

  39. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <listener> 태그 • <filter> 태그 제14장

  40. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <welcome-file-list> 태그 • 특정 파일명 없이 http://www.google.com과 같이 웹 사이트명으로 끝나거나 http://www.google.com/map과 같이 폴더명으로 끝나게 될 때 이 요청에 대한 응답 파일을 설정하는 태그 • 먼저 지정한 파일이 우선순위가 높다. • [Note] 폴더명으로 끝나는 것에 대해서는 우선 Servlet 매핑 태그인 <url-pattern>에 의하여 매핑이 되는지부터 살펴본다는 점이 중요 • <context-param> 태그 제14장

  41. 5. 배포 서술자인 web.xml의 자세한 설명 • web.xml의 태그 설명 • <error-page> 태그 제14장

  42. 5. 배포 서술자인 web.xml의 자세한 설명 • Servlet을 강제로 초기화하기 • JSP 및 Servlet은 최초 요청이 들어왔을 때 초기화가 된다고 하였다. • 즉 클라이언트의 요청 URL이 아직 초기화되지 않은 JSP나 Servlet을 요청하고 있다면 이 요청에 의하여 컴파일, 클래스의 메모리 적재, 초기화 (init() 함수 호출)과 같은 일련의 과정이 이 순간에 모두 일어나게 된다. • 따라서 최초 요청에 대해서는 다소 응답시간 지연이 발생할 수 있다. • 이러한단점을 없에는 방법: Servlet을 강제로 초기화하기 제14장

  43. 5. 배포 서술자인 web.xml의 자세한 설명 • server.xml과 웹 어플리케이션 폴더 설정 • 컨테이너 외부 자원의 등록 (DB 등록) • Tomcat 엔진의 서비스 포트 번호 변경 및 인코딩 방법에 대한 설정 제14장

  44. 5. 배포 서술자인 web.xml의 자세한 설명 • server.xml과 웹 어플리케이션 폴더 설정 • 웹 어플리케이션을 webapps 하위의 폴더가 아닌 전혀 다른 폴더에서 개발하고자 할 때의 수정 방법 제14장

More Related