EL, JSLT

혜쿰·2023년 8월 30일
0

📌 EL

📍 개념

EL은 Expression Language의 약자로 JSP 스크립트의 표현식을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어이다. EL은 출력 및 반복처리를 태그 기반으로 제공한다. JSTL과 함께하면 더욱 효과적이다. pageScope, requestScope, param, ... 등의 내장객체를 지원한다.

jsp 표현식을 대신해 속성 값을 쉽게 출력하기 위한 언어이다.

${표현식}

<%= %>e대신 위와 같이 나타낼 수 있다.

📍 연산자

연산부호연산자
++
**
/div
\&\&and
oror
==eq
!=ne
<ge
>lt
<=ge
>=le

📍 내장객체

📎 종류

객체명설명
${pageScope}한 페이지내에서만 유효함
${reqeustScope}요청할때 마다 생성해서 jsp가 응답함
${sessionScope}세션이 지워지기 전까지 유효함 (보통 30분)
${applicationScope}웹 어플리케이션이 종료될때 까지 유효함
${param}Query String의 이름과 값을 저장하고 있는 map 객체
${paramValues}같은이름으로 전달되는 질의 문자열의 이름과 값을 저장하고 있는 map 객체
${header}요청정보 헤더의 정보들을 이름과 값으로 저장하고 있는 map 객체
${headerValues}요청정보 헤더의 정보들을 이름과 값으로 저장하고 있는 map 객체
${cookie}요청을 보낸 클라이언트의 쿠키 이름과 값을 저장하고 있는 map 객체
${initParam}웹 애플리케이션에 지정한 초기 파라미터의 이름과 값을 저장하고 있는 map 객체

📎 컬렉션 객체 값 처리 작업

<%
ArrayList<String> list = new ArrayList();
list.add("불고기 피자");
list.add("쉬림프 피자");
request.setAttribute("list", list);

ArrayList<String> list2 = new ArrayList();
list2 = (ArrayList)request.getAttribute("list");
out.println("jsp로 표현 : "+list2.get(0));
out.println("jsp로 표현 : "+list2.get(1));
%> 
<br>
EL로 표현 : ${requestScope.list[0]} ${list["1"]} <br> 

EL로 표현하면 JSP보다 간결하게 표현이 가능하다.

📌 JSLT

JavaServer Pages Standard Tag Library의 약자로 JSP 개발을 단순화하기 위한 표준태그 라이브러리이다. 빠른 개발, 코드 재사용성, JSP의 스크립트릿을 최소화해서 코드의 난독을 해결할 수 있다.

📍 태그

JSLT를 사용하기 위해서는 우선 외부라이브러리 지원받아야한다. 구글링해서 다운로드를 받으면 된다.

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

다음으로 위에 taglib을 추가해주어야 한다. core 태그말고도 다른 태그들도 존재한다.

 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> - 숫자 및 날짜 서식
 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> - 함수 관련
 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> - 데이터베이스 관련
 <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" %> - xml 관련

📍 core의 주요 기능

  • <c:set> : 변수 선언, 할당
  • <c:out> : 출력
  • <c:remove> : 변수값 제거
  • <c:if> : else는 쓸 수 없고 if만 사용가능
  • <c:choose>, <c:when>, <c:otherwise> : if-else 문처럼 사용 가능
  • <c:forEach> : 반복문
  • <c:forTokens> : 문자열이나 숫자 등을 delims에 따라 구분해서 반복문처럼 사용 가능

📍 db 연결

📎 db자료(beans로 business logic 수행 후 전통적 방법으로 출력)

<table border="1">
	<tr><th>code</th><th>sang</th><th>su</th><th>dan</th></tr>
	<%
	ArrayList<pack.Test12SangpumDto> list = conndb.getDataAll();
		for(pack.Test12SangpumDto s:list) {
	%>
	<tr>
		<td><%= s.getCode() %></td>
		<td><%= s.getSang() %></td>
		<td><%= s.getSu() %></td>
		<td><%= s.getDan() %></td>
	</tr>
	<%
	}
	%>
</table>
<hr>

📎 db자료(beans로 business logic 수행 후 EL,JSTL으로 출력)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<table border="1">
	<tr><th>code</th><th>sang</th><th>su</th><th>dan</th></tr>
	<% ArrayList<pack.Test12SangpumDto> list2 = conndb.getDataAll();%>
	<c:forEach var="s" items="<%=list2 %>">
	<tr>
		<td>${s.code}</td>
		<td>${s.sang}</td>
		<td>${s.su}</td>
		<td>${s.dan}</td>
	</tr>
	</c:forEach>
</table>
<hr>

📎 EL,JSTL으로 db자료 읽기

<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<c:catch var="err">
	<sql:setDataSource var="ds" driver="org.mariadb.jdbc.Driver" url="jdbc:mariadb://localhost:3306/test" user="root" password="seoho123"/>
	<sql:query var="rs" dataSource="${ds}">
		select * from sangdata where code >= ? and code <= ?
		<sql:param value="1"/>
		<sql:param value="3"/>
	</sql:query>
	<table border="1">
		<tr><th>code</th><th>sang</th><th>su</th><th>dan</th></tr>
		<c:forEach var="r" items="${rs.rows}">
		<tr>
			<td>${r.code}</td>
			<td>${r.sang}</td>
			<td>${r.su}</td>
			<td>${r.dan}</td>
		</tr>
		</c:forEach>
	</table>
</c:catch>

taglib sql을 이용해서 db의 자료를 읽을 수 있다.

	_ 참고 : 처음 해보는 Servlet&JSP 웹 프로그래밍 / https://daesuni.github.io/jstl/_

1개의 댓글

comment-user-thumbnail
2024년 4월 14일

jstl (o) jslt(x)

답글 달기