위의 방식이 아닌 방법을 통해 서버 구동시 서블렛이 제대로 작동되지 않아서 원하는 결과가 출력되지 않을 수 있다.
servlet을 타고 jsp파일로 넘어오는 것이다.
el구문은 영역객체 안에 있는 속성에 접근해서 값을 가져온다.
스크립트릿에 선언된 변수는 가져올 수 없다.
그러므로 page scope에 저장해서 가져와야 브라우저에 출력할 수 있다.
pageContext.setAttribute("str1", str1);
pageContext를 사용해서 그냥 출력하려면 object 타입은 비교, 더하기 연산이 불가능하다.
따라서 형변환 후 출력해야 한다.
그런데 el구문을 사용하면 자동 형변환되기 때문에 직접 형변환 코드를 사용하지 않고도 결과값을 출력할 수 있다.
4교시
null체크할 때는 두 가지 방법이 있다.
1) null이 맞는지만 체크하는 동등연산자를 쓰는 방법
EL : ${ str3 == null }
2) empty키워드 사용
null인지 체크 + 값이 있는지도 체크
EL :${ empty str3 }
2. JSP 액션 태그
- JSP 페이지에서 자바 코드를 직접 입력하지 않고 특정 작업을 수행하는데 사용하는 태그이다.
- 액션 태그의 경우 웹 브라우저에서 실행되는 것이 아니라 웹 컨테이너에서 실행된다.
표준 액션 태그 커스텀 액션 태그 사용법 JSP 페이지에서 바로 사용
태그 앞에 jsp 접두어가 붙음별도의 라이브러리 설치 필요
라이브러리 선언에 맞는 접두어가 붙음사용
예시<jsp:include page="../sample.jsp"/> <c:set var="count" value="0"/>
3. 표준 액션 태그
- JSP에서 기본으로 제공하는 액션 태그로 별도의 라이브러리 설치 없이 바로 사용할 수 있다.
jsp:include 현재 페이지에 특정 페이지를 포함할 때 사용(include지시자와 비슷하지만 작동방식은 조금 다르다.) jsp:forward 현재 페이지 접근 시 특정 페이지로 이동 (pageContext.forward()와 동일) jsp:param <jsp:include>, <jsp:forward>의 하위 요소로 사용되며 해당 페이지에 전달할 값을 기록할 때 사용
5교시
* 액션 태그2개 실습
3.1. jsp:include 액션 태그
- include 액션 태그는 다른 페이지를 포함 시킬 때 사용하는 액션 태그이다.
- include 지시자와 다르게 include 액션 태그는 런타임 시에 포함된다.
<jsp:include page="포함할 페이지" />
3.2. jsp:forward 액션 태그
- forward 액션 태그는 다른 페이지로 요청을 전달할 때 사용하는 액션 태그이다.
- 요청을 전달하는 페이지에서 request, response 객체가 함께 전달되며 URL은 변경되지 않는다.
<jsp:forward page="이동할 페이지" />
6교시
4. JSTL(JSP Standard Tag Library)
- JSP Standard Tag Library의 약자로 JSP에서 사용하는 커스텀 태그이다.
- JSP 페이지에서 자주 사용하는 코드들을 사용하기 쉽게 태그로 만들어 표준으로 제공한다.
- 개발자가 자주 사용하는 코드를 태그 라이브러리로 만든 것이다.
4.1. JSTL 라이브러리 등록
- 톰캣 사이트(https://tomcat.apache.org/ JSTL 라이브러리를 다운로드한다.
- 웹 프로젝트의 lib 폴더에 다운로드한 JSTL 라이브러리를 드래그앤 드랍해서 넣는다.
- JSTL 라이브러리는 JSP 페이지에서 taglib 지시자로 선언해야 사용이 가능하다.
-
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
4.2. JSTL 태그 종류
Core Tags | 변수와 url, 조건문, 반복문 등의 로직과 관련된 JSTL 액션태그를 제공한다. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
Formatting Tags | 메시지 형식이나 숫자, 날짜 형식과 관련된 포맷 방식 제공 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> |
Function | trim, substring과 같은 여러 문자열 처리 함수 제공 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> |
XMLTags | 데이터의 XML 파싱 처리 등 XML 문서를 화면으로 읽어오는데 필요한 라이브러리 <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%> |
SQLTags | 페이지 내에서 Database를 연동하고 필요한 쿼리를 실행할 수 있는 라이브러리 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%> |
옅은 회색 표시한 것은 실습 안 함.
5. JSTL Core Tags
5.1 c:set 태그
- 변수를 선언하고 초기 값을 대입하는 태그이다.
- 변수의 자료형은 별도로 선언하지 않지만 초기 값은 반드시 기술해야 한다.
- 영역객체에 접근하는 것이어서 선언된 변수는 EL 구문에서 사용이 가능하다. 별도의 영역이 지정되지 않으면 page영역에 저장된다.
-
<c:set var="num" value="100" /> ${num}
- scope 속성은 변수가 저장된 영역을 지정한다. (기본값은 page)
<c:set var="num" value="100" scope="request" />
- <c:set> ~ </c:set> 사이에 ","를 이용해서 배열이나 Collection처럼 여러 개의 값 지정할 수 있다.
<c:set var="array" scope="request"> yellow, blue, pink, red, green </c:set>
7교시
5.2 c:remove 태그(일반적으로 c로 지정을 많이 해서 c로 설정해둔 예의 경우)
- c:set 태그로 선언한 변수를 삭제할 때 사용하는 태그이다.
- scope 속성을 지정하지 않으면 page, request, session, application 영역에 저장되어 있는 속성을 모두 찾아 제거한다.
<c:remove var="num1" scope="request">
5.3. c:out 태그
- 클라이언트로 데이터 출력할 때 사용하는 태그이다.
<c:out value="<h2>데이터 출력</h2>" escapeXml="false"/> <c:out value="<h2>데이터 출력</h2>" escapeXml="true"/>
이렇게만 자주 쓰고 다른건 자주 쓰지 않는다.
c:if 태그
- 자바의 if 구문과 같은 역할을 하는 태그이다.
- 조건식은 test 속성에 EL 구문으로 기술해야 한다.
- 조건식의 결과가 참일 때 <c:if> ~ </c:if> 사이에 있는 내용을 처리한다.
<c:if test="${num1 > num2}"> ... </c:if>
5.5. c:choose 태그
- 자바의 switch 구문과 같은 역할을 하는 태그이다.
- 하위 태그인 <c:when>, <c:otherwise> 태그와 함께 사용되는데, 각각 switch 구문의 case, default 절과 비슷한 역할을 한다.
<c:choose> <c:when test="${num == 0}"> ... </c:when> <c:when test="${num == 1}"> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose>
5.6. c:forEach 태그
- 자바의 for 구문에 해당하는 역할을 하는 태그이다.
-
<c:forEach begin="1" end="10" items="${list}" var="value"> ... </c:forEach>
- 속성
items 반복할 객체 명(Collection 객체) begin 반복이 시작할 요소 번호 end 반복이 끝나는 요소 번호 step 반복할 횟수 번호 var 현재 반복 횟수에 해당하는 변수 이름 varStatus 현재 반복에 해당하는 객체 요소
5.7. c:forTokens 태그
- 문자열에 포함된 구분자를 통해 토큰을 분리해 반복을 수행하는 태그이다.
<c:forTokens var="color" items="yellow blue pink red green" delims=" "> ${color} </c:forTokens>
5.8. c:url 태그
- URL을 생성하고 쿼리 스트링을 미리 설정하는 태그이다.
<c:url var="url" value="jstl.jsp"> <c:param name="name" value="abc"/> </c:url> <a href="${url}">jstl.jsp</a>
'Back > web' 카테고리의 다른 글
생활코딩WEB2_js 데이터타입, 변수, 대입 연산자 (0) | 2023.03.04 |
---|---|
2023.02.09_1~8교시 (0) | 2023.02.09 |
JSP_20230203_1~4교시 (0) | 2023.02.05 |
서블릿생명주기,GET,POST방식(enc)20230202_5~8교시 (0) | 2023.02.02 |
웹 프로젝트 생성 (0) | 2023.02.02 |