jsp jstl 요약

반응형

jsp, jstl 요약.

http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/overview-summary.html

<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
<%@ taglib prefix=”x” uri=”http://java.sun.com/jsp/jstl/xml” %>
<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %>
<%@ taglib prefix=”sql” uri=”http://java.sun.com/jsp/jstl/sql” %>
<%@ taglib prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions” %>
<%@ page isELIgnored=”false” contentType=”text/html;charset=utf-8″%>
<!–
c : catch, choose, if, import, forEach, forTokens, out, otherwise, param, redirect, remove, set, url, when
fmt : requestEncoding, setLocale, timeZone, setTimeZone, bundle, setBundle, message, param, formatNumber, parseNumber, formatDate, parseDate
sql : transaction, query, update, param, dateParam, setDataSource
x : choose, out, if, forEach, otherwise, param, parse, set, transform, when
fn : contains, containsIgnoreCase, endsWith, escapeXml, indexOf, join, length, replace, split, startsWith, substring, substringAfter, substringBefore, toLowerCase, toUpperCase, trim
–>
<%@ page language=”java” contentType=”text/html; charset=UTF-8″ pageEncoding=”UTF-8″ isELIgnored=”false”%><%@ taglib
prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%><%@ taglib prefix=”d”
uri=”http://www.opensymphony.com/sitemesh/decorator”%><%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt”%><%@ taglib
prefix=”fn” uri=”http://java.sun.com/jsp/jstl/functions”%>



[ JSP ]

기본구문

주석 – <%– –>

지시어 – page, include, taglib – <%@ %>

page 지시어 옵션 : language, import, session, buffer, autoFlush, isThreadSafe, info, errorPage, isErrorPage, contentType, pageEncoding, extends

액션 – <jsp: >

include page=””,
forward page=””, plugin, param
useBean scope=”page” id=”cls”
setProperty name=”cls” property=”xxx”
getProperty name=”cls” property=”xxx”

지시어와 액션의 차이 및 자세한 사항 : 지시어는 정적, 액션은 동적. 지시어는 자체로 포함되어 서블릿으로 컴파일되지만 액션은 따로 서블릿으로 컴파일되고 그것이 포함됨. 액션은 객체를 변경, 생성하는 용도로 사용됨.

http://blog.naver.com/PostView.nhn?blogId=oneprimary&logNo=30040217494&widgetTypeCall=true

http://blog.daum.net/ktlee88/11805807

선언과 표현식 – jsp 내에서 메서드나 멤버변수를 선언한다.
<%! ;%> 선언

out.println()과 같다. <%= “i+2=” + (i+2) + “입니다.” %> 이런식으로도 가능
<%= %> 표현식

스크립틀릿 – <% %> 스크립틀릿 부분에는 순수 자바 코드만 올 수 있다.
jsp 내에서 가급적 스크립틀릿 자제.
자바코드 내에서 스크립틀릿을 몰아내기 위해
EL(표현언어, Expression Language), JSTL을 비롯한 커스텀 태그 라이브러리,
JSP 빈즈 사용이 권장.

JSP 내장 객체

request, response, out, session, config, application, page, pageContext, exception

JSP와 자바 빈즈

데이터베이스와 JDBC

방명록 프로그램 제작
– 프로그램 분석, 화면 및 데이터베이스 구성, 컨트롤러 기본 구조 및 오류 페이지 구현,
빈즈 클래스 구현, 개별 기능 구현

——————————— 고급 ——————————-

웹 애플리케이션 아키텍처
– 웹 애플리케이션, 컨테이너와 배포, 배포 서술자, Tomcat Manager와 Client Deployer활용
표현 언어와 커스텀 태그

표현 언어(자바 빈즈 속성 값을 보다 쉽고 제약이 덜 받는 방법으로 사용하기 위해 나온 것)와
커스텀 태그(일종의 jsp 확장 태그)
– 표현언어, 커스텀 태그, SimpleTag 인터페이스

JSTL(Java Standard Tag Library) jsp 확장 태그의 표준

데이터베이스 커넥션 풀/DBCP(애플리케이션에서 필요로 하는 시점에 커넥션을 만드는 것이 아니라, 미리 일정 수의 커넥션을 만들어 놓고 필요한 시점에 애플리케이션에 제공하는 서비스 및 관리체계를 말한다.)
JNDI(Java Naming and Directory Interface)
트랜잭션(일련의 작업을 하나로 묶어 처리하는 것을 의미한다. commit rollback)

초기화 파라미터. 속성관리.
ServletConfig(해당 서블릿에서만)/ServletContext(동일 웹 애플리케이션 내 모든 서블릿 혹은 JSP)
리스너(서블릿이나 JSP가 호출되기 이전에 ServletContext를 참조해 초기화 파라미터를 읽어와, 객체 생성 등의 작업을 수행할 리스터라는 클래스가 필요)와
서블릿 필터(서블릿이나 JSP가 실행되기 전, 필요에 따라 내용의 첨삭(response, request)을 가능하게 해주는 역할. 일반적으로 필터를 사용하는 목적은 다음과 같다.
Authentication/Logging,Auditing/Image Conversion/Data Compression/Localization/XML변환)

웹 애플리케이션 로깅 및 오류처리기법

스트럿츠 프레임워크, 스프링 프레임워크

json, jdom, ajax, javascript, xml …

String getProtocol() : 웹 서버로 요청 시, 사용 중인 프로토콜을 리턴한다.
String getServerName() : 웹 서버로 요청 시, 서버의 도메인 이름을 리턴한다.
String getMethod() : 웹 서버로 요청 시, 요청에 사용된 요청 방식(GET, POST, PUT등)을 리턴한다.
String getQueryString() : 웹 서버로 요청 시, 요청에 사용된 QueryString을 리턴한다.
String getRequestURI() : 웹 서버로 요청 시, 요청에 사용된 URL로부터 URI 값을 리턴한다.
String getRemoteHost() : 웹 서버로 정보를 요청한 웹 브라우저의 호스트 이름을 리턴한다.
String getRemoteAddr() : 웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴한다.
int getServerPort() : 웹 서버로 요청 시, 서버의 Port번호를 리턴한다.
String getContextPath() : 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 리턴한다.
String getHeader(name) : 웹 서버로 요청 시, HTTP 요청 헤더(header)의 헤더 이름인 name에 해당하는 속성값을 리턴한다.
Enumeration getHeaderNames() : 웹 서버로 요청 시, HTTP 요청 헤더(header)에 있는 모든 헤더 이름을 리턴한다.
void setHeader(name, value) : 헤더 정보의 값을 수정하는 메소드로, name에 해당하는 헤더 정보를 value 값으로 설정한다.
void setContentType(type) : 웹 브라우저의 요청의 결과로 보일 페이지의 contentType을 설정한다.
void sendRedirect(url) : 페이지를 이동시키는 메소드로, url로 주어진 페이지로 제어가 이동한다.

<out 객체>

boolean isAutoFlush() : 출력 버퍼가 다 찼을 때 처리 여부를 결정하는 것으로, 자동으로 플러시 할 경우에는 true를 리턴하고, 그렇지 않을경우 false를 리턴한다.
int getBufferSize() : 출력 버퍼의 전체 크기를 리턴한다.
int getRemaining() : 현재 남아 있는 출력 버퍼의 크기를 리턴한다.
void clearBuffer() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다.
String println(str) : 주어진 str 값을 웹 브라우저에 출력한다. 이때 줄 바꿈은 적용되지 않는다.
void flush() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다.
void close() : 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 출력 스트림을 닫는다.

<pageContext 내장 객체의 메소드>

ServletRequest getRequest() : 페이지 요청 정보를 가지고 있는 request 내장 객체를 리턴한다.
ServletResponse getResponse() : 페이지 요청에 대한 응답 정보를 가지고 있는 response 내장 객체를 리턴한다.
JspWriter getOut() : 페이지 요청에 대한 출력 스트림인 out 내장 객체를 리턴한다.
HttpSession getSession() : 요청한 웹 브라우저의 세션 정보를 담고 있는 session 내장 객체를 리턴한다.
ServletContext getServletContext() : 페이지에 대한 서블릿 실행 환경 정보를 담고 있는 application 내장 객체를 리턴한다.
Object getPage() : page 내장 객체를 리턴한다.
ServletConfig getServletConfig() : 해당 페이지의 서블릿 초기 정보 설정 정보를 담고 있는 config 내장 객체를 리턴한다.
Exception getException() : 페이지 실행 중에 발생되는 에러 페이지에 대한 예외 정보를 갖고 있는 exception 내장 객체를 리턴한다.

<application 내장 객체의 메소드>

String getServerInfo() : 웹 컨테이너의 이름과 버전을 리턴한다.
String getMimeType(fileName) : 지정한 파일의 MIME 타입을 리턴한다.
String RealPath(path) : 지정한 경로를 웹 어플리케이션 시스템상의 경로로 변경하여 리턴한다.
void log(message) : 로그 파일에 message를 기록한다.

<config 내장 객체>

Enumeration getInitParameterNames() : 모든 초기화 파라미터 이름을 리턴한다.
String getInitParameter(name) : 이름이 name인 초기화 파라미터의 값을 리턴한다.
String getervletName() : 서블릿의 이름을 리턴한다.
ServletContext getServletContext() : 실행하는 서블릿 ServletContext 객체를 리턴한다.

<exception 내장 객체>

String getMessage() : 발생된 예외의 메시지를 리턴한다.
String toString() : 발생된 에외 클래스명과 메시지를 리턴한다.
String printStackTrace() : 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다. 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용된다.

JSTL(SQL응용 후 iBatis응용), SGML – HTML – XML – JSTL
EL = Expression Language ${변수명}

jakarta.apache.org -> 에서 downloads -> taglibs -> standard taglibs.. 다운

JSTL 태그의 기본액션 JSTL core액션이 있습니다.
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
core액션에 출력태그 <c:cout>
core액션에 변수설정 및 삭제 태그 <c:set> <c:remove>
core액션에 예외태그 <c:catch>
core액션에 조건처리태그 <c:if> <c:choose> <c:when> <c:otherwise>
core액션에 반복처리태그 <c:foreach> <c:fortoken>
core액션에 페이지 처리태그 <c:import> <c:redirect> <c:url> <c:param>

스트럿츠 태그 라이브러리 : struts-tiles.tld, struts-html.tld, struts-bean.tld….

velocity + sitemesh + spring + ibatis

[자바 측 웹 GUI 프레임웍 개념 설명]
jstl + el ==> velocity, freemaker, JSF 가 대체할 수 있는 기술임.
struts 태그 라이브러리의 경우 스트럿츠 프레임웍을 사용시 jstl 보다 편하게 사용하기 위한 것.
struts-tiles.tld, struts-html.tld, struts-bean.tld… 이 있다.
jstl, struts-stl 등은 xml 형식의 태그 라이브러리이며 사용시 <%@ taglib uri=”” prefix=”” %> 와 같이 사용

velocity, freemaker, JSF는 ‘템플릿 엔진’이다. xml 의 태그 형식이 아닌
자체 jar 로직을 가진 프로그램이다.

sitemesh, tiles의 경우 데코레이터 패턴을 적용한 ‘레이아우터’이다.









[스프링 배포판에 포함되어 있는 외부 라이브러리 목록]

[로깅 관련 외부 라이브러리]
Commons Logging : jakarata-commons/commons-logging.jar (스프링이 로그를 기록할 때 사용.
Log4j : log4j/log4j-xxx.jar (Log4jConfigurer를 사용하거나 Log4j를 이용하여 로그를 기록하고 싶은 경우에 사용)

[AOP 관련 외부 라이브러리]
ObjectWeb ASM : asm/asm-xxx.jar (AspectJ의 파라미터 이름 매칭을 사용할 때 필요)
AspectJ : aspectj/aspectjweaver.jar, aspect/aspectjrt.jar (스프링의 Aspectj 지원을 사용할 때 필요)
CGLIB : cglib/cglib-nodep-xxx.jar (Spring AOP를 이용하여 전체 대상 클래스를 프록싱 할 때 필요)
Jakarta ORO : oro/jakarta-oro-xxx.jar (RegexpMethodPointcut을 사용할 때 필요)
AOP Alliance : aopalliance/aopalliance.jar (MethodInterceptor 인터페이스 제공. spring.jar를 사용할 경우 클래스패스에 추가하지 않아도 됨)

[웹 프로그래밍 관련]
FreeMarker : freemarker/freemarker.jar (스프링의 FreeMarker 지원을 사용할 때 필요)
JSP API : j2ee/jsp-api.jar (스프링의 JSP 지원을 사용할 때 필요. 톰캣과 같은 웹 컨터이너에서 이미 제공)
JSTL API : j2ee/jstl.jar (스프링의 JstlView를 사용하는 경우 런타임에 필요)
iText PDF : itext/itext-xxx.jar (AbstractPdfView를 사용할 때 필요)
Servlet API : j2ee/servlet-api.jar (스프링의 웹 지원을 사용할 때 필요. 톰캣과 같은 웹 컨테이너에서 이미 제공)
Commons FileUpload : jakarta-commmons/commons-fileupload.jar (CommonsMultipartResolver를 사용할 때 필요)
JExcelAPI : jexcelapi/jxl.jar (AbstractJExcelView를 사용할 때 필요)
Velocity : velocity/velocity-xxx.jar (VelocityView를 사용할 때 필요)
Velocity Tools : velocity/velocity-tools-view-xxx.jar (VelocityView를 사용할 때 필요)
JSF API : jsf/jsf-api.jar (JSF 지원을 사용할 때 필요)
Portlet API : portlet/portlet-api.jar (포플릿 지원을 사용할 때 필요)
Apache POI : poi/poi-xxx.jar (AbstractExcelView를 사용할 때 필요)
Struts : struts/struts.jar (스트럿츠 연동할 때 및 Tiles 1 버전 사용할 때 필요)
Tiles 2 : tiles/tiles-api-xxx.jar, tiles/tiles-core-xxx.jar, tiles/tiles-jsp-xxx.jar (Tiles 2 연동할 때 필요)

[영속성 레이어 관련]
Hibernate 2 : hibernate/hibernate2.jar (하이버네이트 2.1 연동할 때 필요)
Hibernate 3 : hibernate/hibernate3.jar (하이버네이트 3.x 연동할 때 필요)
Hibernate Annotations xxx : hibernate/hibernate-annotation.jar (Hibernate Annotations 연동할 때 필요)
Hibernate Entity Manager xxx : hibernate/hibernate-entitymanager.jar (하이버네이트가 지원하는 JPA 기능 연동할 때 필요)
JBoss Archive Browsing xxx alpha : hibernate/jboss-archive-browsing.jar (Hibernate EntityManager 연동할 때 필요)
iBATIS SQL Maps xxx b677 : ibatis/ibatis-xxx.jar (iBATIS SQL Maps 2.x 연동할 때 필요
JDO API 2.0 : jdo/jdo2-api.jar (JDO 연동할 때 필요)
OpenJPA : openjpa/openjpa-xxx-incubating.jar, openjpa/openjap-xxx.jar (OpenJAP를 사용하여 JPA 연동할 때 필요)
Java Persistence API : jpa/persistence.jar (JPA 연동할 때 필요)
Oracle TopLink Essentials v2 b41 : toplink/toplink-essentials.jar (TopLink를 사용하여 JPA 연동할 때 필요)

[JDBC/트랜잭션 관련]
Java Transaction API : j2ee/jta.jar (JtaTransactionManager를 사용할 때 필요)
JDBC RowSet Implementations xxx : j2ee/rowset.jar (JDK1.5 미만 버전에서 RowSet 지원을 사용할 때 필요)
JOTM xxx : jotm/jotm.jar (JotmFactoryBean을 사용할 때 필요)

[커넥션 풀 관련]
C3P0 xxx connection pool : c3p0/c3p0-xxx.jar (C3P0NativeJdbcExtractor를 사용할 때 필요)
Commons DBCP xxx : jakarta-commons/commons-dbcp.jar (CommonsDbcpNativeJdbcExtractor를 사용할 때 필요)
XAPool xxx : jotm/xapool.jar (XAPoolNativeJdbcExtractor를 사용할 때 필요)

[스케줄링 관련 외부 라이브러리]
CommonJ, TimerManager and WorkManager API : commonj/commonj-twm.jar (CommonJ 사용할 때 필요)
Quartz xxx : quartz/quartz-all-xxx.jar (Quartz 사용할 때 필요)

[엔터프라이즈 서비스]
JavaBeans Activation Framework : j2ee/activation.jar (JavaMailSender 사용할 때 필요)
Enterprise JavaBeans API : j2ee/ejb.jar (EJB 연동할 때 필요)
JAX-RPC API : j2ee/jaxrpc.jar (JAX-RPC 연동할 때 필요)
Java Message Service API : j2ee/jms.jar (JMS 연동할 때 필요)
JavaMail : j2ee/mail.jar (JavaMailSender 사용할 때 필요)

[테스트 관련]
JUnit : junit/junit.jar, junit/junit-xxx.jar (JUnit xxx)

[그밖에]
ANTLR xxx : antlr/antlr-xxx.jar (하이버네이트3 사용할 때 필요)
EHCache xxx : ehcache/ehcache-xxx.jar (EHCache 연동할 때 필요)
BeanShell xxx : bsh/bsh-xxx.jar (BeanShell 연동할 때 필요)
DOM4J : dom4j/dom4j-xxx.jar, dom4j/jaxen-xx-beta-7.jar (DOM4J 파서, 하이버네이트 사용할 때 필요)
Groovy 1.0 final : groovy/groovy-1.0.jar (Groovy 연동할 때 필요)
Hessian/Burlap xxx : caucho/hessian-xxx.jar (Hessian/Burlap 연동할 때 필요)
Commons Bean Utils : jakarta-commons/commons-beanutils.jar (DBCP에서 필요)
Commons Collections xxx : jakarata-commons/commons-collections.jar (DBCP 및 하이버네이트를 사용할 때 필요. JDK1.4 미만에서 스프링 코어에 있는 linked/identity 맵을 사용할 때 필요)
Commons Digester xxx : jakarata-commons/commons-digester.jar (스트럿츠 1 연동할 때 필요)
Commons HttpClientxxx : jakarta-commons/commons-httpclient.jar (CommonsHttpInvokerRequestExecutor를 사용할 때 필요)
Commons IO xxx : jakarta-commons/commons-io.jar (CommonsHttpMultipartResolver를 사용할 때 필요- Commons File Upload에서 의존하는 라이브러리)
Commons Lang xxx : jakarta-commonsn/commons-lang.jar (스프링의 OpenJPA 지원을 사용할 때, OpenJPA가 런타임에 필요)
Commons Pool xxx : jakarta-commons/commons-pool.jar (DBCP 사용할 때 필요)
Commons Validator xxx : jakarta-commons/commons-validator.jar (스트럿츠 1 연동할 때 필요)
JAMon API(Java Application Monitor) : jamon/jamon-xxx.jar (스프링의 JamonPerformanceMonitorInterceptor를 사용할 때 런타임에 필요)
JasperReports : jasperreports/jasperreports-xxx.jar (스프링의 JasperReports를 사용할 때 런타임에 필요)
JRuby : jruby/jruby.jar (스프링의 JRuby 지원을 사용할 때 런타임에 필요)
Serp xxx : serp/serp-xxx.jar (OpenJPA를 사용하여 JPA 연동할 때 필요)
JSR-250 Common 어노테이션 : j2ee/common-annotations.jar (자바 1.6 이전 버전에서 스프링의 JSR 250 어노테이션 지원 사용할 때 필요)

기타 jstl 사용법 :

http://www.informit.com/articles/article.aspx?p=30946&seqNum=7

http://theeye.pe.kr/entry/simple-example-of-using-jstl-core-tag-library

http://blog.naver.com/PostView.nhn?blogId=chunjae_02&logNo=120128796132

http://blog.naver.com/PostView.nhn?blogId=ggolkaq&logNo=70128506708

http://slog2.egloos.com/3581446

http://pds17.egloos.com/pds/201002/12/66/JSTL-Reference-11.pdf



EL 내 경로 : ${pageContext.request.requestURI}

반응형

댓글

Designed by JB FACTORY