1.JSP 처리 과정
WAS(Web Application Server)는 웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현 하여
다양한 역할을 수행할 수 있는 서버를 말한다.
또 여기서 웹 컨테이너란? 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을
다시 클라이언트에 전달해주는 역할을 하는 것이 웹 컨테이너이다.
JSP에 해당하는 서블릿이 존재하지 않을 경우
- JSP 페이지로부터 자바 코드를 생성한다.
- 자바 코드를 컴파일해서 서블릿 클래스를 생성한다.
- 서블릿에 클라이언트 요청을 전달한다.
- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.
- 응답을 웹 브라우저에 전송한다.
JSP에 해당하는 서블릿이 존재하는 경우 ( 1.1 ~ 1.3 거친 경우)
- 서블릿에 클라이언트 요청을 전달한다.
- 서블릿이 요청을 처리한 결과를 응답으로 생성한다.
- 응답을 웹 브라우저에 전송한다.
즉, JSP 페이지를 요청할 때에는 JSP를 직접 실행하는 것이 아니라, JSP를 자바 소스 코드로 변환한 뒤
컴파일해서 생성한 서블릿을 실행하는 것이다.
버퍼(Buffer)는 응답결과를 저장했다가 한 번에 웹 브라우저에 전송하는 것
<%@ page buffer = "1kb" autoFlush "false" %>
page buffer : 버퍼의 크기를 지정해주는 것이고 default 값은 8kb이다. 안써도 실행은 된다.
autoFlush : (true) 버퍼가 다 차면 버퍼를 플러시 하고 계속 작업
(false) 버퍼가 다 차면 익셉션을 발생시키고 작업 중지
2. 기본 객체
기본 객체 8가지와 오직 오류페이지에서만 사용할 수 있는데 exception
out 기본 객체는 언제 사용할까?
<% if(grade > 10) { %>
<%= gradeStringA %>
<% }else if (grade > 5) { %>
<%= gradeStringB %>
<% } %>
--------------------------------
//if-else블록과 스크립트를 구분하기 위한 태그(<%와 %>)때문에 코드가 복잡하다
//하지만 out 객체를 사용하면 좀 더 간편해진다.
--------------------------------
<%
if (grade > 10){
out.println(gradeStringA);
} else if(grade > 5) {
out.println(gradeStringB);
}
%>
하지만 out 객체를 직접 응답 결과를 생성한 경우가 많지 않고, 복잡해지는 경우 아니라면
out 객체를 사용하지 않는 것이 좋다.
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ page import = "java.io.*" %>
<html>
<head>
<title>절대 경로 사용하여 자원 읽기</title>
</head>
<body>
<%
char[] buff = new char[128];
int len = -1;
String filePath = "C:\Users\ducjs\Desktop\chap5\notice.txt";
//절대 경로
try(InputStreamReader fr = new InputStreamReader(
new FileInputStream(filePath), "UTF-8")) {
//notice.txt로부터 내용을 읽어오는 스트림을 생성한다
while ((len = fr.read(buff)) != -1{
out.print(new String(buff, O, len));
}
} catch(IOException ex) {
out.println("익셉션 발생 : " + ex.getMessage());
}
%>
</body>
</html>
3.JSP 기본객체와 영역
- PAGE 영역 : 하나의 JSP 페이지를 처리할 때 사용되는 영역
- REQUEST 영역 : 하나의 HTTP 요청을 처리할 때 사용되는 영역
- SESSION 영역 : 하나의 웹 브라우저와 관련된 영역
- APPLICATION 영역 : 하나의 웹 어플리케이션과 관련된 영역
PAGE 영역은 한번의 클라이언트 요청에 대해서 하나의 JSP 페이지를 범위로 갖는다.
REQUEST 영역은 한본의 웹 브라우저 요청, 웹 브라우저가 웹 서버에 전송하는 요청이
하나의 REQUEST 영역이 됨
SESSION 영역은 하나의 웹 브라우저와 관련되어 있고, 하나의 웹 브라우저와 관련된 모든 요청은
하나의 SESSION 영역에 포함된다.
APPLICATION 영역은 하나의 웹 어플리케이션과 관련된 전체 영역을 포함한다.
모든 요청 그리고 브라우저의 세션은 모두 하나의 APPLICATION 영역에 속함
'Back-End > JSP' 카테고리의 다른 글
[JSP] 5. 자바빈과 <jsp:useBean> 액션 태그 (0) | 2021.06.09 |
---|---|
[JSP] 4. 페이지 모듈화와 요청 흐름 제어 (0) | 2021.06.09 |
[JSP] 3. 에러처리 (0) | 2021.06.06 |
[JSP] 1. 기본 코드 구조와 request,response 처리 (0) | 2021.06.05 |
[JSP] 0. 첫걸음에 대한 준비 (0) | 2021.06.05 |