Java Spring Boot - JSTL/WAR

3 분 소요

Java Bean Component

— 규칙

  1. 기본생성자
  2. private 멤버변수
  3. public setter() : 이름 규칙 반드시 준수해야함
  4. public getter() : 이름 규칙 반드시 준수해야함

Version History:

— JSTL 1.2.5

JSTL & EL

JSP : <%= pageContext.getAttribute(“notice”).getWriter() %> EL : ${notice.writer} == ${notice[wirter]} JSTL :

EL : Expression Language

— JSP 2.0 EL 포함 (JSP 1.2 에서는 JSTL 에 포함됨)

— JSP 페이지를 쉽게 작성 가능, java code 대체, 재사용 가능

  1. 기술방법 : ${ expr }

  2. 연산자 지원 : 산술, 비교, 논리, 공백 연산자 제공

    • 산술연산자:

      +, -, *

      /, div

      %, mod

    • 비교연산자:

      ==, eq

      !=, ne

      <, lt

      > , gt

      <=, le

      > =, ge

    • 논리연산자:

      &&, and

      ||, or

      !, not

    • 공백연산자:

      null, not empty, !empty

  3. 키워드 (식별자로 사용못함)

    • and
    • eq
    • gt
    • true
    • instanceof
    • or
    • ne
    • le
    • false
    • empty
    • no
    • lt
    • ge
    • null
    • div
  4. default 객체: 서블릿/JSP 값들을 쉽게 접근하기 위해서 제공된 객체들

    pageContext    : PageContext 객체
       		
    pageScope    : page scope에 포함된 객체들
    requestScope    : request scope에 포함된 객체들 => ${requestScope.dto.userid}
    sessionScope    : session scope에 포함된 객체들	=> ${sessionScope.memberId}
    applicationScope    : application scope에 포함된 객체들
       		
    param    : HTTP parameters  
    	    => request.getParameter("userid")
    	    => ${param.userid}	
    paramValues    : parameter의 values
    	    => String[] params = request.getParameterValues("hobby")
    	    => ${paramValues.hobby}	
    header    : HTTP 헤더 정보
    headerValues    : 헤더의 values
    cookie    : 쿠키들
    initParam    : 컨텍스트의 초기화 parmeters, web.xml
       
    // default 사용예:
    ${pageContext.request.requestURI}	// 요청 uri
    ${requestScope.msg}					// request scope에서 저장된 msg 이름으로 저장된 객체 <jsp:getProperty name="aa" property="msg" scope="request" />
    ${param.userid}						// userid 라는 이름의 파라메터값
    ==> request.getParameter("userid")
    

JSTL : Java Standard Tag Library »

  • JSP 코드안의 java 코드 제거가 가능함
  • 재사용 가능한 컴포넌트임
  • Dynamic Contents를 작성 가능함
  • 구성요소 = JSP + 태크 라이브러리 + [web.xml] + TagHandler 클래스

JSTL libary : jstl.jar , standard.jar

  • c:\tomcat\lib 폴더에 복사하고 tomcat 재구동(서버 레벨)
  • 컨텍스트의 WEB-INF\lib 폴더에 복사한다. (컨텍스트 레벨)

JSP 페이지에 JSTL을 사용하기 위해서 taglib 지시어 기술

<%@ taglib prefix="c" uri="<http://java.sun.com/jsp/jstl/core>" %>
<%@ taglib prefix="fn" uri="<http://java.sun.com/jsp/jstl/functions>" %>
<%@ taglib prefix="fmt" uri="<http://java.sun.com/jsp/jstl/fmt>" %>
<%@ taglib prefix="sql" uri="<http://java.sun.com/jsp/jstl/sql>" %>
<%@ taglib prefix="x" uri="<http://java.sun.com/jsp/jstl/xml>" %>

Core Library

  • 수식, 제어흐름, URL 처리등 JSP에서의 기본적 기능 제공 라이브러리

수식언어 지원

  • <out> :

    • JspWriter 통해서 수식 결과 출력

    • <c:out value=”${param.name}” default=”Guest” />

      ⇒ <%= request.getParameter(“name”) %>

  • <set> :

    • 변수에 값을 설정 시킴
    • <c:set var=”변수명” value=”설정값” scope=”[page]|request|session|application” />
    • <c:set var=”msg” value=”Hello JSTL” />
    • <c:out value=”${msg}” />
  • <remove> :

    • scope에 저장된 변수 삭제시킴
    • <c:remove var=”삭제변수명” scope=”page|request|session|application” />
  • <catch> : 예외처리

제어흐름

  • <if>

    • 조건이 참인 경우에 수행 (else 부분은 기술할 수 없음)
    <c:if test="테스트조건"
    	var="테스트조건실행결과저장변수"
    	scope="page|request|session|application" />
      
    <c:if test="${!empty param.name}">
    	이름: ${param.name}
    	<br>
    </c:if>
      
    <c:if test="${empty param.name}">
    	이름: Guest(손님)
    	<br>
    </c:if>
    
  • <choose>~<when>~<otherwise>

    • 다중 조건 비교 수행, switch~case~default 와 유사
    <c:choose>
    	<c:when test="${param.type == 1}"><c:out value="10분간 쉽니다"/></c:when>
    	<c:when test="${param.type == 2}"><c:out value="20분간 쉽니다"/></c:when>
    	<c:otherwise><c:out value="오늘 수업을 마치겠습니다." /></c:otherwise>
    </c:choose>
    
  • <forEach>

    • count, item에 의한 반복 수행
    // count에 의한 반복 수행 : jdk1.4 반복횟수 지정
    <c:forEach var="no" begin="1" end="10" step="1">
    	<c:out value="${no}" />
    </c:forEach>
      
    // item들에 의한 반복 수행 : Collection, Array jdk1.5 크기만큼
    // jdk1.5 for(타입 변수명 : collection참조변수명)
    <c:forEach var="item에대한참조변수명" items="${collection참조변수명}">
    	<c:out value="${item에대한참조변수명.멤버이름}" />
    </c:forEach>
      
    <c:forEach var="h" items="${header}">
    	<li>
    	<c:out value="${h.key}"/> :
    	<c:out value="${h.value}" />
    </c:forEach>
      
    <!-- 주의사항 : JavaBean Component 규칙 준수해야함 dto.num ==> dto.getNum() -->
    <c:forEach var="vo" items="${requestScope.array}">
      <tr align=center>
    		<TD width=5% bgcolor=#eeeeee>${dto.num}</TD>
    		<TD width=15% bgcolor=#eeeeee>
    			<a href="main?action=VIEW&num=${num}">${dto.name}</a>
    		</TD>
    		<TD width=%10 bgcolor=#eeeeee>${dto.address}</TD>
    	</tr>
    </c:forEach>
      
    <c:forEach var="vo" items="${requestScope.array}">
      <tr align=center>
    		<TD width=5% bgcolor=#eeeeee>
    			<input type="text" name="num" value="${dto.num}" readonly >
    			&nbsp;[읽기전용]
    		</TD>
    		<TD width=15% bgcolor=#eeeeee>
    		  <input type="text" name="name" value="${dto.name}">
    		</TD>
    		<TD width=%10 bgcolor=#eeeeee>
    			<input type="text" name="address" value="${dto.address}">
    		</TD>
      </tr>
    </c:forEach>
    
  • <forTokens>

URL 관리

  • <import>
  • <param>
  • <redirect>
  • <url>

JSTL Sample code:

  1. WEB-INF\lib> 폴더에 tag lib copy : jstl-xx.jar

  2. jsp 페이지에 지시어태그로 설정

    <%@ taglib prefix=”c” url=”http://java.sun.com/jsp/jstl/core” %>

  3. jsp 페이지에서 jstl 태그사용

    <지정한prefix명:jslt태그명 속성명="속성값" />

WAR

— 웹 어플리케이션 아카이브파일

  • 서버에 배포하기위한 deploy) 컨텍스트이름.war 배포파일
  • jdk\bin> jar.exe (.class 등 압축파일)
  • 확장자 :
    • *.jar (라이브러리 클래스묶음, 어플리케이션 실행가능한 파일)
    • *.war (웹어플리케이션 배포파일)
    • *.ear (EJB 어플리케이션 배포파일)
  • 실행
    • dos> jar cvfM …
    • eclipse> export
  • war 배포 폴더 위치 :
    • C:\apache-tomcat-8.5.63\webapps> 컨텍스트이름.war
    • tomcat 서버 구동시에 자동으로 “컨텍스트이름.war” 압축 해제 설치

댓글남기기