- 웹 브라우저가 웹 서버(큰회사)에 어떤 기능 원한다~요청함.
- 그러면 웹 서버(큰 회사)가 웹 어플리케이션(하청업체)에다가 일맡김
- 웹 어플리케이션(하청업체)이 웹 브라우저가 원하는 걸 수행하면 그 결과를
- 다시 웹 서버(큰 회사)에 주게됨.글고 이걸 웹서버는 웹 브라우저에게 쏨.
- 웹 브라우저는 웹서버가 준 응답 결과를 고대로 출력함.
- CGI 방식
-CGI 는 웹브라우저에서 웹서버로 요청 들어올 경우 그걸 직접 실행(펄 프로그램/c 프로그램)하는 방법
-근데 CGI 방식은 대량 트래픽 발생 시 처리량에서 딸림
- 어플리케이션 서버 방식
요런 느낌인데
메모리 사용량이나 프로세스 관리 부하 감소로 전체적인 처리량이 높아짐
-
실행 코드 방식 / 스크립트 방식
비교항목 실행코드 방식 스크립트 방식
코드형태 컴파일 된 실행 프로그램 컴파일 되지 않은 스크립트 코드
실행방식 컴파일 된 기계어 코드 직접실행 스크립트 코드를 해석한 뒤 실행\
코드 변경 소스 코드를 다시 컴파일 해야함 스크립트 코드만 고치면 됨
종류 C기반 CGI 프로그램 JSP, ASP.net, PHP,Ruby등
-
스크립트 방식과 실행 코드 방식의 실행 흐름
- 실행 코드 방식의 실행 흐름
웹 브라우저 요청전송 -> 웹 서버 요청 받음 -> 프로그램 실행
-스크립트 방식의 실행 흐름
-> 웹 브라우저 요청 전송 -> 웹 서버 요청 받음 -> 스크립트 코드 번역(추가됨) -> 번역된 코드 실행
프로토콜 : http
호스트: www.google.com
포트:80 (http 프로토콜의 기본 포트)
경로: /search
쿼리문자열: hl=en&q=jsp&aq=f&oq=
- 자바를 만든 Sun(Oracle)에서 정한 웹 개발 표준
- 서블릿(Servlet) : 실행 코드 방식의 특징(JAva<-웹 관련 코드)
- JSP(JavaServer Pages): 스크립트 코드 방식의 특징(웹 관련 코드<-Java
- JSP의 특징
- 자바 기반 스크립트 언어(자바의 기능을 그대로 사용 가능)
- HTTP에 대한 클라이언트의 요청 처리/응답
- 웹 어플리케이션에서 결과 화면을 생성할 때 주로 사용
- +JSP 사용하는 이유 +
- 자바 언어에 기반하기 때문에 플랫폼에 독립적 (리눅스, 윈도우 등 운영체제에 상관없이 동작)
- 스프링(spring)이나 스트러츠(Struts)와 같은 프레임워크와 완벽하게 연동
- 웹 컨테이너(WAS:Web Application Server)
- 웹 어플리케이션을 실행할 수 있는 컨테이너
- JSP와 서블릿을 실행해줌
<%@ page contentType = "text/html; charset=euc-kr" %>
———위는 설정부분 JSP페이지에 대한 설정 정보—————————
———아래는 생성 부분 HTML코드 및 JSP스크립트로 이루어짐———
HTML 문서의 제목
<%
String bookTitle = "JSP 프로그래밍";
String author = "최범균";
%>
<%= bookTitle %>(<%= author %>)입니다.
- 디렉티브(Directive)
- 스크립트 : 스크리트릿(%), 표현식(%=), 선언부(%!)
- 표현 언어(Expression Language)
- 기본 객체(Implicit Object)
- 정적인 데이터
- 표준 액션 태그
- 커스텀 태그아 표준 태그 라이브러리
- JSP 페이지에 대한 설정 정보를 지정
- 디렉티브 구문
- <%@ 디렉티브이름 속성1 = “값1”속성2=“값2”%>
- <%@ page contentType = “text/html; charset=euc-kr”%>
- 제공 디렉티브
- page : JSP 페이지에 대한 정보를 지정
- 문서의 타입, 출력 버퍼의 크기, 에러 페이지 등 정보 지정
- include: 다른 문서를 포함
- 동적으로 출력 결과를 생성하기 위해 사용
- 스크립트 요소
- 표현식 = 값을 출력
- 스크립트릿 = 자바 코드를 실행
- 선언부 = 자바 메서드(함수)를 정의
- 웹 프로그래밍에 필요한 기능을 제공
- JSP에서 별도 선언 없이 사용 가능
- 주요 기본 객체는 9개
- 그 중 request, response, out, session 이 중요합니당
- page 디렉티브: contentType 속성과 캐릭터 셋
-
JSP 페이지가 생성할 문서의 타입을 지정
-
contentType 속성 형식
-
TYPE : 생성할 문서의 MIME 타입(text/html, text/xml, text/plain등)
-
캐릭터 셋 - 응답 문서의 문자 인코딩 지정(UTF-8등)
-
설정 예: <%@ page contentType= “text/html; charset =UTF-8”%>
- JSP 페이지에서 사용할 클래스(인터페이스) 지정
- import한 클래스는 단순 클래스 이름으로 사용 가능!
- 요청을 처리하는 데 필요한 코드를 실행
- 동적으로 응답 결과를 생성하기 위해 사용
- 스크립트릿(자바 코드를 실행)
- 표현식(값을 출력)
- 선언부 (자바 메서드를 정의)
- 스크립트릿(자바 코드를 실행) - <% __%>
- 자바 코드를 실행할 때 사용되는 코드의 블록
- 스크립트릿의 구조
- 값을 출력 결과에 포함시키고자 할 때 사용
- 표현식 구문<%=값%>
- 웹 브라우저가 웹 서버에 전송한 요청 관련 정보 제공
- 주요 기능
- 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
- 서버와 관련된 정보 읽기 기능
- 클라이언트가 전송한 요청 파라미터 읽기 기능
- 클라이언트가 전송한 요청 헤더 읽기 기능
- 클라이언트가 전송한 쿠키 읽기 기능
- 속성 처리 기능
- request 기본 객체 - 주요 정보 제공 메소드
getRemoteAddr() String 웹 서버에 연결한 클라이언트의 IP 주소를 구한다. 게시판이나 방명록 등에서 글 작성자의 IP 주소가 자동으로 입력되기도 하는데, 이때 입력되는 IP 주소가 바로 이 메서드를 사용하여 구한 것이다.
getMethod() String 웹 브라우저가 정보를 전송할 때 사용한 방식을 구한다.
getRequestURI() String 웹 브라우저가 요청한 URL에서 경로를 구한다.
getContextPath() String JSP 페이지가 속한 웹 어플리케이션의 컨텍스트 경로를 구한다.
getServerName() String 연결할 때 사용한 서버 이름을 구한다.
getServerPort() int 서버가 실행중인 포트 번호를 구한다.
- request 기본 객체 - 파라미터 읽기 메서드
메서드 리턴타입 설명
getParameter(String name) String 이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterValues(String name) String[] 이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterNames() java.util.Enumeration 웹 브라우저가 전송한 파라미터의 이름을 구한다.
getParameterMap() java.util.Map 웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값> 쌍으로 구성된다.
- GET / POST방식 : 파라미터를 전송하는 방식
- GET : 쿼리문자열로 전송
- POST: 요청 몸체 데이터로 전송
- 파라미터 값의 인코딩/ 디코딩 : JSP에서 파라미터 로딩 시 인코딩 지정 필요
- request 기본 객체 - 요청 헤더 정보 읽기
메서드 리턴 타입 설명
getHeader(String name) String 지정한 이름의 헤더 값을 구한다.
getHeaders(String name) java.util.Enumeration 지정한 이름의 헤더 목록을 구한다.
getHeaderNames() java.util.Enumeration 모든 헤더의 이름을 구한다.
getIntHeader(String name) int 지정한 헤더의 값을 정수 값으로 읽어 온다.
getDateHeader(String name) long 지정한 헤더의 값을 시간 값으로 읽어 온다.
- 리다이렉트 response.sendRedirect(String location)
- ->특정 페이지로 이동하라고 웹 브라우저에 응답