TIL 22.01.16
JSP
RequestDispatcher
현재 request에 담긴 정보를 저장하고 있다가 그 다음 페이지 그 다음 페이지에도 해당 정보를 볼 수 있게 저장하는 기능
메소드는 2가지(include, forward)가 있다.
sendReDirect vs RequestDispatcher
sendReDirect: 페이지를 이동 시키긴 하지만 바인딩 하지 않으므로 데이터는 가져가지 않는다.
RequestDispactcher : 바인딩을 하여 데이터까지 해당 주소로 넘겨버린다.
include vs forward
공통점: 요청 전달 반식은 동일하다
ex): <jsp:forward page=”경로”/> : Forward 스크립트
<jsp:forward page=”경로”/> : Include 스크립트
차이점 : 제어권에서 차이가 난다.
include: 중간에 포함된다는 뜻
include 구문을 만나면 해당 스트림을 그대로 유지한채 include 되는 URL의 데이터를 그 뒤에 이어 쓴다. include 문 종료 후에 해당 스트림을 그대로 유지한다.
forword: URL로 제어권을 넘긴다.
forward 된 페이지로 넘어간다.
Web vs WAS
Web
→ 인터넷을 기반으로 한 정보를 공유 검색할 수 있게하는 서비스
→URL(주소), HTTP(통신 규칙) HTML(내용)
Server
→클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템
Web Server
→인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터
방식
클라이언트(브라우저)
: 웹서버에게 주소(url)을 가지고 통신규칙(http)에 맞게 요청하면 알맞은 내용(html)을 응답 받음
서버(웹서버)
: 클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답, 이때 데이터는 웹에서 처리할 수 있는 html, css 이미지 등 정적인 데이터로 한정
WAS(Web Application Server): 웨에서 실행되는 응 용프로그램
→뤱 앱플리케이션과 서버 환경을 만들어 동작시키는 기능 제공하는 소프트웨어 프레임워크
→웹 애플리케이션을 실행시켜 핑요한 기능을 수행하고 그 결과를 웹 서버에게 전달.
→php, jsp, asp 같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버
→프로그램 실행 환경과 데이터베이스 접속 기능 제공
→비지니스 로직(유저의 눈에 보이지는 않지만, 유저가 바라는 결과물을 올바르게 도출할 수 있게 짜여진 코드 로직)수행 가능
→웹서버 + 웹 컨테이너
- 컨테이너 : jsp, servlet을 실행시킬 수 있는 소프트웨어
→자바계열에선 웹 애플리케이션 컨테이너라 부름
- 웹 애플리케이션 컨테이너 : 웹 애플리케이션이 배포되는 공간
Web Server VS WAS : 상황에 따라 변하는 정보를 제공할 수 있는가
Web Server: 정적인 컨테츠만 반환
WAS : 애플리케이션을 돌리고 DB를 연결하고 동작을 수행시키고 난후 그 결과를 반환
HTTP 상태 코드
→ 1XX(정보) :요청을 받았으며 프로세스를 계속할 때 사용
→2XX(성공) : 요청을 성공적으로 받을 때 사용
→3XX(리다이렉션) : 리다이렉션이 완료됐고 이 요청을 끝내기 위해 클라이언트는 이후 어떤 조취를 취해야 한다.
→4XX(클라이언트 오류) : 클라이언트(브라우저)에서 요청시 오류(문법 오류 등..) 있을때 사용
ex) 404 : 존재하지 않는 페이지에 대해 요구했을 때 나타나는 에러
400 : 잘못된 문장으로 요청을 했을때 나타나는 에러
403 : 사용자의 접근 권한이 없는 페이지에 접근하려고 했을 때 나타나는 오류
408 : 서버 요청의 대기 시간이 길어지고 초과됐을 때 나타난다.
→5XX(서버 오류) : 서버에서 오류가 있을때
ex) 500 : 서버 내부의 오류가 있음을 알려준다
503 : 유지보수를 위해 서버가 중단되거나 과부하가 걸리면 발생한다.
508 : 서버 요청 처리시 무한 루프가 존재할 때 나타난다
520 : 알수 없는 오류가 발생할 때 나타난다.
스크립팅 요소(Scripting Element)
1.스크립틀릿(scriptlet) : Java 명령을 작성하는 영역(_jspService 메소드의 명령)
ex)<% Java Statement %>
2.선언문(Declaration) : 필드 또는 메소드(요청 처리와 응답)를 선언하는 영역(서블릿 클래스의 선언문)
ex)<%! 필드 또는 메소드 선언 %>
3.표현식(Expression) : Java에서 사용하는 값을 출력하는 영역(_jspService 메소드의 명령)
ex)<%={변수명|연산식|메소드호출}%>
지시어(Directive)
1.page Directive : JSP 문서(웹프로글램)에 필요한 정보를 제공하도록 지시
<%@page contentType=mimeType” pageEncoding=”encoding” ...%>
2.include Directive : JSP문서에 외부 파일의 코드를 포함하도록 지시
<%@include file=”URL” %J
3.taglib Directive : JSP 문서에 태그 라이브러리 파일의 JAVA 태그를 포함하도록 지시
<%@tablib prefix=”namespace” url=”tldId”%>