-
[JSP] JSP 엔진, 지시어back end 2022. 3. 4. 01:13
1. jsp 생명 주기를 이해하고 설명할 수 있다. JSP 엔진
2. jsp 객체의 속성값을 이해하고 표현식을 사용할 수 있다.
3. jsp 액션 태그를 활용할 수 있다. (지시어 / 스크립트 태그 / 내장 객체 / 액션 태그 / 자바빈)
4. 폼연동을 할 수 있다.
Reference Library import해서 사용하기
JAR로 export하기
Browse를 클릭해서 적당한 경로에 폴더만들고 export를 원하는 파일 체크하고
Export generated class files and resources와 Export Java source files and resources를 체크한 후 Finish 한다.
import 할 프로젝트에 build path 해서 add external JARs > Apply
reference Libraries에 올라오는거 확인하기!
그리고 라이브러리 사용할 곳에서 import하고 사용하기! WOW!!!
+ 한가지, 하지만 이렇게 reference Libraries에 external JAR를 절대경로로 넣게 되면 프로젝트를 export할 때 라이브러리를 따로 공유해야하는 불편함이 있어서, 프로젝트 내부에 JAR를 저장하고 참조한다.
보통 lib 라는 폴더를 만들고 그곳에 JAR파일을 넣고 참조한다.
build path > Add JARs > lib 폴더 선택해서 완료하면 아래와 같이 Referenced Libraries에 절대경로가 표시되지 않는 jar가 추가된다.
JSP
이클립스는 JSP 컨테이너(=엔진)를 따로 관리하는데 굉장히 깊은 곳에 저장해서 관리한다. 그래서 우리는 다른 폴더에 엔진을 복사 붙여넣기해서 본다!
엔진을 봐야하는이유?
JSP에 오류가 나면 JSP엔진의 몇 번째 줄에서 오류가 났는지 알려주기 때문에!
엔진은 .java와 .class 파일을 생성한다.
JSP 엔진을 원하는 위치를 넣기 위해 프로젝트의 환경설정을 바꿔야하는데, Servers > context.xml(환경설정)을 가져다가 우리의 프로젝트 webapp 폴더 > META-INF에 복사-붙여넣는다.
다음으로는, context.xml의 context 태그에 어떤 속성을 주어야 엔진을 복사할 수 있는지 찾는다.
JSP API(도움말)
https://tomcat.apache.org/tomcat-9.0-doc/index.html
Apache Tomcat 9 (9.0.59) - Documentation Index
This is the top-level entry point of the documentation bundle for the Apache Tomcat Servlet/JSP container. Apache Tomcat version 9.0 implements the Servlet 4.0 and JavaServer Pages 2.3 specifications from the Java Community Process, and includes many addit
tomcat.apache.org
API 보는 법
Reference > configuration > Container > context
Context태그의 jSP 엔진 경로를 복사붙여넣기하는 속성을 찾는다.
<Context workDir="폴더경로">
<Context workDir="/Users/angiekim/Documents/MyWeb/workspace/Web04/webapp/jsp/classes">
속성을 찾았으면, context.xml 파일에 위의 코드를 넣어 JSP엔진이 들어갈 위치를 붙여넣는다.
context.xml 환경설정 파일 수정하면 서버와 프로젝트 clean 작업을 해준다. (project clean하고 서버 restart)
리로드하고 프로젝트 refresh하면 JSP엔진이 들어있는 폴더가 생성되서 보인다.
그러면 이제 JSP 엔진이 init()하고 service()하고 destroy()한다!
JSP엔진 코드를 분석하니,
생성자보다 먼저 메모리에 올라가는 코드
static { }
init, service, destroy 가 있고,
Thread synchronized도 보이고,
html로 출력하는 코드도 보인다.
flush()
clearbuffer()
JSP (Java Server Page)
: html 과 java 코드를 분리한 구조
.jsp 파일은 맨 위에 <%@ page %>라는 지시자를 명시해준다. -> 클라이언트 요청에 JSP페이지가 실행될 때 필요한 정보를 JSP 컨테이너에게 알려준다.
JSP 컨테이너 : filename.jsp -> filename_jsp.java -> filename_jsp.class
- 주석문(comment) : <%-- --> 페이지 자체에 대한 참조 정보를 제공
- 선언문(declaration) : <%! %> JSP 페이지내에 사용할 변수, 메서드 선언
- 표현식(expression) : <%= %> 웹페이지에 출력문(System.out.print)으로 사용
- 지시자(directive) : <%@ %> 웹페이지의 처리할 정보를 컨테이너에게 제공
- 스크립트릿(scriptlet): <% %> 자바프로그램 작성
JSP 속성 지시자
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
- contentType : 어떤 형태로 출력될 것인지를 MIME 타입과 문자형 인코딩 타입을 지정한다.
- extends : org.apache.jasper.runtime.HttpJspBase
- session : true - 현재 페이지가 세션을 유지하겠다. 세션이 존재하지 않으면 새로운 세션을 생성해서 연결하겠다.
false - 세션이 연결되지 않는다.
- Buffer : none - jsp페이지로부터 출력되는 내용을 클라이언트의 웹브라우저로 전달한다.
- autoFlush : true - 지정된 버퍼의 메모리를 다 썼을 경우(버퍼가 꽉 찼을 경우) 자동으로 지워지고, 버퍼의 내용을 브라우저로 전송.
false - 지정된 버퍼의 메모리를 다 썼을 경우 Exception 이 발생한다.
액션 태그 / 자바빈
액션 태그 (forward, include, useBean, setProperty)
<jsp:forward page=""/> : 제어권 넘김 <jsp:include page=""/> : 제어권 획득
자바빈 <jsp: />
<jsp:useBean id=""></jsp:useBean> <jsp:setProperty property="" name=""/> <jsp:getProperty property="" name=""/>
<jsp:useBean id="Alist" class="com.test.Address"/> <jsp:setProperty name="Alist" property="*"/> <jsp:getProperty name="Alist" property="name"/> 님 반갑습니다 <br> <jsp:getProperty name="Alist" property="name"/> 님 의 주소는 <jsp:getProperty name="Alist" property="addr"/> 이고 <br>전화번호는 <jsp:getProperty name="Alist" property="tel"/> 입니다.
'back end' 카테고리의 다른 글
[MVC 패턴] DB연동 (0) 2022.03.08 [JSP] 내장객체 (0) 2022.03.05 [Servlet] URL 맵핑, Servlet 객체, 생명주기 (0) 2022.03.03 [Error] HTTP Status 404 - Not Found (0) 2022.03.01 [Web Application] JSP, Servlet eclipse에서 생성하기 (0) 2022.03.01