100 likes | 302 Views
1. JSP 를 시작하며. 인천대학교 컴퓨터공학과 성 미 영 http://marvel.incheon.ac.kr/~mysung mailto:mysung@incheon.ac.kr. JSP 를 시작하며 1. 1. JSP(Java Server Page) 는 웹 프로그래밍 언어이다 . 원래 서블릿 (servlet) 과 JSP 는 Sun 사의 Java 웹 서버 제품의 보조 기술로 등장
E N D
1. JSP를 시작하며 인천대학교 컴퓨터공학과 성 미 영 http://marvel.incheon.ac.kr/~mysung mailto:mysung@incheon.ac.kr
JSP를 시작하며1 • 1. JSP(Java Server Page)는 • 웹 프로그래밍 언어이다. • 원래 서블릿(servlet)과 JSP는 Sun사의 Java 웹 서버 제품의 보조 기술로 등장 • 첫 번째 JSP API(Application Programming Interface) 스펙(specification)이 1998년에 발표됨 • 1999년 5월 JSP 1.0 스펙이 발표되면서 안정적인 개발 플랫폼의 면모를 갖춤 • JSP 기능 역시 서블릿 기술을 사용하여 구현 되었기 때문에 기존의 서블릿 제품들은 JSP의 장점을 그대로 충분히 흡수함 • 최근 JSP가 급속히 확산되고 있으며 능력 있는 개발자가 부족한 상태임 JSP(JavaServerPage)
JSP를 시작하며2 • 2. JSP의 특징 • 플랫폼에 독립적이다. • “Write Once, Run Anywhere” • 개발자는 하드웨어나 운영체제가 어떤 것이 돌아가는지 고려하지 않아도 된다. • 개발이 되면 다른 환경으로 큰 변경 작업 없이 이식이 가능하다. • 소프트웨어의 재사용성이 증가된다. • 미리 개발해 놓은 자원을 다른 곳에서도 새로운 개발 없이 사용이 가능하다. • 안정적이며 수행 속도가 향상된다. • JSP는 스크립트지만 브라우저가 읽어 들이기 전에 JSP컨테이너에 의해 컴파일이 되고 서블릿 코드로 변환 된다는 점에서 속도가 향상된다는 말에 의문이 생길 수 있지만 이 과정은 처음에 한번만 일어나기 때문에 한번 컴파일이 된 JSP페이지는 뛰어난 속도를 자랑한다. • 또한 JSP는 하나의 요청마다 쓰레드를 생성하기 때문에 하나의 요청마다 프로세스를 생성하는 CGI나 ASP보다 뛰어나다. JSP(JavaServerPage)
JSP를 시작하며3 • 디자인 부분과 프로그램 부분의 분리가 가능하다. • JSP는 컴포넌트 중심적인 디자인이기 때문에 자바빈즈(JavaBeans)로서 만들어진 서버측 객체의 기능을 사용할 수 있는 HTML과 비슷한 태그 시스템을 가지고 있다. • 프로그래머는 자바빈즈로 구현하고 프리젠테이션 팀이 JSP를 통해 자바빈즈를 사용한다. • J2EE(Java 2 Enterprise Edition)의 진입로이다. • Sun사는 1998년경부터 기업용 서버 플랫폼에 대비를 해오고 있다. 그 대표 적인 것이 Java 2 Enterprise Edition이다. • J2EE에는 JSP를 필두로 서블릿(Servlet),XML,EJB(Enterprise JavaBean),JavaMail,JNDI(JavaNaming and Directory Interface),CORBA등의 핵심 기술로 이루어져있다.(교재 p13참조) • J2EE핵심 기술들을 모두 JSP가 웹에서 연동하고 있다. JSP(JavaServerPage)
JSP를 시작하며4 • 3. JSP와 서블릿 • 서블릿(Servlet)은 서버에서 실행되도록 컴파일된 웹 어플리케이션이다. • 서블릿은 소스제작→컴파일→결과물을 서버의 디렉토리에 저장하는 과정을 거친다. • JSP는 컴파일하는 과정에서부터 웹 프로그램에서 서블릿을 불러들이는 과정까지를 JSP 컨테이너가 알아서 하도록 만들어졌다. • JSP 컨테이너의 종류에는 Jakarta-tomcat, JRun, Resin 등이 있으며 여기서는 Jakarta-tomcat을 사용할 것이다. JSP(JavaServerPage)
JSP를 시작하며5 • 다음 그림은 JSP 컨테이너가 JSP서블릿을 생성하여 실행시키는 과정을 나타낸 것이다. JSP(JavaServerPage)
JSP를 시작하며6 • 다음은 실제로 JSP 파일을 서블릿으로 변환한 소스를 보자 • 위의 소스는 JSP 소스이다. 다음에 나오는 소스는 JSP 컨테이너가 JSP 소스를 서블릿으로 변환시킨 소스이다. JSP(JavaServerPage)
JSP를 시작하며7 import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.PrintWriter; import java.io.IOException; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.util.Vector; import org.apache.jasper.runtime.*; import java.beans.*; import org.apache.jasper.JasperException; public class _0002fFirst_0002ejspFirst_jsp_0 extends HttpJspBase { static { } public _0002fFirst_0002ejspFirst_jsp_0( ) { } private static boolean _jspx_inited = false; public final void _jspx_init() throws JasperException { } JSP(JavaServerPage)
JSP를 시작하며8 public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { JspFactory _jspxFactory = null; PageContext pageContext = null; HttpSession session = null; ServletContext application = null; ServletConfig config = null; JspWriter out = null; Object page = this; String _value = null; try { if (_jspx_inited == false) { _jspx_init(); _jspx_inited = true; } _jspxFactory = JspFactory.getDefaultFactory(); response.setContentType("text/html;charset=ISO-8859-1"); pageContext = _jspxFactory.getPageContext(this, request, response, "", true, 8192, true); application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); JSP(JavaServerPage)
JSP를 시작하며9 // HTML // begin [file="C:\\jakarta-tomcat-//3.2.2\\webapps\\examples\\First.jsp";from=(0,0);to=(4,3)] out.write("<html>\r\n<head><title>KEJ's Web-Server</title></head>\r\n<body>\r\n <hr>\r\n "); // end // begin [file="C:\\jakarta-tomcat- //3.2.2\\webapps\\examples\\First.jsp";from=(4,5);to=(8,4)] out.println("<p align='center'>Hello</p>"); out.println("<p align='center'>This is <B>KEJ'</B>s Web Server!</p>"); // end // HTML // begin [file="C:\\jakarta-tomcat-//3.2.2\\webapps\\examples\\First.jsp";from=(8,6);to=(12,0)] out.write("\r\n <hr>\r\n</body>\r\n</html>\r\n"); // end } catch (Exception ex) { if (out != null && out.getBufferSize() != 0) out.clearBuffer(); if (pageContext != null) pageContext.handlePageException(ex); } finally { if (out != null) out.flush(); if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext); } } } JSP(JavaServerPage)