#Servlet

김유미·2022년 2월 11일
0

프롤로그

Servlet 개념에 대해 정리해보도록 하겠습니다.

HTTP

  • 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜
  • TCP/IP를 이용하는 응용 프로토콜
  • HTTP는 연결상태를 유지하지 않는 비연결성 프로토콜
    (이러한 단점을 해결하기 위해 Cookie와 Session 등장)
  • HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작
  • Header와 Body로 구성
  • 정적 웹페이지: HTML
    • 서버에 미리 작성해 놓은 문서를 그대로 브라우저에 전달하는 웹페이지
  • 동적 웹페이지: JSP, Servlet
    • 서버에 저장되어 있는 데이터들을 가공, 변경하여 브라우저에 전달하는 웹페이지

Servlet

  • 동적 웹어플리케이션 컴포넌트로 .java 확장자
  • JAVA언어 안에 HTML문서가 있음

<기본구조>

  • Servlet클래스는 HttpServlet 클래스를 상속 받음
  • GET 방식
    • URL값으로 정보가 전송되어 보안에 약함

    • Form태그 method 속성값 = get

    • URL로 직접 접속하는 경우 호출

  • POST 방식
    • header를 이용해 정보가 전송되어 보안에 강함
    • Form태그 method 속성값 = post
  • Servlet안에서 html 작성
    • HttpServletResponse 객체의 setContentType() 메소드 호출하여 응답방식 결정
      response.setContentType("text/html; charset=euc-kr");
    • HttpServletResponse 객체의 getWriter() 메소드를 이용하여 출력 스트림을 얻음
      PrintWriter writer = response.getWriter();

< HTML form 태그>

  • 서버쪽으로 정보를 전달할 때 사용하는 태그
  • input
    • 입력 태그의 종류를 지정
    • 속성(type, name, value)
      1) type: 태그 종류 지정(ex. text, password, submit, checkbox, radio, reset)
      • < input type="submit" value="전송">
      • type = checkbox
        • 데이터값을 여러 개 전송해야 할 때 사용
        • name값을 동일하게 해야 선택된 값이 넘어감
        • 따라서 배열 형태로 서버로 값이 넘어감
      2) name: input태그 이름 - 서버로 값을 전달하기 위해 담아서 갈 변수명
      3) value: name에 해당하는 값 (ex. name = value)

< Servlet Parameter >

  • submit버튼을 클릭하여 데이터를 서버로 전송하면, Servlet에서는 HTTPServlet객체를 이용하여 Parameter값을 얻을 수 있다

<웹 데이터 유지 기술>

  • 웹은 http 프로토콜을 사용하여 통신하고, http프로토콜은 무연결성 프로토콜

  • 비연결성이기 때문에 새로운 페이지로 넘어갈 때 값이 유지되지 않는다

  • 이러한 특징을 보안하기 위해 웹 데이터를 유지하는 기술이 있다

  • ServletContext: Server에 저장되어 웹 어플리케이션이 종료될 때까지 유지되는 기술

  • Cookie: Client에 저장되어 요청할 때 저장된 값을 가지고 유지되는 기술

  • Session: Server에 저장되어 Client가 요청할 때 Server에 저장된 값을 제공하여 유지되는 기술

  • ServletRequest: 페이지에서만 유지되지만 요청재지정이라는 기술을 통해 다른 페이지로 값을 넘겨 유지되는 기술

< RequestDispatcher 클래스 >

  • Servlet 또는 JSP에서 요청을 받은 후 다른 페이지로 요청을 위임할 수 있다
  • 위임 방법에는 RequestDispatcher 클래스와 HTTPServletResponse클래스가 있다
  • RequestDispatcher는 요청 객체(request)를 위이하는 페이지에 동일하게 전달 가능
  • Client가 처음에 요청한 URL을 그대로 가지고 위임받은 페이지로 넘어가게 됩니다.
  • 사용방법
    • forward 메소드를 사용하여 지정된 위치로 요청과 응답을 실어서 페이지 이동
    • include 메소드를 사용하여 지정된 위치로 요청과 응답을 실어서 현재 페이지를 포함하여 이동

< HTTPServletResponse 클래스 >

  • RequestDispatcher와 동일하게 요청을 위임하는 클래스
  • 요청객체를 위임받은 페이지에 전달하는 것이 아닌, 새로운 요청객체를 생성
  • 사용방법

0개의 댓글