JSP 태그
HTML 기반의 JSP 코드 내에 JAVA 코드를 삽입할 수 있게 해주는 태그
* jsp에서 java클래스 import하기
<%@ page import="member.Member" %> // 이런식으로 하면된다. ->"패키지이름 . 클래스이름"
JSP는 HTML 기반으로 되어 있기 때문에 JAVA 코드를 넣어서 동작시키려면 JSP 태그 사이에 삽입해야 합니다.
HTML, CSS, Javascript 등으로 클라이언트단에서 보여지고 동작할 뼈대를 만든 후
JSP 태그로 JAVA 코드를 넣어 특정 로직을 수행할 수 있도록 합니다.
JSP는 서블릿으로 변환된 후
사용자에게는 HTML 형태의 코드만 전송하므로 JSP 태그의 내용은 사용자에게 노출되지 않습니다.
구분 | JSP 태그 | 용도 |
지시자 | <%@ %> | 페이지 속성 지정 |
주석 | <%-- --%> | 주석 처리 |
선언 | <%! %> | 변수, 메소드의 선언 |
표현식 | <%= %> | 결과값 출력 |
스크립트릿 | <% %> | JAVA 코드 삽입 |
액션태그 | <jsp:action> </jsp:action> | 페이지 삽입, 공유, 자바빈 사용 등 |
JSP에서 Include
include 지시어는 특정한 JSP파일 또는 HTML 파일을 해당 JSP 페이지에 삽입할 수 있도록 하는 기능을 한다.
여러 JSP페이지에서 공통되는 부분이 많을 때 이러한 공통되는 부분을 따로 파일로 만들어 include지시어로 삽입하면 매번 같은 내용을 입력하지 않고도 간단하게 공통되는 부분을 포함시킬 수 있다. 또한 include지시어는 중첩 사용이 가능하기 때문에 include되는 파일 안에서 또 다른 파일을 include하여도 문제없이 동작한다.
include 2가지 방식
1. include directive(지시어)
2. include action(액션)
공통점:
동일하게 파일을 불러와서 사용을 하는 점
차이점:
지시어는 해당 소스를 포함시킨 후에 컴파일을 하지만
액션은 실행시점에서 해당 파일을 수행하여 결과를 포함시킨다.
include는 주로 조각난 코드를 삽입을 하고자 할때 사용되고,
<jsp:include> 액션 태그는 페이지를 모듈화할때 사용됩니다.
즉 템플릿 페이지를 작성할때 사용됩니다.
include 지시어 사용 방법
*<%@ include file=""%>
정적인 특성을 가지는 디렉티브이다.
이 방식은 컴파일 과정을 거쳐서 그 결과가 해당 JSP페이지에 포함되는 것이 아니라 JSP소스 코드 자체가 해당 JSP페이지에 복사되어 더해지므로 서블릿 컴파일 과정은 incliude되는 파일의 개수가 아무리 많다고 하더라도 단 한 번만 이루어지게 된다.
<%@ include file="/WEB-INF/views/include/header.jsp" %>
<%@ include file="/WEB-INF/views/include/footer.jsp" %>
가져올 파일의 경로를 넣어 다른 파일을 가져와 현재 파일에 뿌려준다.
include 지시어는 다른 JSP의 소스 코드를 해당 JSP에 그대로 포함시킵니다.
include 액션 사용 방법
*<jsp:include page="" flush=""/>
동적인 특성을 가지는 액션태그이다.
컴파일하여 대상으로 지정된 JSP에게 흐름을 넘기는 방식이기 때문에 매번 서비스 할때마다 원하는 JSP페이지를 호출할 수 있다. 다음과 같이 대상 페이지 경로를 표현식을 이용하여 넘길 수 있으며 매번 서비스 할때마다 조건에 따라서 대상 JSP경로를 다르게 지정하여 사용할 수 있다.
액션 태그의 <jsp:include> 태그는 다른 JSP의 소스 코드가 아니라,
다른 JSP의 실행 결과값을 해당 JSP 페이지에 포함시킵니다.
<jsp:include> 태그의 flush 속성은
포함될 페이지로 이동할 때 현재 페이지가 지금까지 출력 버퍼에 저장할 결과를 어떻게 처리할 것인가를 결정하는 것으로, flush 속성의 값을 'true'로 지정하면 포함할 페이지의 내용을 삽입하기 이전에 현재 페이지가 지금까지
버퍼에 저장한 내용을 출력하게 됩니다.
<jsp:include>태그에서는 flush 속성의 값을 'false'로 지정하는 것이 일반적입니다.
만일 flush 속성의 값을 'true'로 지정하게 되면 일단 출력 버퍼의 내용을 웹 브라우저에 전송하게 되는데 이때 헤더 정보도 같이 전송됩니다. 일단 헤더 정보가 웹 브라우저에 전송이 되고 나면 헤더 정보를 추가해도 결과가 반영
되지 않습니다. 그래서 <★jsp:include> 태그에서는 flush 속성의 값을 'false'로 지정합니다.
<jsp:include page="/WEB-INF/views/include/header.jsp"/>
<jsp:include page="/WEB-INF/views/include/footer.jsp"/>
<% String targetPage = "/included.jsp"; %>
<jsp:include page="<%= targetPage %>" flush="false"/>
include 액션 일부 사용 방법
<jsp:include page="/WEB-INF/views/include/footer.jsp">
<jsp:param name="email" value="sesok808@naver.com" />
<jsp:param name="tel" value="010-1234-5678" />
</jsp:include>
태그 라이브러리 선언 taglib
자바에서 import문을 선언하듯 JSP에서도 JSTL 확장 태그를 사용하려면 taglib 지시자로 라이버리를 선언해야 한다.
JSP 지시자 태그 <%@ taglib %>를 사용해서 다음과 같이 선언한다.
<%@ taglib prefix="접두사" uri="URI" %>
uri : 태그 라이브러리의 네임 스페이스 URI 식별자
prefix : JSTL 태그를 사용할때 태그 이름 앞에 붙일 접두사
다음은 태그 라이브러리 별 표준 선언문이다.
태그 라이브러리 | 선언문 |
Core | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
XML | <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> |
I18N | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
Database | <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> |
Functions | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
prefix를 꼭 저렇게 지정해야하는건 아니지만 JSTL에서 제안하는 표준 접두사이므로 똑같이 사용하는게 좋다.
태그 라이브러리 별 태그 정리
태그 라이브러리 | 기능 | 태그 - 부모태그(자식태그) |
Core(기본) | 변수 | remove, set |
흐름 제어 | choose(when, otherwise) forEach forTokens if |
|
URL 관리 | import(param) redirect(param) url(param) |
|
기타 | catch, out | |
XML | 기본 | out, parse, set |
흐름 제어 | choose(when, otherwise) forEach if |
|
변환 | transform(param) | |
I18N(국제화) | 로케일 | setLocale, requestEncoding |
메시지 포맷 | bundle message(param) setBundle |
|
Database | 데이터 소스 설정 | setDataSource |
SQL | query(dateParam, param) transaction update(dateParam, param) |
|
Functions(기타 함수) | 집합의 원소 개수 | length |
문자열 처리 | toUpperCase toLowerCase substring substringAfter substringBefore trim replace indexOf startsWith endsWith contains containsIgnoreCase split join escapeXml |
c:url 태그
c:url 태그는 url을 생성해주는 기능을 할 수 있습니다. 하지만 그냥 생성해주는 것이 아니라 contextPath를 자동으로 붙여주고 url을 생성하는 것이기 때문에 서버에 올려서 contextPath가 달라져도 url을 수정할 필요가 없어집니다.
사용법
<c:url var="변수이름" value="url경로" var="변수명" scope="영역"/>
사용법은 위와 같고 var, scope 속성은 생략이 가능합니다. var 속성을 입력하지 않으면 c:url 태그는 value 속성에 입력한 경로를 나타냅니다. var 속성을 지정하면 변수에 해당 url을 저장해 사용할 수 있습니다.
예시
<c:url value="/example/jsp/view.jsp" var="name"/>
위 태그에 따르면 name 변수에 example/jsp/view.jsp 경로가 문자열로 저장됩니다.
파라미터를 전달할 경우
<c:url value="http://localhost:8080/test">
<c:param name="name" value="value"/>
</c:url>
위와 같이 url에 전달할 파라미터를 c:param 태그를 이용하여 지정할 수도 있습니다. 따라서 url의 형태는 http://localhost:8080/test?name=value 가 됩니다.
'STUDY > SpringLegacy' 카테고리의 다른 글
[JSP] JSP란? JSP와 서블릿의 차이점 (0) | 2022.12.25 |
---|---|
[SPRING] 프로젝트 폴더 구조 분석 (0) | 2022.12.21 |
[Spring] 답변형 게시판 만드는 방법 (2) | 2022.09.22 |
[Spring] 페이징 처리와 검색 기능 생성 이해하기 (0) | 2022.09.21 |
[Spring] JOIN table 생성과 설명 이미지 (0) | 2022.09.21 |