wdwd
백엔드 과목대비(서블릿) 본문
- 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문제 나옴
- 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가지의 용도와 특징 문제 나옴
'핵심콕콕, 과목대비' 카테고리의 다른 글
Spring 과목평가 대비 (0) | 2019.11.01 |
---|---|
DB 과목평가 대비 (0) | 2019.10.20 |
백엔드 과목대비(JSP) (0) | 2019.09.25 |