■ 이클립스에서 Server 셋팅 : Tomcat 다운로드 하여 압축 해제 ( http://tomcat.apache.org/ )
본인 컴퓨터로 서버와 클라이언트를 테스트

- 상단 메뉴의 [Window]-[Preferences]-[Server]-[Runtime Enviroments]


▲ Add 버튼을 눌러 다운받은 Tomcat v7.0 을 추가한다.


- v7.0을 선택하고 Next





- Browse를 눌러 압축해제한 폴더를 찾아 지정 후 Finish ( bin 폴더의 상위폴더를 지정하면 된다 )





- Project Explorer에서 우클릭하여 [New]-[Other] 선택 ( Java EE 영역인지 확인 )
- 서버에서 작업할 Project 를 미리 추가해 둔다. ( ex [New]-[Project] )




- Server를 선택 후 Next





- Tomcat 버젼 및 localhost 등 확인 후 Next





- 앞서 미리 생성해 두었던 프로젝트를 선택 후 Add 하여 옮겨졌음을 확인 후 Finish





- 서버가 정상적으로 추가 되었음을 확인 후 아래의 Server 탭에서 서버 선택 후
 버튼을 눌러 서버를 시작하면 끝






■ 이클립스에서 JSP Servlet 환경 설정
 ο 환경 설정 변경
   1) JSP / HTML 한글 인코딩을 UTF-8로 변경
       [Window] - [Preferences...] - Web - Jsp Files
       [Window] - [Preferences...] - Web - HTML Files

     - 우측 화면의 Encoding 에 "ISO 10646/Unicode(UTF-8)" 로 변경 후 [Ok] 버튼 클릭


  2) 자바 스크립트 파일 한글 인코딩을 UTF-8로 변경
    -  [Window] - [Preferences...] - General - Contents type ...
    - 우측 화면의 Text-Javascript 의 Default encoding 에  "utf-8" 로 변경 후 [update] 버튼 클릭


  3) 기타 환경설정
     (1) 글꼴변경
          - 메뉴 - [Window] - [Preferences...] General - Colors and Fonts
          - 우측 화면에서 [Basic] - [Text Font] 에서 글꼴 변경

     (2) 에디터에 라인넘버 표시
          - 메뉴 - [Window] - [Preferences...] General - Editors - Text Editors
          - 우측 화면에서 Show line numbers 를 체크

     (3) JDK 버전 설정
          - 메뉴 - [Window] - [Preferences...]
          - 좌측 화면에서 [Java] - [컴파일러] 선택
          - 우측 화면에서 [컴파일러 준수 레벨:] - [6.0] 인지 확인

     (4) 웹 환경의 JDK 버전을 변경해야 하는 경우
           - 좌측 프로젝트의 프로젝트명에서 마우스 우측
           - 팝업 메뉴 - Properties - Project Facets
           - 우측의 Java를 선택하고 오른쪽 아래 Modify Project ... 를 눌러 수정 한다.


 ο 새로운 프로젝트 생성
  1) [파일] → [새로 작성] → [프로젝트]
  2) 종류는 Web를 선택한다.
  3) 프로젝트 리스트 중에 "Dynamic Web Project"를 선택하고 "Next"를 누른다.
  4) 새 프로젝트 창
   - Project name : 프로젝트 이름을 입력 한다. - 예 : study
   - Target Runtime : 톰캣을 설정 한다.
     (1) [New] - Apche(Tomcat 6.X) 선택, Also new local server 선택 - [Next]
     (2) Tomcat installation directory 의 [Browse...] 버튼 클릭 - 톰캣이 설치 된 root 경로 선택
                                                                (예 - C:\apache-tomcat-6.0.23)
         JRE : default JRE (손대지 않아도 됨)
         [Finish]
     (3) [Finish]
  5) 오른쪽 아래의 서버 창에서 프로젝트를 서버에 추가 한다.
     서버 창에서 마우스 우측 - Add and Remove Project ... - 프로젝트명 선택


 ο Server 생성(위 4) 번에서 Also new local server 을 선택 하지 않은 경우)
  1) 이클립스 아래 부분의 "Server" 탭을 클릭
  2) 마우스 우측 - [New] - [Server]
  3) "Tomcat v6.0 Server"를 선택 - [Next]
  4) 좌측에서 "study" 선택 - [Add]


 ο JSP 템플릿 페이지 구성
    1) 메뉴 : Window - Perferences... - web and XML - JSP Files - Template
    2) 오른쪽 화면의 "New JSP File(html)" 을 선택 하고 "Edit" 버튼
    3) 수정 후 "Ok"

// 참고 : 템플릿 예==============================================================
<%@ page contentType="text/html; charset=${encoding}" %>
<%
   String cp = request.getContextPath();
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=${encoding}">
<title>Insert title here</title>
</head>
<body>
${cursor}
</body>
</html>
// =======================================================================

 

 

 


 

'JSP' 카테고리의 다른 글

이클립스 환경설정 (Server / JSP Servlet)  (0) 2011.12.07
내부 객체와 폼 처리  (0) 2011.12.07
서블릿 참고 페이지 외  (0) 2011.12.07
개요  (0) 2011.12.07
내부 객체와 폼 처리 JSP 2011. 12. 7. 12:21

■ request header 정보

  □ Accept : 브라우저나 기타 클라이언트가 다룰 수 있는 MIME 형식들을 지정하는 것이다.
  □ Accept-Charset : 브라우저가 사용할 수 있는 문자셋(ISO-8859-1)을 의미한다.
  □ Accept-Encoding :  클라이언트가 원하는 인코딩 방식들을 의미한다. 문서를 네트웍 너머로 보내기에 적합한 형태로
     변환하는것 을 의미한다.
  □ Accept-Language : 클라이언트가 원하는 기본 언어를 의미한다. 
  □ Authorization : 헤더는 패스워드로 보호된 웹 페이지에 접근하려 하는 클라이언트가 자신의 신원 정보를 보내는 
     용도로 쓰인다.
  □ Cache-Control : 프록시 서버에서의 캐시 설정을 의미한다. 
  □ Connection : 클라이언트가 영속적 HTTP 연결을 처리할 수 있는지의 여부를 뜻한다.
  □ Content-Length : post만 해당하는 것으로, post 데이터에 담긴 데이터의 크기를 의미한다.
  □ Content-type : 주로 응답에서 쓰이지만, 클라이언트가 post나 put을 이용해서 어떤 문서를 첨부했다면 클라이언트
     요청 안에 포함되기도 한다.
  □ Cookie : 서버가 브라우저에게 보냈던 쿠키를 다시 서버로 돌려 보낼 때 쓰인다.
  □ Expect : 클라이언트가 바라는 서버의 행동이 어떤 것인지를 의미하는 헤더로 별로 쓰이지는 않는다.
  □ From : HTTP 요청에 대해 책임이 있는 사람의 전자 우편주소이다.
  □ Host : URL안에 호스트와 포트 번호로 브라우저는 반드시 이 헤더를 포함해야함. 브라우저가 원하는 구체적인 자원을 
     정확하게 돌려주기 위한 용도로 쓰임.
  □ If-Match : put요청에 해당하는 헤더
  □ If-Modified-Since : 어떤 페이지의 최종 수정일시가 특정항 일시 이후인 경우만 그 페이지를 돌려 받기 원하는 경우
     이 헤더에 그 일시를 헤더에 설정해서 요청한다.
  □ If-None-Match : If-Match와 받대
  □ If-Range : 다운로드 관리자의 이어받기 기능에서 주로 이용된다. 어떤 하나의 문서의 일부분만을 가지고 있을 때 수정 
     일시를 지정해서 그 일시 이후에 변한 것이 없으면 이미 가지고 있는 부분 이외의 것만 받게하고 아니면 문서 전체를 
     받는 용도로 쓰인다.
  □ If-Unmodified-Since : If-Modified-Since 반대
  □ Pragma : 헤더 값이 no-catch이면 프록시 서버 또는 하나의 프로시로서 작동하는 서블릿은 캐시에 복사본이 있다고
     해도 서버에서 처리한 response를 전달한다.
  □ Procy-Authorization
  □ Range : If-Range 와 비슷하다.
  □ Referer : 이전 url정보를 얻을 때 사용하지만, 너무 믿으면 곤란하다.
  □ Upgrade : 클라이언트가 서버에게 HTTP1.1 이상의 어떠한 프로토콜을 지정하는 용도로 쓰인다.
  □ User-Agent : 브라우저의 소프트웨어 종류와 버전을 의미한다.  
  □ Via : 요청이 거쳐간 중간 사이트들을 의미한다 주로 게이트웨이나 프록시 서버가 설정한다. 
  □ Warning : 클라이언트가 캐싱이나 내용 변환 관련 에러게 대해 경고 할 때 쓰이는 헤더로 자주 쓰이지 않는다.  



■ HttpServletRequest

  □ Request
    - GET/POST로 전송한 값을 가져오거나 클라이언트 IP등의 정보를 가져오거나, 쿠키, 헤더등의 정보를 리턴한다.


  □ 특징
    - javax.servlet.http.HttpServletRequest 인터페이스.
    - javax.servlet.ServletRequest 인터페이스에서 상속을 받음.
    - 웹 클아이언트로부터 전달되는 요청을 표현하기 위해서 사용.


  □ local의 기본 정보 (서버의 정보) <br>
        Local IP = <%= request.getLocalAddr() %> <br>
        Local Name = <%= request.getLocalName() %> <br>
        Local Port = <%= request.getLocalPort() %> <br>
        <br>


  □ 클라이언트의 정보 <br>
        Remote IP : <%= request.getRemoteAddr() %> <br>
        Remote Host : <%= request.getRemoteHost() %> <br>
        Remote Port : <%= request.getRemotePort() %> <br>
        <br>


  □ 서버 이름과 포트 (일반적으로 local 기본정보와 동일) <br>
        Server Name : <%= request.getServerName() %> <br>
        Server Port : <%= request.getServerPort() %> <br>
        <br>


  □ 지역 정보 <br>
        Locale : <%= request.getLocale() %> <br>
        <br>


  □ 사용하는 프로토콜 ("프로토콜/메이저버전.마이너버전"의 형태) <br>
        Protocol : <%= request.getProtocol() %> <br>
        <br>


  □ http, https, ftp 여부 <br>
        Scheme : <%= request.getScheme() %> <br>
        <br>


  □ https와 같은 보안 채널의 사용 여부 (true/false 값) <br>
        Secure Channel : <%= request.isSecure() %> <br>
        <br>


  □ 요청에 대한 URI, URL, 컨텍스트 경로, 서블릿 경로, GET/POST 등의 메소드 <br>
        Request's URI : <%= request.getRequestURI() %> <br>
        Request's URL : <%= request.getRequestURL() %> <br>
        Context Path : <%= request.getContextPath() %> <br>
        Servlet Path : <%= request.getServletPath() %> <br>
        Method : <%= request.getMethod() %> <br>
        <br>


  □ 세션 ID에 대한 정보 <br>
        Session ID : <%= request.getRequestedSessionId() %> <br>
        Session ID from Cookie : <%= request.isRequestedSessionIdFromCookie() %> <br>
        Session ID from URL : <%= request.isRequestedSessionIdFromURL() %> <br>
        Session ID is still valid : <%= request.isRequestedSessionIdValid() %> <br>
        <br>


  □  Header 정보 보는 방법 <br>
        <%
            Enumeration eHeader = request.getHeaderNames();
       
            while(eHeader.hasMoreElements()) {
                String hName = (String)eHeader.nextElement();
                String hValue = request.getHeader(hName);
               
                out.println(hName + " : " + hValue);
            }
        %>
        <br>

       
  □ Request 객체를 통해서 쿠키 정보 보는 방법 <br>
        <%
            Cookie cookies[] = request.getCookies();
       
            for(int i=0 ; i<cookies.length ; i++) {
                String name = cookies[i].getName();
                String value = cookies[i].getValue();
               
                out.println(name + " : " + value);
            }
        %>
        <br>

       
   □ HTML 폼을 통해 넘어온 데이터를 받는 부분 <br>
        <%
            Enumeration eParam = request.getParameterNames();
       
            while(eParam.hasMoreElements()) {
                String pName = (String)eParam.nextElement();
                String pValue = request.getParameter(pName);
               
                out.println(pName + " : " + pValue);
            }
        %>
        <br>


  □  attribute를 가져오는 부분 <br>
        <%
            Enumeration eAttr = request.getAttributeNames();
       
            while(eAttr.hasMoreElements()) {
                String aName = (String)eAttr.nextElement();
                String aValue = (String)request.getAttribute(aName);
               
                out.println(aName + " : " + aValue);
            }
        %>


  □  [[request로 넘어오는 데이타들]], form 에서 enctype="multipart/form-data" 인경우 만 사용 가능<br/>
     <%
          DataInputStream dis = new DataInputStream(request.getInputStream());
          String str;
          while((str = dis.readLine()) != null){
                out.println(new String(str.getBytes("ISO-8859-1"), "euc-kr")+"<br/>"); // utf-8로 전송된 한글은 깨짐
          }
      %>

'JSP' 카테고리의 다른 글

이클립스 환경설정 (Server / JSP Servlet)  (0) 2011.12.07
내부 객체와 폼 처리  (0) 2011.12.07
서블릿 참고 페이지 외  (0) 2011.12.07
개요  (0) 2011.12.07
서블릿 참고 페이지 외 JSP 2011. 12. 7. 12:01

* 서블릿 한글 페이지
http://pllab.kw.ac.kr/j2eeAPIs/api/index.html


* 주요 API 페이지
J2SE 5.0
http://java.sun.com/j2se/1.5.0/docs/api/

J2SE 1.4.2
http://java.sun.com/j2se/1.4.2/docs/api/

J2SE 1.3
http://java.sun.com/j2se/1.3/docs/api/

Servlet 2.3
http://java.sun.com/products/servlet/2.3/javadoc/index.html

Servlet 2.2
http://java.sun.com/products/servlet/2.2/javadoc/index.html

Struts Guide
http://struts.apache.org/userGuide/index.html

Log4j
http://logging.apache.org/log4j/docs/api/index.html


* ServletConfig_ServlerContext
- ServletConfig 인터페이스
   서블릿을 초기화하는 동안에 해당 서블릿에 정보를 전달


- ServlerContext 인터페이스
  동일한 웹 응용 프로그램 내에 소속된 서블릿과 JSP들 간에 서로 정보를 공유할 수 있도록 데이터를 저장하고, 검색


- 서블릿에서 ServletConfig, ServlerContext 객체 얻기
  ServletConfig contig = getServletConfig();
  ServlerContext context = getServletContext();


- 로그 파일 기록 / 절대 경로 구하기
  ServlerContext context = getServletContext();
  context.log("로그 파일.....");
  String root=context.getRealPath("/");


- JSP 절대 경로 구하기
  String root = pageContext.getServletContext().getRealPath("/");

'JSP' 카테고리의 다른 글

이클립스 환경설정 (Server / JSP Servlet)  (0) 2011.12.07
내부 객체와 폼 처리  (0) 2011.12.07
서블릿 참고 페이지 외  (0) 2011.12.07
개요  (0) 2011.12.07
개요 JSP 2011. 12. 7. 11:55

■ 웹 어플리케이션
   웹 브라우저의 요청에 대하여 처리해서 결과를 보여주는 프로그램을 의미

 ο 웹 어플리케이션의 구성요소
   1. 웹 브라우저
       사용자에게 화면(즉, User Interface)을 제공

    2. 웹 서버(WAS : Web Application Server)
       웹 브라우저를 이용하여 World Wide Web을 사용하는 클라이언트에게 미리 저장된 하이퍼 텍스트(Hyper Text)를 제공하는 서버로 유닉스 기반의 아파치 서버와 마이크로소프트 윈도우 기반의 IIS 서버와 등이 있다.

      [종류]
       Apache server, Apache-SSL server, IIS(Internet Information Server), jeus(tmax) 등

     3. 어플리케이션 서버
         처리 결과 값을 웹 서버에 전달

     4. 데이터베이스
        데이터 저장

      - DBMS 종류
        오라클, IBM(DB2+인포믹스(Informix)), Microsoft SQL Server, 사이베이스(Sybase), 티베로 RDBMS(티멕스), MySql 등


■ 서블릿 개요
 ο 개요
    서블릿은 Java 언어를 기반으로 하여 동적인 컨텐츠를 생성하며 Java 코드 안에 HTML 태그가 혼재되어 있어서 그 효율성이 떨어진다.

    - 서블릿은 멀티쓰레딩에 의해 사용자 요구를 처리하고 가공해서 이에 대한 결과를 전달한다.
    - JSP 는 주로 UI(사용자용 뷰) 의 구현에 사용되고 서블릿은 UI와 프로그램 로직사이를 제어해주는 역할에 주로 사용 되어 진다.


 ο Servlet의 장점
   - 요청 시 마다 새로운 Process를 생성하지 않는다.
   - 서버의 Overhead를 줄일 수 있다.
   - 각 요청을 thread로 동작시키기 때문에 좀 더 효과적인 다중작업(multi-tasking)이 가능하다.
   - Servlet은 모든 요청에 대해 최초 한번의 Memory Loading을 한다.
   - Platform에 독립적이다.
   - 보안모델을 사용할 수 있다.


 ο 작성 방법
  1. 첫번째 방법
     서블릿은 Servlet 인터페이스를 구현한 GenericServlet 추상클래스를 상속 받아 service() 메소드를 재정의한다.

  2. 두번째 방법
     - GenericServlet 클래스를 상속 받은 http 프로토콜에 맞게 확장한 HttpServlet 클래스를 상속 받아 doGet(), doPost()등의 메소드를 재정의 한다.
     - HttpServlet 클래스의 주요 메소드는 service(), doGet(), doPost(), doHead() 등이 있다.


 ο Servlet Container
  1. 개요
     - 웹 서버는 JSP와 서블릿 자체를 실행하지 못하므로 JVM을 내장한 컨테이너라는 서블릿 실행환경이 필요하다.
     - 대표적인 웹 컨테이너
       자카르타 톰켓, Resin, 웹 로직 등

  2. 역활
     - Servlet 을 탑재, 인스턴스 화 및 초기화 등 Servlet의 생명주기를 관리한다.
     - 웹 응용 프로그램을 위해 보안, 병행 성 관리, 라이프 사이클 관리 등의 서비스를 제공한다.
     - 보안(security)은 사용자 인증과 제한된 사용자만 접근할 수 있도록 지원
     - 병행 성 관리(Concurrency Management)는 여러 개의 작업이 동시에 이루어지는 경우에 스레드를 통하여 작업이 보다 효과적으로 이루어지도록 지원
     - 라이프 사이클 관리(Life Cycle Management)는 웹 응용 프로그램이 생성되고, 실행되고, 삭제되는 라이프 사이클 전 과정을 지원


 ο Servlet Life Cycle
    - init(), service(), destory()의 세 개의 메소드에 의한 생명주기를 갖는다.

    - 처음으로 서블릿의 요청이 들어 왔을 때 해당 서블릿은 서블릿 컨테이너에 의해 자동으로 메모리에 로딩 되어 진다.
      메모리로 서블릿 클래스가 로딩 된 후 바로 객체를 생성하게 되며 객체 생성과 동시에 init() 메소드를 호출하게 된다.
    - 서블릿이 로딩 될 때 단 한번 init() 메소드를 호출한다.
    - init() 메소드까지 호출 하였다면 service() 메소드를 수행하여 클라이언트의 요청에 반응한다.
    - 서블릿 객체가 더 이상 서비스를 하지 않고 있는 경우 메모리에서 제거되며 이때 호출되어지는 메소드는 destroy() 메소드이다.
       destroy() 메소드가 호출되면 가비지콜렉터는 객체의 메모리를 제거하게 된다.
    - init() 과 destroy() 는 단 한번 호출하게 되며 클라이언트의 요청에 따라 service() 메소드는 요청이 있을 때 마다 호출하게 된다.


 ο 서블릿의 동작 순서
   - 클라이언트의 요청
   - 서블릿 Handler 에서 요청 받음
   - 서블릿 컨테이너에서 해당 서블릿 검색
   - 해당 서블릿이 비지니스 로직 처리
  -  모든 작업이 완료 되었다면 응답으로 결과를 전송 한다.


 ο 디플로이먼트 디스크립터(deployment descriptor, 배포 설명자)
   1. 개요
      - 톰켓 에서의 Deployment Descriptor(배치 기술서)는 web.xml로 각 어플리케이션의 환경을 설정하는 부분을 담당
      - WAR 파일이 패키지 될 때 같이 포함되고, root directory 밑에 /WEB-INF 디렉토리에 위치한다.

   2. servlet과 servlet-mapping 태그
      - web.xml 문서의 servlet과 servlet-mapping 태그는 서블릿을 매핑 하는 것으로 보안과 주소를 간략화 하기 위해 사용한다.

      <servlet>
           <servlet-name>서블릿_이름</servlet-name>
           <servlet-class>패키지를 포함한 클래스_명</servlet-class>
       </servlet>
       <servlet-mapping>
         <servlet-name>서블릿_이름</servlet-name>
         <url-pattern>경로패턴</url-pattern>
       </servlet-mapping>

     - url-pattern은 어떠한 URL 경로로 접근할 수 있는지를 명시한다.

    3. deployment descriptor 이점
      - 이미 테스트된 소스 코드에 대한 수정을 최소화 한다.
      - 소스 코드 없이 애플리케이션을 목적에 맞게 수정할 수 있다.
      - 코드 변경이나 컴파일을 하지 않고도 서버 자원(DB 등등)을 바꿀 수 있다.
      - 접근 제어 목록, 보안 역할과 같은 보안에 관련된 업무도 관리할 수 있다.
      - xml 파일로 되어 있으므로 프로그래머가 아닌 사람도 설정할 수 있다.


 ο Servlet 인터페이스
  서블릿 프로그램은 init(), service(), destroy()의 세 가지 메소드에 의해서 초기화, 서비스, 파괴의 과정을 거치는데 이 세 메소드는 javax.servlet.Servlet 인터페이스에 선언되어 있다.


 ο GenericServlet abstract 클래스
    ServletConfig Interface, Servlet Interface, Serializable Inteface를 구현한 클래스로 네트워크 통신에 적합한 새로운 클래스로 Servlet과 ServletConfig는 서블릿 통신을 할 때 필요한 기본적인 메소드를 가지고 있으며, GenericServlet 에서 모두 구현하고 있다. 하지만 GenericServlet은 abstract 클래스이기 때문에 그 자체로는 사용할 수 없으며 반드시 상속해야만 사용할 수 있다.


 ο HttpServlet 클래스
    GenericServlet 클래스를 상속 받은 클래스로 일반적으로 웹 클라이언트로부터 온 요청을 받아서 처리하고, 그 결과를 다시 웹 클라이언트에게 되돌려 주는 작업을 수행한다.


 ο ServletRequest와 HttpServletRequest 인터페이스
   서블릿 엔진이 클라이언트로부터 온 요청에 대한 정보를 서블릿에게 전달하기 위해 사용하는 기능을 정의하고 있다.(client -> server)


 ο ServletResponse와 HttpServletResponse 인터페이스
   클라이언트 요청에 대한 응답을 MIME 자료 형태로 반환하는 데 사용하며, Binary Data의 전송을 위해서는 ServletOutputStream 형태의 getOutputStream() 을 사용하고, 일반 text data를 전송하시 위해서는 PrintWriter object 형태의 getWriter() 를 사용한다. Text data나 Binary data의 혼합형태(Multipart Response) 처리를 위해서는 ServletOutputStream을 이용해야 한다.(server->client)

   - MIME(Multipurpose Internet Message Extensions)
     Internet Message를 통해서 여러 가지 내용을 보낼 수 있도록 확장한 규격이다. 예를 들어 SMTP는 ASCII 문자로된 RFC 822 형식의 메시지만 전송 가능하다. 한국어와 같이 2바이트로 구성되는 다중 언어, 실행 파일, 그림 파일과 같은 이진 파일도 SMTP로 전송될 수 있도록 ASCII코드로 변환하는 코드변환 방식을 MIME라 한다.


■ JSP(Java Server Pages) 개요
 ο 개요
    자바를 서버환경에서 사용하는 스크립트 방식의 언어로 단일 스레드로 클라이언트의 요청에 서비스한다. 요청이 있을 때마다 프로세스를 생성하는 기존의 CGI와는 달리 하나의 메모리를 공유하면서 서비스되는 원리는 서버 측에 부하를 줄여주며, JSP 내부에는 보여주는 코드만 작성하고, 직접 작업하는 부분은 자바 빈으로 구성하여 분리 할 수 있다. 이것은 서로 영향을 주지 않고 수정할 수 있는 장점을 가지고 있으며, JAVA의 장점인 재사용성을 높일 수 있다.

    - 동적(dynamic)인 웹 페이지를 쉽게 만들 수 있는 방법을 제공하는 자바를 기반으로 하고 있는 스크립트 언어(Server Side Script)
    - JSP 2.0은 J2EE(Java2 Enterprise Edition) 1.4 규약에 포함되어 있다.
    - 자바 엔터프라이즈 어플리케이션에서 UI(User Interface)영역을 담당
    - JSP를 최초로 요청할 때 서블릿으로 변환되고, 컴파일 되어야 하는 약점을 개선하기 위해 서블릿 컨테이너에서는 JSPC(JSP Precompiler)기능을 지원한다
      이는 서버에서 서비스하기 전에 일괄적으로 모든 JSP를 서블릿으로 변환시키기 때문에 최초로 페이지 요청이 들어와도 빠르게 응답할 수 있다.


 ο JSP 동작원리
    URL → DNS서버 → 웹 서버(JSP 페이지요청) → 웹 서버는 *.jsp 로 들어온 요청에 대해서 JSP 컨테이너로 전송 → JSP 파일 파싱 → 서블릿 생성 → 생성된 서블릿 컴파일 → 컴파일 된 클래스 파일을 메모리에 적재 → HTML 형태인 응답을 사용자에게 전송 →사용자의 브라우저에서 HTML 실행

 


 

'JSP' 카테고리의 다른 글

이클립스 환경설정 (Server / JSP Servlet)  (0) 2011.12.07
내부 객체와 폼 처리  (0) 2011.12.07
서블릿 참고 페이지 외  (0) 2011.12.07
개요  (0) 2011.12.07