Servlet 및 JSP를 이용한 게시판,  하이브리드 웹개발  

 

1. 반드시 알고있어야 하는 API

가. HttpServlet
==> 서블릿을 만들때 상속 받는다.
==> 클라이언트가 요청가능하다.
==> 한번만 생성

 

나. HttpServletRequest
==> 클라이언트가 요청시 매번 생성한다.
   - 폼데이터 얻기(파라미터)      request.getParameter(key)
   - 한글로 인코딩                     request.setCharacterEncoding("euc-kr");
   - 바인딩
   - 포워드
     RequestDispatcher dis = request.getRequestDispatcher(target);
     dis.forward(requset, response);

 

다. HttpServletResponse
==> 클라이언트가 요청시 매번 생성한다.
   - MIME 설정                response.setContentType("text/html;charset="euc-kr")
   - IO 얻기                     PrintWriter out = response.getWriter();
   - redirect 얻기              rsponse.sendRedirect(target);

 

라. ServletConfig
==> 서블릿당 한개씩 생성 ( 서블릿을 관리 )
   - 초기화 파라미터 얻기  getInitParameter(key)
   - ServletContext 얻기    getServeltContext()

 

마. ServletContext
==> 웹어플리케이션(컨텍스트)당 한개씩 생성
    ( 컨텍스트 관리 )
   - 컨텍스트 파라미터 얻기    getInitParameter(key)  - 중요
   - 바인딩                           ctx.setAttribute(key,value)    - 중요
   - 파일읽기접근                  ctx.getResourceAsStream(path):InputStream
   - 로그기능                        ctx.log(값)

 

바. HttpSession

=> 로그인, 장바구니 정보를 관리하기 위한 매커니즘이다.
=> 기본적으로 웹 브라우저와 동일하다.하지만 보안때문에 계속 유지시키지 않고 일정시간

    (기본 30분)이 지나면 제거시킨다.

 

 

2. Servlet의 LifeCycle

 

1) init 메소드

처음 생성될 때 , 단 한번만 호출되무로 초기화 작업시 사용된다.

 

2) service 메소드

클라이언트가 요청할 때마다 호출되므로 원하는 독적인 처리 작업시 필요

예) doGet, doPost

 

3) destory 메소드

서블릿 인스턴스가 웹 컨테이너가 제거될 때 호출된다. init 메소드에서 구현했던

초기화 작업을 반납처리하는 작업 시 주로 사용

 

3. 세션 관리 (  session tracking )
- 클라이언트와 서버간의 연결을 유지하는 방법.

- HTTP 프로토콜의 메커니즘
           
                               요청
  클라이언트 ---------------------->  서버 ( 실행 )
                 <----------------------
                               응답
 
 마지막으로 클라이언트와 서버간의 연결이 close된다.

 

이유는 계속 연결이 유지되면, 유지되는 자원관리를 서버가 담당해야 되는데..
동시적으로 접속하면 관리가 안되기 떄문이다. 결과적으로 이전 페이지에서 작업했던 정보들이 다음 페이지에서 확인이 불가능하다. 실제로 서비스되는 웹사이트들은 정보가 유지되는데 이것은 세션관리를 했기 때문이다.
           
- 세션관리?
==> 각 페이지마다 필요한 데이터를 공유하는 방법이다.

가. 세션
    ==> 공유 데이터를 서버에 저장하는 방법.
    ==> 예> 로그인 , 장바구니

나. 쿠키
    ==> 공유 데이터를 클라이언트에 저장하는 방법.
    ==> 예> 자동 로그인, 자주봤던 상품 보여주기


4. HttpSession 을 이용한 세션처리

- tomcat 컨테이너(서버)에 저장하는 방법으로 세션관리. 세션(session) 연결을 의미한다.

 

가. 저장공간( 세션영역 ) 생성

       HttpSession session = request.getSession();

       - getSession()
       - getSession(true)
       =====================> 세션(공간)이 있으면 재사용하고
                                         없으면 새로 생성한다.
       =====================> 처음 공간을 생성해야 되는
                                         코드에서 사용한다.
       예> 로그인 처리하는 서블릿
       - getSession(false)
       =====================> 세션(공간)이 있으면 재사용하고
                                         없으면 null 리턴.

       =====================> 생성된 세션을 사용하는 컴포넌트에서
                                         사용한다.


 나. 세션 사용

        - getSession()
        - getSession(true)
        =====================> 세션을 처음 만드는 컴포넌트에서 사용.

        - getSession(false)
        =====================> 생성된 세션을 사용하는 컴포넌트에서 사용.

 

* 원하는 공유데이터 저장
session.setAttribute(key, value )
session.getAttribute(key)

 

다. 소멸 ( 제거 )

==> 기본적으로 웹 브라우저를 종료하면 제거된다.웹 브라우저를 종료하지 않아도 기본 30분이

      지나면  제거된다.


==> 자바코드로 제거하는 방법
==> 세션(공간)이 제거되는 방법이다.

 

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

 

JSP 기본 동작  하이브리드 웹개발  

 

1. JSP (Java Server Page )

: *.jsp 로 작성
: 동적 웹 컴포넌트 ( 프로그램으로 실행됨 ==> html로 결과가 나옴 )
: html과 동일한 위치에 저장하고, html과 동일하게 요청한다.
  예> http://localhost:8090/31Day/Hello.jsp
: 구성요소


 - html 태그
 - jsp 태그
 - JSTL 태그
 - EL 태그

 

2. JSP 태그

일반 JSP 태그 4가지에 대해서 알아보자!

1) directive tag ( 저시자 태그 )
=> JSP에게 특정 정보를 지시할 때 사용.
표기 방법 <%@ ~~~ %>

 : 종류 3가지

 - <%@ page     %>   : page directive tag
 => 추가속성
   <%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>  --servlet의 response.setContentType("")과 동일
 
   <%@ page import="java.util.ArrayList" %>  --servlet의 import문과 동일 
   <%@ page import="java.util.Vector" %>

  => JSP 실행시 반드시 발생되는 예외를 처리하는 방법
   <%@ page errorPage="error.jsp"%>
   <%@ isErrorpage="true"%> : isErrorpage 기본값은 false 이다.

 

2) declaration tag (선언 태그)
 : <%!     %>
 : 서블릿에서 인스턴스 변수 및 doGet,doPost 제외한 메소드를 사용하는 경우와 동일

 예>
    public class MyServlet extends Httpservlet{
 
 String name;
 public String getName(){ return name }; ㅇ

 public vod doGet(HttpServletRequest request,
         HTtpServletResponse response){
 }
    }

    JSP 표현
    <%! String name;
 public String getname(){ return name; } %>

==> *.java(서블릿)으로 변경될 때 서블릿의 인스턴스 변수와 create method로 변경된다.
    따라서 사용하는 위치와 무관하다.

 

3) scriptlet tag(스크립트릿 태그)
 
  --> <%        %>
  --> 서블릿의 doGet|doPost에서 했던 작업을 지정한다.

 

4) expression tag (표현 태그)
  --> 결과를 클라이언트로 응답
       out.print()와  동일한 기능.
 
  --> <%= 변수 &>
       out.print(변수명);

  

 

3. 내장객체 (내장변수 : implicit object, implicit variable)
 sciptlet 태그내에서 자동으로 선언되는 변수  따라서 jsp에서는 그냥 사용하면 된다.
 

 - reqeust
 --> 서블릿의 HttpServletRequest
 - response
 --> 서블릿의 HttpServletResponse
 - conflg
 --> 서블릿의 ServletConfig
 - application

 --> 서블릿의 ServletContext
 - session
 --> 서블릿의 HttpSession
 - exception
 --> 서블릿의 Throwable(Exception)
 --> <%@ page isErrorPage="true" %> 인 경우에 exception내장객체 생성된다.
 - pageContext
 - out
 --> 서블릿의 PrintWriter

 

4. JSP에서의 포워드

 

가. redirect

==> response.sendRedirect();

나. forward
==> RequestDispatcher dis = request.getRequestDispatcher();
      dis.forward(request, response)

 

5. MVC ( Model, view , Controller ) 패턴

 

가. Model 1 Architecture
 => 클라이언트 요청을 JSP 가 처리한다.

브라우저 ------------> JSP <--> DAO
            <-----------

=> 개발속도 빠르다. 소규모의 웹 어플리케이션 개발시 적합. 화면구성코드와 로직코드가 같이
   혼합된 형태이기 떄문에 빠르게 구현가능하지만, 나중에 유지보수가 어렵다.
=> 이전에 많이 사용하던 개발방법이다. 현재는 사용안한다.

 

나. Model 2 Architecture (MVC 패턴이라고도 한다. )
==> 기능별로 모듈화 시키는 방법.

=> 처음에는 개발이 어렵다. 하지만 나중에 유지보수는 쉽다.
=> 현재 서비스되는 대부분의 웹스아트 개발시 적용.


                    서블릿에 요청
웹브라우저   -----------------> 서블릿 --> DAO,DTO

                 <----------------    JSP
                         JSP 응답
 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,

JSP프로그램을 위한 이클립스 설치 및 톰캣 이클립스 연동


JSP시작 이클립스 -톰캣 연동 /톰캣이 설치 되어 있어야합니다.

톰캣 다운로드 설치 /이클립스 설치 

  



 1 web 프로젝트 생성


가. 먼저 이클립스 내부에 톰캣을 돌리기 위해서는 

톰캣서버를 먼저 꺼야 합니다. 

(시작메뉴--Configure Tomcat ---General

start,stop있음)

(중요!! 톰캣이 두 개 돌면 포트 충돌이 발생할 수있음)

나. 이클립스를 실행-파일->New->Other를 눌러줍니다.

다. 먼저 Web을 선택하고, 아래 그림처럼 Dynamic Web Project선택

라. 먼저 프로젝트 명을 적어 넣고 Finish

(중요한 것은 Context root 경로인데, 여기서 Finish를 누르면 

디폴트 프로젝트명과 동일하게 설정된다) 

Context root 경로를 다르게 설정하려면 몇 번의 Next눌러야함

처음공부하는 분은 여기서 Finish누른다.

  

2.JSP파일 생성

가. 프로젝트가 만들어 졌으면 프로젝트 아래 WebContent 폴더에서

마우스 우클릭 하면 팝업메뉴가 나옵니다.

New를 선택하고 다음으로 JSP File을 눌러 줍니다.

나 JSP파일명을 넣어 주고 Finish 누른다

  

다. JSP 코딩을 합니다. <환영합니다.>

3. 프로젝트 실행

가. 프로젝트 파일을 생성하기 위해서는 

JSP파일을 우클릭하고 Run AS 선택후 

Run on Server를 눌러 줍니다.

나. 설정이 되었으면 바로 실행 되지만 처음 실행하시는 분들은 

설정화면이 난타납니다.

처럼 실행하시는 분들은 톰캣설정을 해주셔야 합니다.

Apache 폴더를 선택하시고 설치한 버전의 톰캣을 선택후 Next 누름

다. 톰캣이 설치된 경로를 넣어 주고 Finish 버튼을 눌러줍니다.

라. 윈도우 보안 경고음이 나오면 하단에 [액세스 허용]을 눌러 주세요

마.......test.jsp실행하면 <<환영합니다> 성공!1

    

4.라이브러리 추가 

서블릿이라든지 JSP가 제대로 돌아가기 위해서는 기본 라이브리을 추가해야합니다.

(jsp-api.jar,servlet-api.jar)

가. 프로젝트에서 우클릭하고 properties를 클릭합니다.

나. Java Build Path를 선택하고 Libraries탭을 눌러 줍니다.

다. 1) Add External JARs..번튼을 클릭하면 창이 하나 더 나타납니다.

2)번처럼 톰갯설치된 폴드에서 lib폴더를 선택합니다. 

3)Shift키를 누른채 jsp-api.jar과 servlet-api.jar파일을 선택합니다.

4)마지막으로 열기버튼을 누릅니다.

5) 라이브러리가 잘 추가 되었으면 OK버튼을눌러 줍니다.



'프로그래밍 > Jsp' 카테고리의 다른 글

[JSP] Servlet 및 JSP를 이용한 게시판  (0) 2017.08.17
[JSP] JSP 기본 동작  (0) 2017.08.17
블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,