Java Spring Boot - JSTL/WAR
Java Bean Component
— 규칙
- 기본생성자
- private 멤버변수
- public setter() : 이름 규칙 반드시 준수해야함
- 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 대체, 재사용 가능
-
기술방법 : ${ expr }
-
연산자 지원 : 산술, 비교, 논리, 공백 연산자 제공
-
산술연산자:
+, -, *
/, div
%, mod
-
비교연산자:
==, eq
!=, ne
<, lt
> , gt
<=, le
> =, ge
-
논리연산자:
&&, and
||, or
!, not
-
공백연산자:
null, not empty, !empty
-
-
키워드 (식별자로 사용못함)
- and
- eq
- gt
- true
- instanceof
- or
- ne
- le
- false
- empty
- no
- lt
- ge
- null
- div
-
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 > [읽기전용] </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:
-
WEB-INF\lib> 폴더에 tag lib copy : jstl-xx.jar
-
jsp 페이지에 지시어태그로 설정
<%@ taglib prefix=”c” url=”http://java.sun.com/jsp/jstl/core” %>
-
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” 압축 해제 설치
댓글남기기