
🟥 (Java Server Page) - 서블릿 코드 번역기술
JSP는 서블릿 기술의 확장
JSP는 유지 관리가 용이
JSP는 빠른 개발이 가능
JSP로 개발하면 코드 길이를 줄일 수 있다.

웹 브라우저가 웹 서버에 JSP를 요청합니다. 웹 서버는 요청된 Hello.jsp에서 jsp 확장자를 발견하여 JSP 페이지임을 확인하고 웹 서버에 있는 JSP 컨테이너에 전달합니다.
JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hello_jsp.java로 변환합니다.
JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class로 만들고 이를 웹 서버에 전달합니다.
웹 서버는 정적 웹페이지처럼 *.class의 실행 결과를 웹브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여줍니다.


hello_jsp.java



hello.jsp에 한글로 입력한 내용을 번역해주었다.
자동적으로 hello_jsp.java 내의 _jspService(....) 메서드가 번역을 수행해준다.

post.jsp -> post_jsp.java -> 컴파일 -> post_jsp.class -> 실행 -> _jspInit()한번 -> _jspService(): 매 요청시 -> _jspDestroy();



자바코드로 바뀌어있다.

🔼 번역된 위치는 _jspService메서드 내부임 (지역 안!)

💥post_jsp.java에서 번역 된 위치가 _jspService안이라는 것을 확인 할 수있다.
따라서 이건 서비스 메서드 지역 내부라는것,, 같은 지역안에 있기 때문에 해당 지역 변수 사용 가능하다

🔹_jspInit() : 초기화시(처음만 호출)
🔹_jspService(....) : 매 요청시 (이 메서드 내부에 요청한 내용의 번역이된다.)

🔹_jspDestroy() : 소멸시
👩🏫참고)
_jspService 메서드 지역 내부에 정의된 객체 = 내장 객체
-> jsp 페이지에서 바로 접근이 가능

...
인터페이스명 변수명
🌟 HttpServletRequest request : 요청 관련 정보, 기능
🌟 HttpServletResponse response : 응답 관련 정보, 기능
🌟 PageContext pageContext : JSP로 번역된 서블릿 클래스의 환경 정보, 기능

🔼pageContext객체 만들어줌(페이지의 정보를 바탕으로 만들어짐)
-> 이 정보를 바탕으로 다른 내장객체를 만듦
🌟 ServletContext application : 서블릿(애플리케이션) 환경 정보, 기능
🌟 ServletConfig config : 서블릿 설정
🌟 HttpSession session : 세션
🌟 JspWriter out : JSP 페이지에 출력
🌟 Object page = this // 생성된 서블릿 객체를 참조
Throwable exception
📍 jsp 페이지에서 자바 코드 : 번역시 자바 코드 그자체로 추가
<%
자바 코드
`%>
#hello.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<h1>안녕하세요.</h1>
<h1>방가루</h1>
<%
response.sendRedirect("http://www.naver.com");
%>
<!--접속시 네이버 이동됨-->
<%!
자바코드 ...
%>

🔼지역안이라 함수정의하면 접근 불가능(자바는 함수 안에 함수 불가능)
🔽멤버 메서드로써 추가된거라 정의된 add함수를 지역안에서 부르는것 문제가 없음

당연히 멤버 변수도 접근 가능함


_jspService 메서드의 지역 내에 코드 추가 (메서드 정의 X(함수안에 함수 정의 불가능), 변수 -> 지역변수)
<%
자바코드 ...
%>
_jspService 메서드의 지역 내에 번역
<%=변수%> = out.print(변수)



<%@ ..... %>

jsp페이지를 어떻게 처리할 것인지 설정하는 태그



errorPage -> 에러 출력 페이지 설정
isErrorPage="true" : 번역될때 exception 내장 객체 생성


🔼exception 내장객체
isELIgnored="true" : EL 식 사용 불가 (Expression Language)
${식}


-> JSP, 서블릿, 텍스트 파일 출력 결과물을 물리적으로 포함 <%@ include file="파일 경로" %>


<%@ page 속성1=“값” [속성2=“값2” .. ] %>
<%과 @사이에 공백이 없어야 함
<%@ include file="..." %>👩🏫참고)
예전 JSTL(1.2~)
uri ="http://java.sun.com/jsp/jstl/core|fmt|functions"

implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0'

implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1'

<%-- 주석 --%> : 번역 배제!!
/* */ : 자바 코드의 주석으로 번역