IT/JSP

JSP/JSTL <c:import> 사용 Servlet으로 값 보내기

미녀개발자 2018. 7. 2. 12:43
반응형
위에는 jstl 종류랑 설명이 있으니 
c:import 예제만 보려면 맨 하단 <c:import, c:param 적용예제> 를 참고하세요.

JSTL core
 
- JSTL 에서 기본적인 기능들을 구현해 놓은 라이브러리.
- 자바 코드를 사용하지 않아도 쉽게 기본 기능을 구현할 수 있다.
- JSP 페이지에 태그 라이브러리로 등록을 해야한다.
등록하는 방법은
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core %>
prefix 의 c 는 태그를 사용할 때 항상 붙는 접두어(ex. <c:out>)
uri 는 core 라이브러리가 존재하는 위치
 
JSTL core 라이브러리에 있는 태그
종류
- 출력태그 : <c:out>
- 변수 설정 및 삭제 태그 : <c:set>,<c:remove>
- 예외 처리 태그 : <c:catch>
- 조건 처리 태그 : <c:if>, <c:choose>, <c:when>, <c:otherwise>
- 반복 처리 태그 : <c:forEach>, <c:forTokens>
- 페이지 처리 태그 : <c:import>, <c:redirect>, <c:url>, <c:param>
 
설명
<c:out>
- 지정된 값을 출력시키는 태그.
 
<c:out value="출력값" default="기본값" escapeXml="true 또는 false">
value 속성을 이용해서 변수의 내용을 출력할 수 있다.
value 값이 null 일 경우 dafault 속성의 값을 기본 값으로 사용하게 된다.
escapeXml 은 기본값으로 false 로 지정되어 있으며 <, > 등의 특수 기호의 출력 형태를 설정할 때 쓴다. True 일 경우 < 는 &lt; 로 표현되고, > 는 $gt; 로 표현된다.
 
<c:set>
- 지정된 변수에 값을 입력하는 태그
 
<c:set var="변수명" value="설정값" target="객체" property="값" scope="범위">
var 는 값을 저장할 변수이고
value 는 저장할 값이다.
target 은 값을 설정할 프로퍼티에 대한 객체,
property 는 값을 설정할 객체의 프로퍼티를 의미
scope 는 변수의 유효범위, 설정하지 않으면 기본값으로 page 를 갖는다.
 
<c:remove>
- 설정된 속성을 제거하는 태그
 
<c:remove var="변수명" scope="범위">
var 은 설정된 속성이 저장되어 있는 변수
scope 는 지정된 범위에세 저장된 속성을 찾는다.
 
<c:catch>
- 예외 처리를 위한 태그
 
<c:catch var="변수명">
예외가 발생하면 var에 지정된 변수에 오류 내용을 입력한다.
 
<c:if>
- 조건 처리를 할때 쓰이는 태그, java의 if와 동일한 기능
 
<c:if test="조건" var="변수명" scope="범위">
test 조건을 지정한다.
var 조건 처리한 결과를 저장한다.
scope는 var 속성에 지정한 변수의 범위를 의미한다.
 
<c:choose>
- 조건 처리를 할 때 쓰이는 태그, java 의 switch 와 동일한 기능
 
<c:choose>
   <c:when test="조건"></c:when>
   <c:otherwise></c:otherwise>
</c:choose>
test 속성으로 조건을 확인하여 만족하면 <c:when>과 </c:when> 사이의 내용을 처리한다.
( <c:when> 태그는 조건에 따라 여러개가 사용될 수 있다.)
모든 조건에 만족하지 않을 경우 <c:otherwise>과 </c:otherwise> 사이의 내용을 처리한다.
 
<c:forEach>
- 자바의 for 문과 동일한 기능
 
<c:forEach items="객체명" begin="시작 인덱스" end="끝 인덱스" step="증감식"
  var="변수명" varStatus="상태변수">
items 속성에 인덱스가 존재하는 객체를 지정하여 객체의 인덱스만큼 반복할 수 있다.
begin과 end 속성으로 원하는 범위만큼 반복문을 수행한다.
step 증감식 설정
var 은 현재 반복하고 있는 값을 기억하는 변수
varStatus 는 반복의 상태를 갖게 되는 변수
 
<c:forTokens>
- 자바의 for 문과 StringTokenizer 객체를 결합하였다고 볼 수 있다.
 
<c:forTokens items="객체명" delims="구분자" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수">
items에 지정한 값을 delims 속성의 구분자로 나눈 후 나눠진만큼 반복수행.
items, delims, var 이 3가지 속성만으로도 수행가능.
begin, end 는 delims 구분자로 나눠진 값들을 기준으로 시작 값과 끝 값을 정해준다.
 
<c:import>
- 지정된 URL을 태그가 사용된 JSP 페이지에 출력시키는 기능
 
<c:import url="URL값" var="변수명" scope="범위" varReader="변수명"
  context="context명" charEncoding="인코딩값">
url 속성에는 http뿐만 아니라 FTP 외부 리소스도 올 수 있다.
var 은 리소스가 저장될 변수명
scope 는 var 속성의 범위
varReader 는 var 속성과 마찬가지로 리소스가 저장될 Reader 객체 변수
context 는 URL에 접근할 대 컨텍스트 이름
charEncoding 는 URL 의 리소스를 가져올 때 인코딩 방법
 
<c:redirect>
- 지정된 URL 페이지로 이동시키는 기능을 한다.
 
<c:redirect url="URL값" context = "contextName">
url 은 이동할 URL 을 입력한다.
context 는 컨텍스트 이름을 입력하지만,
보통은 url 속성만 입력한다.
 
<c:url>
- url 을 생성하는 기능을 한다.
 
<c:url var="변수명" scope="범위" value="값" context="contextName">
value 속성에 지정된 값으로 URL을 생성한다.
scope 는 var 속성에 입력되어 있는 변수의 범위를 의미
 
<c:param>
- <c:import> 태그에 파라미터를 전달하기 위한 태그
 
<c:param name="파라미터명" value="값">
name 속성에 파라미터 명을 입력하고,
value 에 값을 입력하여 전달

c:import, c:param 적용 예제

test.jsp 파일
<c:import url="/exam1.jsp">
   <c:param name="src1" value="www.naver.com" />
   <c:param name="src2" value="www.daum.net" />
</c:import>

exam1.jsp 파일
<a href="${param.src1}"> 네이버 바로가기 </a>
<a href="${param.src2}"> 다음 바로가기 </a>


*servlet으로 보내려면 <c:import url="test/testUrl.do"> 와 같이 컨드롤러에 RequestMapping 되어있는 url로 적어주면 되며 Param 으로 보낸 값은 @RequestParam String src1 와 같이 매핑시켜주면 된다.
 
예제)
TestController.java
@RequestMapping("test/testUrl.do") 
public String urlList(@RequestParam String src1 , @RequestParam String src2, Model model) throws Exception { 

    model.addAttribute("src1", src1 ); 
    model.addAttribute("src2", src2 ); 

return programUrl + "/exam1.jsp"; 
}
test.jsp
<c:import url="/exam1.jsp">
   <c:param name="src1" value="www.naver.com" />
   <c:param name="src2" value="www.daum.net" />
</c:import>

exam1.jsp 
<a href="${src1}"> 네이버 바로가기 </a>
<a href="${src2}"> 다음 바로가기 </a>


반응형