jsp에서 스크립트 없애기
1. 연산은 서블릿에서 한다
2. 표현식은 el로 대체한다
3. 조건문, 반복문은 jstl로 대체한다
<!-- request 객체의 속성으로 들어간 'myString - abc' -->
<%
request.setAttribute("myString", "abc");
%>
<!-- 스크립트릿과 표현식을 이용하여 값을 가져오는 방식 (기존) -->
<%
String str = (String) request.getAttribute("myString");
%>
<%= str %>
<!-- el을 사용하여 값을 가져오는 방식 -->
${ requestScope.myString }
${ requestScope.myString }
${ myString }
속성명.멤버변수명
or 속성명[멤버변수명]
형태로 멤버변수 값까지 가져올 수 있음 (getter의 역할!) ${ myString.myValue }
${ myString["myValue"] }
obj.a
(dot notation) 방식과obj[“a”]
(bracket) 방식의 차이
후자는 속성명 자리에 문자열을 참조하는 참조변수명을 넣을 수 있다 (“a”를 의미하는 문자열 strObj를 그 저리에 넣을 수 있는 것)
(자바스크립트의 경우는 그렇다는 거라 el에서는 그렇지 않을 수도… 있지만 맞을듯)
${ pageContext.request.contextPath }
${ 4 < 3 }
${ list[2] }
${ map["aKey"] }
empty
: null이거나 size가 0인 경우 truenot empty
: empty의 반대empty 배열은 길이가 0이어도 false
(배열은 고정길이므로, 길이가 0인 배열이 나타날 일이 없어서 확인을 안한다. 는 가설.)
remind💦
jsp는 view 역할만 수행!!!!!!!!!!!!!!!!!
get해서 값 보여주는 역할!!!!!!!!!!!!!!!!!!!!
WEB-INF > lib
에 .jar
파일 넣고<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
입력 <c:set var="num" value="100" scope="request" />
<!-- 속성을 넣는 역할 (거의 안씀) -->
${ num }
<c:remove var="num" scope="request" />
<!-- 속성을 없애는 역할 (거의 안씀) -->
${ num }
<c:set var="num" value="100" scope="request" />
<!-- 속성을 넣는 역할 (거의 안씀) -->
${ num }
<c:remove var="num" scope="request" />
<!-- 속성을 없애는 역할 (거의 안씀) -->
${ num }
<hr/>
<c:if test="${ 4 > 0 }">
true
</c:if>
<!-- if문 역할, 하지만 else, else if가 불가능 -->
<c:choose>
<c:when test="${ myValue > 10 }">
10보다 크다
</c:when>
<c:when test="${ myValue > 5 }">
5보다 크다
</c:when>
<c:otherwise>
5 이하이다
</c:otherwise>
</c:choose>
<!-- if문처럼 else, else if를 따질 수 있다. 일반적으로 조건문을 설정할 때 사용한다. -->
<hr/>
<c:forEach var="i" begin="0" end="10" step="3">
${ i }
</c:forEach>
<!-- 일반적 for문 대체. 0에서 10까지 1씩 증가한다. -->
<hr/>
<%
ArrayList<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
request.setAttribute("list", list);
%>
<c:forEach items="${ list }" var="myString" varStatus="status">
${ status.count }번째 반복 : ${ myString } -> ${ status.index }
<br/>
</c:forEach>
<!-- forEach문 대체. items=복수데이터, var=원소 하나를 부르는 이름, status=반복문 정보(index, count반복횟수)를 가짐 -->