EL(Expression Language) ํ๊ทธ
์ฌ์ฉ ๋ชฉ์ : front end์์ Java๋ฅผ ์ฌ์ฉํ์ง ์๊ธฐ ์ํจ
ELํ๊ทธ ํ์
--> ${๊ฐ or ์ฐ์ฐ์}
์คํฌ๋ฆฝํ๋ฆฟ๊ณผ EL ํ๊ทธ์ ๋น๊ต
<%
String str = "hello";
request.setAttribute("_str", str);
%>
<%
String s = (String)(request.getAttribute("_str"));
%>
<%-- Java๋ก ์ ๊ทผ 1 --%>
<%
out.println("s = " +s);
%>
<br><br>
<%-- Java๋ก ์ ๊ทผ 2 --%>
s = <%=s %>
<br><br>
<%-- EL ํ๊ทธ๋ก ์ ๊ทผ --%>
s = ${_str }
- ๋ฌธ์ ์ถ๋ ฅ
<%='๊ฐ' %>
${'๊ฐ' } <%-- ๊ฐ --%>
- ์ฐ์ฐ ๊ฐ๋ฅ
${2+3 } <%-- 5 --%>
- ์ผํญ์ฐ์ฐ์ ๊ฐ๋ฅ
${3>2?100:200 } <%-- 100 --%>
- ์์ฑ๊ฐ(setAttribute)์ ํตํ ๋ฌธ์์ด ์ถ๋ ฅ ๊ฐ๋ฅ
<%
request.setAttribute("data", "์๋
ํ์ธ์");
%>
${data } <%-- ์๋
ํ์ธ์ --%>
- empty, not empty : ํ ๋น๋์ด ์๋์ง (true, false)
Object๊ฐ ํ ๋น๋์ด ์๋์ง?
<%
Object obj = new String("world");
if(obj != null){}
obj = null;
request.setAttribute("_obj", obj);
%>
<%-- empty : null์ธ์ง ์๋์ง true, false ๋ฐํ --%>
obj = ${empty _obj } <%-- obj = true --%>
<%-- empty : ๊ฐ์ด ์๋์ง ์๋์ง true, false ๋ฐํ --%>
obj = ${not empty _obj } <%-- obj = false --%>
- ํ๋ณ์(true/false), ์ฐ์ฐ์(value)
1 < 9 = ${1 < 9 } <%-- 1 < 9 = true --%>
1 + 3 = ${1 + 3 } <%-- 1 + 3 = 4 --%>
<%
Integer a, b;
a = 10;
b = 3;
Boolean c;
c = false;
// ์์ฑ๊ฐ์๋ Object value๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ๋ํผ ํด๋์ค(Wrapper Class)๋ฅผ ์ฌ์ฉํ๋ค.
request.setAttribute("a", a);
request.setAttribute("b", b);
request.setAttribute("c", c);
%>
<%-- a : 10 b : 3 c : false --%>
a : ${a }
b : ${b }
c : ${c }
<%-- a + b : 13 a < b : false --%>
a + b : ${a+b }
a < b : ${a<b }
<%-- c:true --%>
c: ${!c }
<%--true --%>
${a == 10 && !c }
- DTO ์ ๊ทผ ๋ฐฉ๋ฒ
<%
MemberDto dto = new MemberDto();
dto.setMessage("Hello EL");
%>
<%-- message: Hello EL --%>
message: <%=dto.getMessage() %>
<br>
<%
request.setAttribute("_dto", dto);
%>
<%-- message: Hello EL (getMessage๊ฐ ์๋๋ค)--%>
message: ${_dto.message }
- list ์ฌ์ฉ ๋ฐฉ๋ฒ
<%
List<String> list = new ArrayList<>();
list.add("world");
list.add("hello");
request.setAttribute("_list", list);
%>
<%-- world --%>
<%=list.get(0) %>
<br>
<%-- world (๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉ)--%>
${_list[0] }
JSTL(Java server page Standard Tag Library)ํ๊ทธ
์ ์ด๋ฌธ + EL ํ๊ทธ
- jstl ์ฌ์ฉ๋ฒ
์๋จ์ ์๋ ํ๊ทธ ์ถ๊ฐ
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
lib ํด๋์ ํ์ผ 2๊ฐ ์ถ๊ฐ
jstl.jar standard.jar
<c:set>ํ๊ทธ : ๋ณ์์ ๊ฐ์ ์ ์ฅ
<c:set var="_data" value="core tag + el ์
๋๋ค" />
<c:out>ํ๊ทธ : ์ถ๋ ฅ๋ฌธ์ ๋ง๋ ๋ค. ELํ๊ทธ์ ๊ฐ์ด ์ฐ์ธ๋ค.
<c:out value="${_data }"/>
<c:if>ํ๊ทธ : ์กฐ๊ฑด๋ฌธ
์คํฌ๋ฆฝํ๋ฆฟ if ์กฐ๊ฑด๋ฌธ
<%
request.setAttribute("count", "10");
String scount = (String)(request.getAttribute("count"));
int count = Integer.parseInt(scount);
if(count >= 10) {
%>
<p>count : <%=count %></p>
<%
}
%>
JSTL ์กฐ๊ฑด๋ฌธ
<c:if test="${count >= 10 }">
<p>core count : <c:out value="${count }"/></p>
</c:if>
<%
request.setAttribute("name", "ํ๊ธธ๋");
%>
<c:if test="${name == 'ํ๊ธธ๋' }">
<p>'name' ์์ฑ๊ฐ์ 'ํ๊ธธ๋' ์
๋๋ค.</p>
</c:if>
<c:choose>ํ๊ทธ : else if ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ์ฉํ๋ค.
์์ชฝ์ <c:when>ํ๊ทธ์ ์กฐ๊ฑด์ ๊ฑธ๊ณ , else๋ถ๋ถ์ <c:otherwise>๋ก ๋๋ธ๋ค.
<c:choose>
<c:when test="${memID.equals(getId) }">
<button type="button" class="btn btn-secondary" onclick="answerbbs('<%=bbs.getSeq() %>')">๋ต๊ธ</button>
<input type="button" class="btn btn-secondary" value="๊ธ์ญ์ " onclick="deletePage()">
<input type="button" class="btn btn-secondary" value="๊ธ์์ " onclick="updatePage()">
<input type="button" class="btn btn-secondary" value="๊ธ๋ชฉ๋ก" onclick="goList()">
</c:when>
<c:otherwise>
<button type="button" class="btn btn-secondary" onclick="answerbbs('<%=bbs.getSeq() %>')">๋ต๊ธ</button>
<input type="button" class="btn btn-secondary" value="๊ธ๋ชฉ๋ก" onclick="goList()">
</c:otherwise>
</c:choose>
<c:forEach>ํ๊ทธ : ๋ฐ๋ณต๋ฌธ
<c:forEach begin="0" end="9" step="1" varStatus="i">
<c:out value="${i.index }"/>
</c:forEach>
์คํฌ๋ฆฝํ๋ฆฟ๊ณผ ๋น๊ต
<%
List<MemberDto> list = new ArrayList<>();
MemberDto m = new MemberDto();
m.setMessage("hello");
list.add(m);
m = new MemberDto();
m.setMessage("world");
list.add(m);
request.setAttribute("_list", list);
%>
<c:forEach begin="0" end="1" items="${_list }" var="mem" varStatus="i">
<p>index : <c:out value="${i.index }"/></p>
<p>data : <c:out value="${mem.message }"/></p>
</c:forEach>
JSP action ํ๊ทธ
<jsp:include> : ๋ค๋ฅธ ํ์ด์ง์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ํ์ฌ ํ์ด์ง์ ํฌํจ
<jsp:include page="/NewFile.jsp"></jsp:include>
<jsp:forward> : ํด๋น ํ์ด์ง๋ก ์ด๋
<jsp:forward page="NewFile.jsp"></jsp:forward>
<jsp:useBean> : ์๋ฐ๋น(java bean)์ ํ์ด์ง์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค
<jsp:useBean id="dto" class="dto.MemberDto"></jsp:useBean>
<jsp:setProperty> : Property ๊ฐ์ ์ธํ ํ ๋ ์ฌ์ฉ
<jsp:setProperty property="message" name="dto" value="์๋
ํ์ธ์"/>
<jsp:getProperty> : Property ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ
<jsp:getProperty property="message" name="dto"/>
ELํ๊ทธ๋ฅผ ํตํด ๋ฐ๋ก ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
msg:${dto.message } <!-- ์๋
ํ์ธ์ -->
์์ (BbsList.jsp์์ ArrowDto.java๋ฅผ ํตํด ๋๋๊ธ ํ์ดํ ๊ฐ์ ธ์ค๊ฒ ํ๊ธฐ)
<c:forEach items="${List }" var="bbs" varStatus="i" >
<tr>
<th>${i.index + 1}</th>
<td>
<!-- arrowํจ์ ์์ฐ๊ณ JSTL ํ๊ทธ๋ก๋ง ํ๋ ๋ฐฉ๋ฒ
<c:if test="${bbs.depth > 0 }">
<c:forEach begin="0" end="${bbs.depth }" step="1">
</c:forEach>
<img src='./image/arrow.png' width='20px' height='20px'/>
</c:if>
-->
<!-- JSP ํ๊ทธ๋ก ํจ์ ํธ์ถ -->
<jsp:useBean id="dto" class="dto.ArrowDto"/>
<jsp:setProperty property="depth" name="dto" value="${bbs.depth }"/>
<jsp:getProperty property="arrow" name="dto"/>
<a class="text-dark" href="bbsdetail.jsp?seq=${bbs.seq }">
${bbs.title }
</a>
<span class="badge badge-danger">new</span>
</td>
<td>${bbs.id }</td>
</tr>
</c:forEach>
package dto;
public class ArrowDto {
int depth;
String arrow;
public void setDepth(int depth) {
this.depth = depth;
}
public String getArrow(){
String rs = "<img src='./image/arrow.png' width='20px' height='20px'/>";
String nbsp = " "; // ์ฌ๋ฐฑ
String ts = "";
for(int i = 0;i < depth; i++){
ts += nbsp;
}
return depth==0 ? "":ts + rs;
}
}
'๐ป ๊ฐ๋ฐ > ๐ TIL (Today I Learned)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
21.04.13 TIL (D+64 MyBatis, Spring) (0) | 2021.04.13 |
---|---|
21.04.12 TIL (D+63 Spring) (0) | 2021.04.12 |
21.03.12 TIL(D+42 ์๋ธ๋ฆฟ Cookie and Session, JSP, Ajax) (0) | 2021.03.12 |
21.03.10(D+40 ์๋ธ๋ฆฟ(Servlet) , WAS) (0) | 2021.03.10 |
21.03.09 TIL(D+39 XML, JSON) (0) | 2021.03.09 |