핵심콕콕, 과목대비

백엔드 과목대비(서블릿)

sang0 2019. 9. 25. 19:48
  • web 어플리케이션은 로컬에서 독립적으로 수행되는 프로그램이다.(X)
  • 그럼 로컬에서 독립적으로 수행되는 프로그램은? -> Stand-alone Application
  • Presentation은 html을 말한다(X) -> 서블릿을 말함
             Presentation이 되려면 html이 웹서버에 있어야 됨

  • 3Tier 구조
    • (웹 서버)
      • 웹 브라우저가 요청한 작업을 처리
      • 정적인 곳의 요청을 처리
    • (데이터베이스)
      • 사용자의 정보뿐만 아니라 웹에서 발생한 모든 정보를 저장하는 곳 
    • (웹 어플리케이션 서버)
      • 제우스, 웹스피어, tomcat
      • 사용자가 요청한 프로그래밍을 처리하는 것

  • 서블릿의 역할

  • 비동기 통신의 핵심이 되는 자바스크립트 내장 객체 : XMLHttpRequest

  • ASP, PHP, JSP 비교

 

  • jsp 장점(자바 기반의 특정 모두 가짐)
    • 멀티스레딩
    • 자바 기반의 객체지향
    • 풍부한 라이브러리
  • 서버에서 돌아가는 프로그래밍 기술 : CGI
    • 자바 기반 : 서블릿, JSP
    • 넌 자바 : PHP, ASP
  • 서블릿 and JSP : WAS에서 동작하는 자바 기반의 기술, 컨테이너에서 실행하는 기술
    • 첫번째로 출시한 것 : ASP -> ASP 출시 이후 SUN에서 JSP를 만듦
    • 두번째로 출시한 것 : PHP -> 페이스북이 PHP로 만듦
    • 디자이너가 서블릿 이해못해서 만든게 JSP
    • 출시 순서 : ASP -> PHP -> JSP

  • 405 : 메소드 방식이 get인데 post로 했을 경우
  • 400번대 : 클라이언트 오류(페이지를 잘 못 요청했을 때)
  • 500번대 : 서버 오류(로직 잘못 작성했을 때)

 

http프로토콜에 잘 맞는 패키지 : javax.servlet.http

여기도 되고, 저기도 되는 서비스는 좋지 않음!

딱 맞게 특화된 서비스를 제공하는게 좋으므로 javax.servlet.http 패키지를 사용해야함!(종속적이므로)

 

  • GenericServlet이나 HttpServlet을 물어보는 것 나올수 있음!

  • doGet(), doPost()는 GenericServlet에는 없음

  • session에 해당하는 것 2문제 이상 나옴(ebook에 있는 session 공부하기)

 

  • servlet 라이프사이클 2문제 나옴

 

1번 과정 : 서블릿이 메모리에 로드됨 -> 메모리 : 컨테이너 메모리(WAS)를 말함

  • Form 태그

  • url 끝부분에 쿼리 스트링 형태로 값을 전달하는 방법(get방식)

매우 중요★★★★★★★★★★★★★★★★★

매우 중요★★★★★★★★

checkbox일 때 - getParameterValues(String name)를 써야함!!

 

마구잡이로 값 받을 때 - getParameterNames() 사용

getParameterNames는 while써서 출력해야 됨(enumeration 사용!!)

 

getParameter(String name)은 값이 없는 경우 null을 리턴하기 때문에 NullPointerException 발생할 수 있음!

form태그 안의 input태그의 name이 getParameter() 뒤의 이름과 다를 경우 nullPointerException에러뜸

(여기서 say_hello.html의 name속성이 "name"일 경우 World를 출력함) -> null값 처리 해줬으므로

 

post방식으로 보냇는데 위에서 doPost가 없으면 에러남

 

페이지 이동 문제 나옴

서블릿의 페이지 이동 방식 : forward, redirect, include

Forward : 서블릿에서 다음 서블릿으로 다이렉트로 이동(서버안에서 응답하지 않고 바로 이동하는 방식)

 

결과창은 Servlet2인데, 주소창은 Servlet1 것임!!

(내부에서 서블릿 간의 request 객체를 옮기는 것이기 때문에)

(문제) 이 코드를 진행했을 떄 잘못 된 코드는?   ->  2번

1. 결과화면은 TargetServlet의 내용이 나온다

2. 현재페이지 MoveServlet 내용이 출력이 된다

3. 주소창은 SrcServlet이 된다

 

(풀이) out.print는 안나옴!!(중요!!)

-> request.getRequestDispatcher().forword(); 아래부분은 출력 안됨!!

 

include -> 타켓서블릿의 내용이 들어오는 것!

include하면 out.print(16라인)가 나옴

2 와 2' : 순식간에 다시 요청이 된다는 뜻

redirect로 다른 서버(ex. 네이버 서버)도 갈 수 있음

이 때 정보는 request에 저장하면 안됨. session이나 cookie에 저장해야 됨

 

브라우저를 거치면 다른 서버의 component를 요청할 수 있다.

 

out.println(22~24라인) 출력됨!!

이 페이지의 내용을 여기에 삽입시킬 때 사용함!

 

  • 쿠키, 세션은 개인적으로 읽기(시험 나옴)

쿠키는 객체로 못넣음

쿠키가 실질적으로 저장되는 곳 : 클라이언트(보안상 취약)

  • 세선 : 로그인을 유지시켜주는 도구

세션의 타임아웃을 설정하는 방법

1. 사용자가 로그아웃

  로그아웃 안에 세션을 죽이는 코드가 들어있음!(invalidate() - 죽이는 것)

2. 세션 유효 시간을 설정해놓을 수 있음

   서버 자체에서 하는 것(개발자가 하는 것X)(setMaxInactiveInterval(초 단위))

 

filter 클래스 나옴

114 보기

116 JSP 요소 4가지 꼭 보기 - 4가지의 용도와 특징 문제 나옴