[20230203_1교시]
JSP(Java Server Page)
- 서블릿은 자바 언어로 동적인 페이지를 구현해야 한다. 그와 달리 JSP는 HTML 페이지 안에서 스크립트 형태로 동적인 페이지를 구현한다.
Servlet JSP 형태 Java 코드에 HTML 코드 삽입 HTML 코드에 Java 코드 삽입 예시 out.println("<HTML>"); <% for(int k = 0; k < 10; k++){ %> 특징 비즈니스 로직 처리에 적합 화면 로직 처리에 적합  - JSP의 목표는 서블릿의 비즈니스 로직으로부터 화면 로직을 분리하는 것을 목표로 한다.
 
JSP 실행 과정
- 웹 컨테이너는 클라이언트로부터의 요청이 JSP에 대한 요청일 경우 먼저 JSP 파일을 자바 코드(서블릿)로 변환한다.
 - 변환된 자바 코드(서블릿)를 컴파일하고 서블릿 인스턴스를 생성한다.
 - 서블릿 인스턴스가 생성되면 서블릿의 라이프 사이클을 거치면서 클라이언트의 요청을 처리해 준다.
 
JSP 특징
- 자바 언어를 이용하기 때문에 대부분의 운영체제에서 사용이 가능하다.
 - 서버 자원을 효율적으로 사용한다. (요청을 스레드 단위로 처리) 사용자가 요청할 때 마다 객체를 생성하는 게 아니라 별도의 실행 흐름인 스레드를 사용한다. (메인 스레드와 별도의 흐름 스레드로 이해하기 / 메인 스레드는 다음 실행을 대기)
 - MVC 패턴을 쉽게 적용할 수 있다.(view에 해당하는jsp / controller에 해당하는 servlet)
 - JSP 파일의 배포 위치는 HTML 파일 만들듯이 webapp에 지정하는 것으로 동일하다.
 - 실제로는 자바 서블릿으로 변환되서 실행되는 것이다!
 
서블릿 생성 실습










[20230203_2교시]



index.java파일 불러오기






두 주석의 차이
- 페이지 소스 보기 / 개발자 도구에서 HTML 주석만 확인이 가능하다.
 - JSP주석은 서블릿으로 변환될 때 서블릿으로 포함되지 않기 때문이다.
 
[20230203_3교시]
인코딩 속성, 클래스import 맨 위에 위치.
JSP 요소
- JSP는 동적인 페이지를 만들기 위해 다양한 스크립팅 요소(태그)를 제공한다.
 - JSP 스크립팅 요소들은 <%로 시작해서 %>로 끝나는 것이 특징이다.태그표기법 
태그 표기법 주석(Comment) 태그 <%-- 주석 --%> 지시자(Directive) 태그 <%@ 지시자 %> 선언문(Declaration) 태그 <%! 선언문 %> 스크립트릿(Scriptlet) 태그 <% 코드 %> 표현식(Expression) 태그 <%= 표현식 %>  
지시자(Directive) 태그
- JSP 페이지 전체에 영향을 미치는 정보를 기술할 때 쓰인다.
<%@ 지시자 [속성 명="value"] … %> - page 지시자는 JSP 페이지에 대한 속성을 지정한다.
 - page 지시자는 JSP 파일 어느 위치에 와도 상관없으나 가장 첫 부분에 작성한다.
<%@ page import="java.io.*"%> <%@ page contentType="text/html;charset=UTF-8"%> <%@ page isErrorPage="true" %> * <%@ page errorPage="/error/errorForm.jsp" %> - include 지시자는 다른 페이지(JSP, HTML)를 포함할 때 사용하는 지시자이다. 별도로 컴파일 하는 게 아니라 그 내용을 서블렛으로 전환해서 그대로 가져오는 것
 <%@ include file="footer.html" %>- taglib 지시자는 JSP에서 사용할 태그 라이브러리를 지정한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
선언문(Declaration) 태그
- 서블릿 클래스의 필드와 메소드를 선언할 때 사용한다.
<%! public static final String DEFAULT_NAME = "홍길동"; %> <%! int counter = 0; %> <%! public String getName(HttpServletRequest request){ return request.getParameter("name"); } %> 
스크립트릿(Scriptlet) 태그
- _jspService() 메소드의 로컬(지역) 변수와 자바 코드를 작성할 때 사용한다.
<% int i = 10; %> <% if(i > 10) { %> ... <% } else { %> ... <% } %> 
표현식(Expression) 태그
- 서블릿 코드에서 out.print()의 역할 수행하는 태그로 클라이언트로 데이터를 출력하는 코드를 작성할 때 사용한다.
현재 시간은 <%= new java.util.Date() %> 입니다. 
JSP 내장 객체
- JSP에서 기본적으로 제공하는 객체들로 request, response, out 등 스크립트릿 태그와 표현식 태그에서 사용할 수 있게 선언된 객체이다.
 
JSP 내장 객체 종류
- JSP에서 기본적으로 제공하는 객체들은 아래와 같다.내장 객체 명설명
request HttpServletRequest 객체 참조 변수 response HttpServletResponse 객체 참조 변수 out JspWriter 객체 참조 변수 session HttpSession 객체 참조 변수 application ServletContext 객체 참조 변수 page 현재 JSP 페이지에 대한 참조 변수 exception 발생하는 Throwable 객체에 대한 참조 변수  
JSP 내장 객체 영역
- Page < Request < Session < Application 영역 순으로 범위가 넓다.
 
영역설명
| Page | 하나의 JSP 페이지를 처리할 때 사용되는 영역 pageContext 내장 객체를 통해 접근할 수 있는 영역  | 
| Request | 하나의 요청을 처리할 때 사용되는 영역 request 내장 객체를 통해 접근할 수 있는 영역  | 
| Session | 하나의 브라우저와 관련된 영역 session 내장 객체를 통해 접근할 수 있는 영역  | 
| Application | 하나의 웹 애플리케이션과 관련된 영역 application 내장 객체를 통해 접근할 수 있는 영역  | 
4교시


web INF는 사용자가 접근 할 수 없는 경로이다.

'Back > web' 카테고리의 다른 글
| 2023.02.09_1~8교시 (0) | 2023.02.09 | 
|---|---|
| 2023.02.07_EL, (0) | 2023.02.07 | 
| 서블릿생명주기,GET,POST방식(enc)20230202_5~8교시 (0) | 2023.02.02 | 
| 웹 프로젝트 생성 (0) | 2023.02.02 | 
| 웹 통신 개요 (0) | 2023.01.31 |