성장 일기/쌍용교육센터 / / 2023. 5. 1. 15:00

0426/XML 파싱, Serlvet

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는https://github.com/2jaehoon/sangyoungjsp에 올려두었습니다.
https://github.com/2jaehoon/ServletTest

 

jQuery XML 파싱( JavaScript Parsing )

 - jQueryObject의 find 함수로 노드를 찾아서 파싱한다.

 $.ajax({
   url: "JSP 또는 xml을 요청",
   dataType:"xml",
   success: function( xml ){
// 하나의 노드(파싱된 값)
var 변수= $( xml ).find("접근할노드").text();
// 반복되는 노드
// 1. 노드를 찾아서 반복시킨다.
$( xml ).find("반복될노드").each(function(idx, 하나의노드 ){
// 2. 반복중인 하나의 노드를 parsing
var 변수=$(하나의노드).find("찾을노드").text();
     });
   }
})

 

* 하나의 node parsing

*여러 개의 node  parsing


Servlet

  - CGI의 일종
    CGI( Common Gateway Interface ) : 일반언어가 웹 서비스를 하기 위해 정해놓은 규약

    장점 : 일반 언어로 웹 서비스가 가능
    단점 : 디자이너와 개발자간의 업무 구분이 되지 않는다.
              Server Side Script보다 개발시간이 오래 걸린다.

    예) C 언어로 웹 서비스를 하기 정해놓은 규약을 구현 : C-CGI

          (속도가 느리다, Thread로 처리되지 않는다.)
          Java 언어로 웹 서비스를 하기 정해놓은 규약을 구현 : Servlet

  - Java 언어로 웹 서비스하기 위해 CGI를 준수하여 제작한 Java EE(Enterprise Edition) 기술
  - Java SE에서 제공하는 기능(class, interface)을 모두 사용할 수 있다.
  - Thread로 처리된다.(동시 접속자가 많았을 때 안정적인 서비스가 가능)
  - javax.servlet 패키지에서 관련 클래스와 인터페이스를 제공
  - 디자이너와 개발자간의 업무 구분이 어렵다.

class Test extends HttpServlet{ // 1.개발자 코드 생성

public void service(HttpServletRequest req, HttpServletResponse) throws...{
// 2. 응답 방식 설정
      response.setContentType("text/html;charset=UTF-8");
      
 // 3. 응답할 내용을 내보낼 출력 스트림 얻기
PrintWriter out=response.getWriter();
 // 4. 디자이너가 디자인 생성
out.println("디자인 코드");
 // 개발자의 코드 작성
out.println("디자인 코드");
  }

}

  - DD( Deployment Descriptor )에 작성된 Servlet이 웹 브라우저에 호출이 가능하도록
   설정 해야 한다. ( web.xml설정)

  - Java가 웹 서비스를 하기 위한 폴더 구성

  - HDD 존재하는 폴더를 웹 브라우저에서 인식하기 위해 Tomcat의 server.xml을 수정

<Host name="domain">
<Context path="/웹브라우저에서 사용할 이름" docBase="HDD경로"
 workDir="JSP가 Java로 변경될 때 저장될 폴더경로" reloadable="true">
<Resource> : DBCP의 사용
</Context>

 

* 서블릿 작성법

// 1.javax.servlet.http.HttpServlet을 상속받는 클래스를 작성 //CGI를 준수하여 작성한 클래스
public class Test extends HttpServlet{

// 2.웹의 요청을 처리할 수 있는 method Override

// get 방식 요청 처리할 때
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

}

// post 방식 요청 처리할 때
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException{

}

// get/post 방식 모두 처리
protected void service(HttpServletRequest request, HttpServletResponse response)
throws IOException,ServletException{

}

// 3. 응답 방식 설정
response.setContentType("text/html;charset=UTF-8");

// 4. 접속자에 출력하기 위해 출력 스트림 얻기(웹 브라우저로 출력하기 위해서)
PrintWriter out=response.getWriter();

//5. 출력
out.println("<html>... ");

 

 * DD ( web.xml )에 서블릿 설정
  - web browser는 class를 실행할 수 없기 때문에
    class를 웹 브라우저에서 호출할 수 있도록 설정
    ( class는 WEB-INF/classes 폴더 안에 배치 )
  - 클래스를 사용할 수 있도록 이름을 등록

<servlet>
<!-- 객체명이 web.xml에서 중복되면 에러 -->
<servlet-name>객체명</servlet-name>
<servlet-class>패키지명.클래스명</servlet-class>
</servlet>

 

  - 클래스를 웹 브라우저에서 사용할 수 있도록 등록

<servlet-mapping>
<servlet-name>객체명</servlet-name>
<url-pattern>/웹브라우저에서 사용할 이름</url-pattern>
</servlet-mapping>

 

 * Servlet 의 Life Cycle

  - Servlet에서는 생명 주기의 method를 제공한다. 
  - 서버의 실행과는 별도로 최초 요청될 때 객체가 생성된다.
  - life cycle method

    일반 class는 생성자 -> method -> finalize 가 생명주기 method가 된다.

     init -> doGet,doPost,service -> destory 가 생명주기 method 가 된다.

     init() : 최초요청에 대해 한 번만 호출

     doGet(), doPost(), service() : 모든 접속자에 대해 여러 번 호출된다.

     destory() : Web Server(WAS)가 정상 종료될때 호출된다. 

 

 

'성장 일기 > 쌍용교육센터' 카테고리의 다른 글

0428/Cookie, Servlet DD 설정  (0) 2023.05.02
0427/페이지 이동, 관계 유지  (0) 2023.05.02
0425/JDOM Parser  (0) 2023.04.25
0421/XML  (0) 2023.04.25
0420/복합 Parsing  (0) 2023.04.20
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유