5 min to read
JavaServer Pages

Overview
JavaServer 페이지 ( JSP는 ) 도움이 기술의 모음입니다 소프트웨어 개발자가 만들 동적 웹 페이지 생성을 기반으로 HTML , XML , SOAP , 또는 다른 문서 유형을. 1999 년 출시 썬 마이크로 시스템즈 , JSP과 유사한 PHP 와 ASP 하지만, 사용하는 자바 프로그래밍 언어를 .
JavaServer Pages를 배치하고 실행하려면 Apache Tomcat 또는 Jetty 와 같은 서블릿 컨테이너가 있는 호환 가능한 웹 서버가 필요합니다.
개요
The JSP Model 2 architecture.
구조적으로, JSP는 높은 수준으로 볼 수 있다. 추상화의 자바 서블릿. JSP는 런타임시 서블릿으로 변환되므로 JSP는 서블릿입니다. 각 JSP 서블릿은 원래 JSP가 수정 될 때까지 캐시되고 재사용됩니다.
JavaServer Pages는 독립적으로 또는 서버 측 모델 뷰 컨트롤러 디자인의 뷰 구성 요소로 사용할 수 있습니다 . 일반적으로 JavaBeans 를 모델로, Java 서블릿 (또는 Apache Struts 와 같은 프레임 워크 )을 컨트롤러로 사용합니다. 이것은 모델 2 아키텍처 유형입니다 .
JSP를 사용하면 Java 코드 및 사전 정의 된 특정 조치를 정적 웹 마크 업 컨텐츠 (예 : HTML)에 인터리브 할 수 있습니다. 결과 페이지는 서버에서 컴파일 및 실행되어 문서를 제공합니다. 컴파일 된 페이지 및 모든 종속 Java 라이브러리에는 기계 코드 대신 Java 바이트 코드가 포함 됩니다. 다른 .jar 또는 Java 프로그램과 마찬가지로 코드는 서버의 호스트 운영 체제와 상호 작용하여 추상적인 플랫폼 중립적 환경을 제공하는 JVM ( Java Virtual Machine) 내에서 실행되어야 합니다.
JSP는 일반적으로 HTML 및 XML 문서를 전달하는 데 사용되지만 OutputStream을 사용하여 다른 유형의 데이터도 전달할 수 있습니다.
웹 컨테이너는 요청, 응답, 세션, 응용 프로그램 설정, 페이지, pageContext와, 출력 및 예외 같은 JSP 내장 객체를 생성합니다. JSP 엔진은 변환 단계에서 이러한 오브젝트를 작성합니다.
Syntax
JSP 페이지는 스크립팅 기능에 여러 구분 기호를 사용합니다. 가장 기본적인 것은 <% … %> 이며 JSP 스크립틀릿을 포함합니다. 스크립틀릿은 사용자가 페이지를 요청할 때 실행되는 Java 코드 조각입니다. 다른 일반적인 구분 기호에는 식에 대한 <% = … %>가 포함됩니다 . 여기서 스크립틀릿과 구분 기호는 식 평가 결과로 대체되고 지시문 은 <% @ … %> 로 표시됩니다 .
단일 스크립틀릿 블록 내에서 Java 코드가 완전하거나 독립적 일 필요는 없습니다. 페이지 전체가 구문 적으로 정확하다면 마크 업 컨텐츠를 걸을 수 있습니다. 예를 들어, 하나의 스크립틀릿에서 열린 Java if / for / while 블록은 페이지를 성공적으로 컴파일하기 위해 이후의 스크립틀릿에서 올바르게 닫아야합니다. 이로 인해 코드가 섞여서 프로그래밍 방식이 잘못 될 수 있습니다.
Java 코드의 분할 블록 (여러 스크립틀릿에 걸쳐있는)에 포함 된 내용은 해당 코드의 적용을받습니다. if 블록 내부의 내용 은 if 조건이 true로 평가 될 때만 출력에 나타납니다 . 마찬가지로 루프 구성이 실행되는 횟수에 따라 루프 구조 내의 내용이 출력에 여러 번 나타날 수 있습니다.
다음은 JSP 페이지에서 유효한 for 루프 입니다.
<p>Counting to three:</p>
<% for (int i=1; i<4; i++) { %>
<p>This number is <%= i %>.</p>
<% } %>
<p>OK.</p>
The output displayed in the user’s web browser would be:
Counting to three:
This number is 1.
This number is 2.
This number is 3.
OK.
Expression Language
JSP 스펙의 버전 2.0은 Java 오브젝트의 데이터 및 함수에 액세스하는 데 사용되는 EL (Expression Language)에 대한 지원을 추가했습니다. JSP 2.1에서는 JavaServer Faces 에서도 사용되는 Unified Expression Language 로 접혔습니다 .
EL 구문 의 예 :
The value of "variable" in the object "javabean" is ${javabean.variable}.
Additional tags
JSP 구문은 내장 기능을 호출하기 위해 JSP 조치라는 추가 태그를 추가합니다. 또한,이 기술은 사용자의 JSP의 생성을 허용 태그 라이브러리 표준 JSP 구문 정보로서 행동있다. 이러한 라이브러리 중 하나는 JSTL 이며 반복 및 조건부 (Java의 “for”및 “if”문과 동일)와 같은 공통 태스크를 지원합니다.
Compiler
JavaServer 페이지 컴파일러는 프로그램입니다 파싱의 JSP 및 실행 파일로 변환을 자바 서블릿 . 이 유형의 프로그램은 일반적으로 Application Server에 임베드되고 JSP에 처음 액세스 할 때 자동으로 실행되지만 페이지는 더 나은 성능을 위해 사전 컴파일되거나 오류를 테스트하기 위해 빌드 프로세스의 일부로 컴파일 될 수도 있습니다.
일부 JSP 컨테이너는 컨테이너가 JSP 파일 타임 스탬프 를 확인하여 페이지가 변경되었는지 확인하는 빈도 구성을 지원합니다 . 일반적으로이 타임 스탬프는 소프트웨어 개발 중 짧은 간격 (아마도 초 )으로, 배포 된 웹 응용 프로그램의 경우 더 긴 간격 (아마도 몇 분 또는 전혀)으로 설정 됩니다 .
Criticism
2000 년에 “Java Servlet Programming”의 저자 인 Jason Hunter는 JavaServer Pages의 여러 가지 “문제”를 설명했습니다. 그럼에도 불구하고, 그는 JSP는 “자바 플랫폼을위한 최적의 솔루션”을하지 않을 수 있습니다 동안 그는 마이크로 소프트의 의미있는은 “비 자바 솔루션과 같은 대부분의 자바 솔루션”이라고 썼다 액티브 서버 페이지 . 나중에 그는 JSP가 2000 년부터 개선되었다는 메모를 추가했지만 경쟁사 인 Apache Velocity and Tea (템플릿 언어) 도 언급했습니다 . [ 표창장은 필요로했다 ] 오늘은 거기에 몇 가지 대안이며, 더 큰 웹 응용 프로그램에서 JSP 지향 페이지의 수는 기술 부채로 간주됩니다.
See also
- Interactive web stories
- Sitelet
Servlet containers
- Apache Tomcat
- Apache TomEE
- Jetty (web server)
- GlassFish
- Oracle iPlanet Web Server
- WebSphere Application Server
Java-based template alternatives
- Adobe ColdFusion
- Lucee
- FreeMarker
- JHTML
- Thymeleaf
module & java version
- dynamic web module 3.0 requires java 1.6 or newer
- dynamic web module 3.1 requires java 1.7 or newer
- dynamic web module 4.0 requires java 1.8 or newer
최범균의 jsp 2.3 GibHub
https://github.com/madvirus/jsp23
appB : multipart
board : lib,tags,view,…
chap02 : time
chap03 : index,form,login,requestInfo,viewHeaderList,sum
chap04 : autoFlushFalse,autoFlushTrue,contextPath
chap05 : bufferInfo,readFile,readInitParameter,setApplicationAttribute,log
chap06 : bufferOverflow,readParameter
chap07 : main, body, include, sub, layout, select, view
chap08 : makeObject,membershipForm,processJoining,useObject,viewCookies
chap09 : makeCookie
chap10 : closeSession,sessionInfo,setMemberInfo,viewCookies,viewMemberInfo
chap11 : EL,minmax,sorted,thermometer,useELObject,viedNumber
chap12 : tag,catch,choose,date,foreach,fortokens,if,import,message,number,out,timezone,url
chap13 : now
chap14 : insertItem,viewMember,viewMemberList,viewMemberUsingPool
chap15 : confirmDeletion,deleteMessage,list,writeMessage
chap16 : tags
chap17 : web.xml,viewMemberUsingPool
chap18 : web.xml,simpleView.jsp
chap19 : web.xml,xsl,xml,board,login,loginForm,nullParam
chap20 : web.xml,connection pool
Comments