'servlet framwork'에 해당되는 글 2건

  1. 2010.11.02 servlet Get방식 테스트
  2. 2010.02.18 <Servlet>

기본적으로 톰캣과 이클립스의 셋팅을 끝낸 후에 작업을 시작하는 것이 좋겠다.

프로젝트도 끝나고 본사로 복귀했지만 기초가 안잡혀 있는 신입이 이번기회를 통해서 다시 공부하는 계기로 삼고 열심히 하자!

시작합니다.

1. 먼저 프로젝트 익스플로러에서 마우스 오른쪽 클리 후에 New -> Other로 갑니다.(화면처럼 Dynamic Web Project가 있는 경우는 직접 선택하여 만듭니다.)


2. 위 화면에서 검색창에 dy라고만 쳐주면 다이나믹 웹 프로젝트가 나오는 걸 확인 할 수 있습니다 선택 후 Next


3. 맨 위에 프로젝트명을 적어주고 자신이 설치한 톰캣버전을 선택 후 Finish


4. 생성된 프로젝트를 마우스 오른쪽으로 클릭하여 위 그림처럼 선택한다.


5. 그림처럼 왼쪽메뉴에서 Java Build Path 선택 -> 위쪽 탭 메뉴에서 Libraries를 선택 -> 톰캣 선택 -> Add External JARs... 버튼 선택한다.


6. 이제 jar파일 선택하라는 창이 뜨는데 자신이 설치한 톰캣의 경로로 가서 lib폴더에 servlet-api.jar파일을 추가해 준다.
    (ex : D:\dev\server\apache-tomcat-6.0.20\lib) 


7. 이제 1번에서 만들었던 프로젝트에서 Java Resources: src를 마우스 오른쪽 클릭 -> New -> Package를 선택한다.


8. 패키지 명은 아무거나 적어주면 좋겠다 하지만 의미있는 프로젝트명으로 만들어 주는것이 좋을듯 싶다.


9. 패키지를 생성하면 위 화면처럼 보이게 된다.


10. 생성된 패키지를 마우스 오른쪽 클릭 -> New -> Servlet 선택(만약 Servlet이 없으면 Other를 선택후 Servlet을 검색)


11. Class 이름을 써 준다. 이때 기본적으로 자바에서 클래스 이름의 첫글자는 대문자로 사용한다. -> Finish


12. 클래스 파일을 생성하게 되면 패키지의 색상이 바뀌고 위 화면처럼 클래스 파일이 생성된다.


13. 그림은 간단한 설명이다.


14. doGet()메서드에 위와같은 코드를 작성해준다.
  System.out.println("doGet()");
  
  response.setContentType("text/html");
  response.setCharacterEncoding("euc-kr");
  
  PrintWriter out = response.getWriter();
  out.write("<HTML><HEAD><TITLE>Get방식</TITLE></HEAD>");
  out.write("<BODY><H1>");
  out.write("Get방식으로 접근하셨습니다.");
  out.write("<H1></BODY></HTML>");
  out.close();


15. 지금까지의 세팅을 모두 저장하고 톰캣에 프로젝트를 추가하여 서버를 실행하자


16. 이제 익스프롤러에서 http://localhost:8080/TestServlet/Servlet 경로를 적어 넣으면 위와같은 화면이 뜬다면 get방식으로 servlet접근이 성공한것이다.


17. 이때 web.xml을 확인해보면 위 그림 처럼 확인 할 수 있는데 경로와 비교해 본다면 어떻게 흘러가는지의 방향을 알 수 있다.

'Web > Servlet 정리' 카테고리의 다른 글

servlet Post방식  (1) 2010.11.02
<Servlet>  (0) 2010.02.18
Posted by 미스터네오
,

<Servlet>

Web/Servlet 정리 2010. 2. 18. 14:21


<<<<<<<<<<<<<<<<<<<<< Servlet >>>>>>>>>>>>>>>>>>>>>>>>
웹서버의 컨테이너는 서블릿을 로딩한다. 그 뒤 사용자의 요청을 받아서 Request, Response 객체를 만들어낸다. service() 메소드를 호출해서 서비스를 제공하는 방식이 서블릿의 서비스 방식이다.

1. 서블릿의 라이프사이클 (life cycle)
   (1) init() : 첫번째 사용자 요청시 실행 but <load-on-startup> web.xml 에 설정하면 서버구동시에 실행된다.
   (2) service() : 클라이언트의 전송방식에 따라 doGet 혹은 doPost등을 실행하며 멀티쓰레드 환경으로 구축되어있다.
   (3) destroy() : 서버가 중지될때에 실행

2. 서블릿의 주요메소드
   (1) service() : 사용자의 요청에 실행되는 메소드, 구현하지 않는다.
   (2) doGet() : 전송방식이 GET방식일때 호출(요청주소에 파라미터값들이 붙어서 요청되는 방식)
   (3) doPost() : 전송방식이 POST 방식일때 호출(request의 body부분에 파라미터값들이 들어온다.)

3. 한글처리 : han.HanServlet 참고
   (1) request(요청) : 파라미터값을 ISO-8859-1 로 쪼개고(decoding) EUC-KR(encoding)로 변환한다.
                              (GET or POST) request.setCharacterEncoding("euc-kr") (POST)
   (2) response(응답) : response.setCharacterEncoding("euc-kr") 일반적으로 JSP에서 해결

4. 영역별 객체
   (1) ServletContext (창고, 파라미터 저장)
        : 웹 어플리케이션 전체에 있는 모든 Servlet에 영향을 끼칠 수 있는 객체이다.(only one 하나만 존재한다)
   (2) ServletConfig (파라미터 저장)
        : Servlet 마다 존재하는 객체이다.
   (3) HttpSession (창고)
        : 사용자가 웹브라우져로 접속해서 웹브라우져를 끌때까지 존재하는 객체이다.
   (4) HttpServletRequest (창고, client 에서 넘어오는 파라미터 저장)
        : 사용자의 요청이 들어오면 생성되고 응답이 끝나면 사라지는 객체이다.

5. 흐름의 이동
   (1) forward : 원래는 요청된 주소의 Servlet이 요청에 대해 응답을 해야하지만, forward 를 통해서
                      웹 어플리케이션내의 다른 자원(jsp or url)으로 이동시키는 방식을 말한다.
        - 주소는 요청한 그대로 유지된다.
        - 동일 웹 어플리케이션 내의 자원으로만 이동된다.
   (2) redirect : 원래 요청한 주소를 다른 주소로 redirect(재방향) 시켜주는 것으로 첫번째 받은 요청에 서버는
                      301상태정보와 새로운 URL 을 가지고 클라이언트에게 응답하고, 다시 클라이언트(웹브라우져)가
                      새로 받은 URL을 요청하고 거기에 따른 응답이 이뤄지는 방식을 말한다.
        - 주소는 완전히 다른 것으로 바뀐다.
        - 동일 웹 어플리케이션이 아니더라도 얼마든지 이동이 가능하다
        - 첫번째 요청된 request는 사라진다.(2번의 요청과 응답)

6. HTTP 상태(status) 코드 정리
   (1) 1XX : Informational
        리퀘스트 요청을 받아서 처리하는 중
   (2) 2XX : Success
        리퀘스트가 잘 받아졌다는 정보
   (3) 3XX : Redirection
        리퀘스트를 처리하는데 다른 과정이 한번 더 일어나야 한다는 정보
   (4) 4XX : User-Agent Error
        리퀘스트에 잘못된 문법, 잘못된 요청이 있다는 정보
   (5) 5XX : Server Error
        서버상에서 익셉션이 발생했다는 정보
   (6) 대표적 코드들
      <1> 200 : 모든 요청이 잘 받아졌고, 응답도 잘 됐다는 정보
      <2> 401 : 권한이 부족한 경우
      <3> 404 : 요청한 URI 정보가 없는 경우
      <4> 405 : 요청한 메소드 방식의 처리가 불가능한 경우
      <5> 500 : 서버에서 익셉션 발생

7. Servlet Filter
   (1) Servlet이 실행되기 전, 중간에 request, response를 가로채서 처리하는 방식
        : Servlet의 로직을 고치지 않아도 특정한 패턴(URL-Pattern)으로 들어오는 요청과 응답에 대해서 독립적으로
           처리할 수 있기 때문에 유지보수 측면에서 뛰어나다.
   (2) Filter 생명주기
        init() -> doFilter() -> destroy()
   (3) 설정방법
        <1> web.xml에 <filter> <filter-mapping> 추가
        <2> javax.servlet.Filter interface 를 상속받는 클래스 작성
        <3> doFilter() 메소드 작성 : chain.doFilter() 호출

8. JNDI 방식으로 DataSource 등록하기 (DBCP)
   Tech 문서 : http://kr.sun.com/developers/techtips/enter_12_24.html

   tomcat.apache.org 홈페이지 document 6.0 -> jdbc 설정
  (1) context.xml 변경
       <WatchedResource>WEB-INF/web.xml</WatchedResource> 밑에다가 제공되는 소스를 붙여넣는다.
       context.xml에 등록을 하면 서버에 속한 모든 프로젝트에서 접근이 가능하다.

 <Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"  
                 driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@localhost:1521:JAVA"
                  username="scott" password="javac" maxActive="20" maxIdle="10" maxWait="-1"/>

       server.xml에서의 등록방법
  하단의 프로젝트 지정 부분 사이에 저 소스를 끼워넣어주어도 된다.
  (2) web.xml 변경
  (3) java source 변경
 http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html

'Web > Servlet 정리' 카테고리의 다른 글

servlet Post방식  (1) 2010.11.02
servlet Get방식 테스트  (0) 2010.11.02
Posted by 미스터네오
,