웹서버프로그래밍 2
JSP 개요
01. JSP 개요 (1) 서블릿 (Servlet) 과 JSP(Java Server Page) 서블릿은자바를이용한서버프로그래밍기술 초기웹프로그래밍기술인 CGI(Common Gateway Interface) 를대체하기위해개발되었으나, 느린처리속도, 많은메모리요구, 불편한화면제어등의한계로 PHP, ASP 등서버스크립트언어등장 JSP 는 PHP 와유사한형태로 HTML 을중심으로자바프로그램과의유기적인연결을지원 01 public class HelloWorldServlet extends HttpServlet { 02 public void doget(httpservletrequest request, 03 HttpServletResponse response) 04 throws ServletException, IOException { 05 response.setcontenttype("text/html; charset=euc_kr"); 06 PrintWrite out = response.getwriter(); 07 out.println("<html><head><title> 로그인 </TITLE></HEAD>"); 08 out.println("<body><h2>hello World : 헬로월드 </H2>"); 09 out.println(" 오늘의날짜와시간은 : "+new 10 java.util.date()); 11 out.println("</body></html>"); 12 } 13 } 01 <%@ page contenttype="text/html;charset=utf-8" %> 02 <HTML> 03 <HEAD><TITLE>Hello World</TITLE></HEAD> 04 <BODY> 05 <H2>Hello World!</H2> 06 오늘의날짜와시간은 : <%= new java.util.date() %> 07 </BODY> 08 </HTML> 3
01. JSP 개요 (2) JSP 의특징 자바의모든기능을사용할수있음 서블릿으로컴파일된후메모리에서처리되기때문에많은사용자의접속도원활하게처리가능 JSP 또는다른서블릿간의데이터를쉽게공유 빈즈 (Beans) 라고하는자바컴포넌트를사용가능 커스텀태그를만들어사용할수있으며, JSTL(JSP Standard Tag Library) 과같은태그라이브러리를이용가능 스트러츠, 스프링 @MVC 등다양한프레임워크와결합하여개발가능 4
01. JSP 개요 (3) 요구되는프로그래밍기술웹프로그래밍기술 HTML JavaScript CSS Java 프로그래밍기술 Java JDBC Servlet 추가프로그래밍기술 Database XML Mobile Programming Framework 5
01. JSP 개요 (4) JSP 전체동작서버에서실행한결과를웹브라우저에전달 Web Browser JSP 페이지요청 HTML 페이지응답 Web Server Servlet Container Servlet Container 서블릿이존재하면바로실행 서블릿은자바소스로작성된클래스파일구조없는경우 JSP 를서블릿코드로변환한후실행 컴파일된클래스파일은소스변경전까지메모리상주하면서서비스제공 6
01. JSP 개요 (5) 서블릿과 JSP 기술변천 7
02. 서블릿 (1) 서블릿 (Servlet) 이란? 서블릿은자바플랫폼에서컴포넌트를기반으로하는웹애플리케이션개발의핵심기술 JSP 는서블릿기반의웹프로그래밍기술로내부적으로 JSP 는서블릿으로변환되어실행 서블릿의장점 자바를기반으로하므로자바 API 를모두사용가능 운영체제나하드웨어에영향을받지않으므로, 한번개발된애플리케이션은다양한서버환경에서도실행가능 웹애플리케이션에서효율적인자료공유방법제공 다양한오픈소스라이브러리와개발도구활용가능 8
02. 서블릿 (2) 웹애플리케이션개발에서블릿사용시이점 MVC 패턴을쉽게적용가능하며, 컨테이너와밀접한서버프로그램구현가능 MVC 패턴을적용할때콘텐츠와비즈니스로직을분리할수있으며컨트롤러와뷰가역할을분담함으로써, 웹디자이너와개발자간작업원활 리스너, 필터등고급프로그래밍기법활용가능 스프링등오픈소스프레임워크의기본기술 9
02. 서블릿 (3) 서블릿컨테이너 서블릿을실행하기위한서버소프트웨어 웹서버와서블릿컨테이너 10
02. 서블릿 (4) 서블릿개발과실행과정 11
02. 서블릿 (5) 서블릿동작과정 일반적인애플리케이션처럼버튼을누르면시작되고, 처리를마치면종료되는구조가아님서버에서컨테이너에의해실행되면서생명주기를가지며, 특정이벤트와상태가존재하는구조서블릿개발은해당생명주기메소드를오버라이딩하거나 doget(), dopost() 와같은사용자요청처리메소드를구현하는것 init() 은서블릿실행시한번만실행되는메소드 service() 는사용자요청시매번호출되는메소드 destroy() 는서블릿종료시실행되는메소드 12
02. 서블릿 (6) 서블릿구조와 API 서블릿은일반적인자바클래스구조를가짐 일반자바소스의구조이므로컴파일과정필요 서블릿은컨테이너에의해실행되므로개발자가임의로프로그램하는것이아니라특정클래스를상속받아야만구현할수있는구조임 서블릿프로그램을위해서블릿클래스의상관관계나 API 의기본구조를이해해야함 일반적으로서블릿은 java.servlet.httpservlet 클래스를상속해서구현함 13
02. 서블릿 (7) javax.servlet.http.httpservlet 동작구조 GenericServlet 에비해 HTTP 프로토콜지원이포함되어일반적인웹프로그램에적합 HttpServlet 도 javax.servlet.genericservlet 을상속받고있음 사용자요청에따라 GET, POST 방식으로구별해처리하지만경우에따라서는구분없이처리하기도함 URL 요청은 HTTP 프로토콜에서는 GET /index.html 과같이서버에전달됨 HTTP 프로토콜에는 GET, POST, PUT, HEAD, DELETE, OPTIONS, TRACE 와같은요청이정의되어있으며서블릿에도각각 doget(), dopost() 와같은대응메소드가존재함 14
03. JSP 개발환경개요 JSP 개발환경을구축하려면여러개발툴을상호연동하여설치해야함 JSP 는자바로구현되므로자바개발환경필요 : JDK http://www.oracle.com 작성한코드를웹서버에서실행하려면 JSP 운영환경필요 : Apache Tomcat http://tomcat.apache.org 자바를이용한편리한개발을위해통합개발환경필요 : Eclipse http://www.eclipse.org 15
Spring 16
POJO Plain Old Java Object : 평범한자바객체 클래스상속을강제하지않음 Servlet의경우 HttpServlet 상속받아야함 public HelloServlet extends HttpServlet { } 인터페이스구현을강제하지않음 Annotation 사용을강제하지않음 public HelloController { } 17
MVC (1) MVC 개념 애플리케이션코드를역할별로 Model, View, Controller 로나눈패턴 이패턴의주목적은 Business logic 과 Presentation logic 을분리한것 Model 애플리케이션으로표현하려는도메인영역을자바클래스로표현한것 예 : 온라인서점애플리케이션의 Book, BookShelf, Staff 등 View 사용자에게제공할화면 (Presentation logic) 담당 예 : 사용자에게보이는화면, 책의위치를보여주는약도 Controller 사용자로부터요청을받아해당요청을처리하는데필요한로직을수행하고그결과에해당하는 Model 을필요로하는 View 로제공해주는역할 예 : 사용자의요청을받아 Book 객체목록을만들고그목록을 searchresult.jsp 뷰로보여주라는일수행 18
MVC (2) Spring MVC 요청 & 응답 DispatcherServlet HelloController Hello.jsp 19