0920 서블릿

정혜지·2022년 9월 21일

2022.09.20

[학습]

  1. Server
  • Web Server
    • 웹 브라우저를 클라이언트로부터 HTTP요청을 받아들이고 HTML 문서와 같은 웹 페이지를 반환
    • 정적 컨텐츠 제공
    • 동적 컨텐츠를 위한 요청 전달
  • WAS(Web Application Server)
    • 인터넷 상에서 HTTP프로토콜을 통해 사용자 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어
  • Web Server와 WAS
    - 기능을 분리하여 서버의 부하 방지
    • 물리적으로 분리하여 보안 강화
    • 여러대의 WAS 분산시켜 서비스를 제공
  1. Servlet
  • 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술

  • 특징

    • 클라이언트의 Request에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
    • 기존의 정적 웹 프로그램의 문제점을 보완하여 동적인 여러 가지 기능을 제공
    • JAVA의 스레드를 이용하여 동작
    • MVC패턴에서 컨트롤러로 이용됨
  • 생명주기 Life Cylce

    1. 초기화 : init()
    • 서블릿 요청 시 맨 처음 한 번 호출
      • 서블릿 생성 시 초기화 작업
    1. 작업 수행 : doGet(), doPost()
    • 서블릿 요청 시 매번 호출
    • 클라이언트가 요청하는 작업 수행
  1. 종료 : destroy()
    • 서블릿이 기능을 수행하고 메모리에서 소멸
    • 서블릿의 마무리 작업
  • API

    1. HttpServletRequest

      • client가 전송하는 데이터를 보유하고 서버에 제공하는 기능
      • 요청하는 client 의 정보를 모든 정보 보유
      • 회원가입이라 가정
        : 가입정보를 이 객체로 부터 받아서 검증 후에 db에 insert
      1. 주요 메소드
        1. String getParameter("key")
          • client가 전송하는 web querry string 데이터 반환하는 메소드
    2. HttpServletResponse

      • 요청한 client에게 응답하는 기능
      1. 주요 메소드
        1. setContentType("응답 포맷(MIME type과 인코딩)")
          • 브라우저에 서비스 하는 데이터 포맷과 인코딩
        2. PrintWriter getWriter()
          • 2byte단위로 한글 데이터를 브라우저에 출력
    3. HttpServlet

      1. client와 server간의 인터넷상 통신 규약인 http를 이미 완벽에 가깝게 구현한 클래스
      2. 사용자 정의 servlet 들이 상속
      3. 주요 메소드
        1. protected void doGet(HttpServletRequest, HttpServletResponse)
        2. protected void doPost(HttpServletRequest, HttpServletResponse)
  • JSP Java Server Page
    - *.jsp
    • 용도 : view 로직
    • 요소 : HTML / CSS / JS / JSP Tags / 순수 자바
    • 권장 : 가급적 순수 자바 코드는 최소화 개발

// web.xml

IdCheck
controller.IdCheck

testParameter
testValue

1

[학습]
1. client의 지속적인 상태 유지를 위한 개발 기술
- 로그인~로그아웃 까지의 개발 기술

  1. http 프로토콜 기본 특징

    • 무상태 유지 및 비연결 지향
  2. 개발 기술

    1. client 시스템에 데이터 저장
      1. 파일로 저장

      2. 브라우저 메모리에 저장
        : 공용 pc인 경우 사용 종료 후 쿠키 정보 삭제

      3. 단점 : client가 쿠키 정보 삭제시 해결 방법 없음

      4. 쿠키

        • javax.servlet.http.Cookie

        • setMaxAge()/getName()/getValue()

        • HttpServletResponse의 addCookie()

      5. 개발단계
        1단계 - client 접속 승인
        2단계 - 접속한 client가 상태 유지를 위한 시도
        3단계 - 고유한 정보로 Cookie 객체 생성
        : 맵구조 - key와 value가 매핑된 구조
        4단계 - Cookie 객체의 정보를 client 시스템에 저장(응답)
        5단계 - 이동된 web page에서 client 시스템에 있는 Cookie 정보 획득, 사용
        6단계 - 상태유지 비활성화시 client 시스템의 쿠키정보 삭제

      6. 저장하는 데이터 타입?

    2. server 시스템에 데이터 저장
      1. 세션 메모리에 상태 유지 데이터 저장

      2. 저장하는 데이터 타입 제한 없음

      3. 설정 방식

        • web.xml에 설정
        • 메소드로 불필요한 시점에 자동 삭제
      4. 개발 방법

        1. 생성 및 제공
          javax.servlet.http.HttpSession 생성 : getSession()
          - container에게 생성 요청해서 없을 경우 새로 생성
          - 이미 존재할 경우 해당 client만의 HttpSession 객체 제공 받음

        2. 세션 객체에 상태 유지를 위한 데이터 저장

          • setAttribute(key, value)
        3. 이동된 web page에선 세션객체 획득(getSession()) 후 getAttribute()로 데이터 활용

        4. 세션 기능 무효화
          invalidate()

login.html id :
pw :

[학습]
1. Java Server Page
2. 용도
- 자바 데이터를 브라우저 화면에 출력할 수 있게 제시된 스펙
3. 특징
1. 확장자 : *.jsp
2. 위치 : html과 동일한 경로
3. jsp를 최초로 호출할 경우 web server가 servlet으로 자동 변환
-> 컴파일 -> 서버 배치 -> 서비스
: 개발은 쉬우나 에러 발생시 변환된 servlet의 에러 메세지가 보이기 때문에 에러 처리가 어렵다
4. 정해진 tag들로 개발
5. 이미 자동 생성되는 내장 객체들 존재
- 요청 객체, 세션 객체, 출력 객체, 응답 객체...
- 개발자 코드는 참조 변수로만 사용하는 코드로 개발
6. 내장 객체 참조 변수와 타입
1. out - Printwriter
2. request - HttpServletRequest
3. session - HttpSession [쿠키 내장객체 아님]
4. pageContext - this
...

  1. tag 종류
    *가급적 자바 코드는 최소화
    1. jsp scripting - 5가지 뿐
      1. page 지시자
        <%@ page%>
        • 외부 library import
        • client에게 응답하는 인코딩, mime type 설정
        • 세션을 사용 안하고자 할 경우 설정
          ..
        • jsp 선언구에 설정 권장
      2. <%! %> 선언자
        • servlet이라 가정한 상태에서 멤버변수와 메소드 구현시 사용하는 tag
        • servlet 객체는 하나로 모든 user에게 공유
      3. <%-- --%>
        • jsp만의 주석
        • client 브라우저에 전송 불가
        • 보안을 고려한 주석 내용 작성 권장
      4. <%= %> : expression, 출력 tag
        • 브라우저에 출력
        • doGet/doPost/doService() body 부분에 자동 적용
        • 주의사항 : 세미콜론 작성 불가
      5. <% %> : scriptlet
        • 순수 자바 코드 제한없이 개발 가능
        • doGet/doPost/doService() body 부분에 자동 적용
        • 이 tag가 많을 수록 jsp 품질 저하
        • jsp 자체의 내장 객체들을 이 tag 내부에서도 사용 가능
    2. jsp action tag
    3. EL
      • 사용 빈도가 굉장히 높음
      • Expression Language
      • 문법 : ${출력로직}
      • 연산 가능
        • 자바 데이터 출력이 가능한 tag
          *** 요청 또는 세션 객체에 저장된 데이터에 한해서만 출력
          단, 현 jsp에서만 EL을 통해 출력을 위해선 해당 jsp를 의미하는 page에 저장후 사용
      • 장점
        - 이미 저장되어 있는 쿠키 정보 출력이 굉장히 간결
        - 문법
        1. 쿠키 사용 문법
        ${cookie.개발자가 설정한 key.value}
        2. getParameter()와 출력 로직이 혼용된 간결한 문법
        ${param.웹쿼리stringkey}
    4. JSTL
      • 반복, 조건 로직 등을 tag로 구현 가능한 알고리즘이 적용된 tag
      • 업계에서 기증된 무상 library[tag]
      • jstl library를 개발 및 실행 환경에 셋팅

ArrayList users = new ArrayList();
users.add(new User("IT", 26));
users.add(new User("DEV", 24));
session.setAttribute("users", users);

profile
오히려 좋아

0개의 댓글