JSP에서 저장 객체를 출력할 때 Scripting 을 전혀 사용하지 않을 수 있는 것
<%= value %> → EL ${value}
EL은 jsp의 내장 객체에 접근할 수 있음
EL은 내장 객체(request와 response)의 값을 가져오는 기능을 편리하게 사용 가능
화면에 쉽게 표현하기 위해 사용하는 언어
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
String name = request.getParameter("name");
String nick = request.getParameter("nick");
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>
# Scripting<br>
# 이름 : <%= name %> <br>
# 별명 : <%= nick %> <br>
</p>
<hr>
<%--
EL에서 데이터를 참조할 때 영역을 명시하지 않는다면
page -> request -> session -> application
순서대로 검색하여 찾아내서 표현
--%>
<p>
# EL(Expression Language)<br>
# 이름 : ${param.name}<br>
# 별명 : ${param.nick}<br>
</p>
<%
session.setAttribute("data1", "hello");
application.setAttribute("data2", "bye~");
session.setAttribute("data2", "이름은 같지만 다른 데이터");
%>
<a href = "EL_result.jsp">세션,어플리케이션 데이터를 화면에 출력</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>
# Scripting <br>
# data1 : <%= session.getAttribute("data1") %><br>
# data2 : <%= application.getAttribute("data2") %><br>
</p>
<hr>
<p>
# EL <br>
# data1 : ${data1 }<br>
# data2(application) : ${applicationScope.data2 }<br>
# data2(session) : ${sessionScope.data2 }<br>
<%-- EL은 내장객체에 동일한 이름을 알아서 찾아줌 --%>
<%-- 특별히 명세하고 싶을 때 : 내장객체이름Scope.이름 --%>
</p>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p>
# Scripting <br>
# data1 : <%= session.getAttribute("data1") %><br>
# data2 : <%= application.getAttribute("data2") %><br>
</p>
<hr>
<p>
# EL <br>
# data1 : ${data1 }<br>
# data2(application) : ${applicationScope.data2 }<br>
# data2(session) : ${sessionScope.data2 }<br>
<%-- EL은 내장객체에 동일한 이름을 알아서 찾아줌 --%>
<%-- 특별히 명세하고 싶을 때 : 내장객체이름Scope.이름 --%>
</p>
</body>
</html>
<%@page import="kr.com.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
UserVO vo = (UserVO) session.getAttribute("member");
// member라는 이름의 UserVO객체를 가져옴
%>
<p>
# 이름 : <%= vo.getUser_name() %> <br>
# 아이디 : <%= vo.getUser_id() %> <br>
# 이메일 : <%= vo.getUser_email() %> <br>
# 주소 : <%= vo.getUser_address() %>
</p>
<hr>
<p>
# 이름 : ${sessionScope.member.user_name} <br>
# 아이디 : ${member.user_id }<br>
# 이메일 : ${member.user_email }<br>
# 주소 : ${member.user_address }<br>
<%-- getname이 아니고 user_name을 써야함
--%>
</p>
</body>
</html>
단일 조건문
http://localhost:8181/MyWeb/JSTL/jstl_if.jsp?age=15 하면 값을 지정가능
JSTL을 사용하기 위해서 외부 태그 라이브러리 선언해야 JSTL 사용 가능
<c:set ~~~>을 통해 값 선언 가능
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- c:set을 사용하게 되면 변수 선언 가능
JSTL로 변수를 선언하면 EL안에서 활용가능
값도 EL을 이용해서 매겨줄 수 있음
EL이 타입을 자동으로 인식해서 정해줌
내장 객체를 지정할 수도 있음
그냥 setAttribute랑 같다고 생각하면 될 듯? --%>
<c:set var="age" value ="${param.age}" />
<%-- c:set을 이용해서 지정한 변수는 scriptlet의 자바 변수와는 다르고
내장객체에 지정하는 데이터로 활용되기 때문에 EL이 가능 --%>
<p>
나이 : ${age }세 <br>
<%-- http://localhost:8181/MyWeb/JSTL/jstl_if.jsp?age=15을 통해 값 화면에 출력 가능 --%>
<%-- 조건문 활용 --%>
<c:if test="${age >= 20}">
<h2>당신은 성인입니다.</h2>
</c:if>
</p>
</body>
</html>
다중 조건문
choose 태그 안에서는 when 태그를 무제한으로 작성할 수 있음
http://localhost:8181/MyWeb/JSTL/jstl_choose.jsp?age=1을 통해서 값을 받아서 화면 출력 가능
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="age" value = "${param.age }" />
# 이름 : ${param.name }<br>
# 나이 : ${age }<br>
<c:choose>
<c:when test="${age >= 20 }">
<c:choose>
<c:when test="${age >= 40 }">
<h3>장년층 입니다.</h3>
</c:when>
<c:otherwise>
<h3>청년층 입니다.</h3>
</c:otherwise>
</c:choose>
</c:when>
<c:when test="${age >= 17 }">
<h3>당신은 고등학생입니다.</h3>
</c:when>
<c:when test="${age >= 14 }">
<h3>당신은 중학생입니다.</h3>
</c:when>
<c:when test="${age >= 8 }">
<h3>당신은 초등학생입니다.</h3>
</c:when>
<c:otherwise>
<h3>당신은 완전 애기입니다.</h3>
</c:otherwise>
</c:choose>
<%-- http://localhost:8181/MyWeb/JSTL/jstl_choose.jsp?age=1 --%>
</body>
</html>
forEach 구문을 통해서 반복문 수행 가능
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%-- <%
int total = 0;
for (int i = 1; i<= 100; i++ ){
total += i;
}
out.print("<h4>1부터 100까지의 누적합 : "+ total + "<br>" );
%> --%>
<c:set var = "total" value = "0" />
<%-- 변수 선언 --%>
<c:forEach var = "i" begin ="1" end = "100" step = "1">
<c:set var = "total" value = "${total + i }"/>
</c:forEach>
<h4>1부터 100까지의 누적합 : ${total }</h4>
<hr>
<h4>구구단 4단</h4>
<c:forEach var = "hang" begin = "1" end = "9">
4 X ${hang } = ${4*hang }<br>
</c:forEach>
<hr>
짝수 단 출력 <br>
<hr>
<c:forEach var = "front" begin = "2" end = "9" step = "2">
<c:forEach var = "back" begin = "1" end = "9" >
${front } x ${back } = ${front * back }<br>
</c:forEach>
${'-------------------------------------------'}<br>
</c:forEach>
<h2>배열이나 컬렉션 내부의 값을 출력</h2>
<c:set var = "arr" value="<%=new int[] {1, 3, 5, 7, 9} %>"/>
<c:forEach var = "n" items = "${arr }">
<%-- 배열은 items를 통해서 값 출력 --%>
${n }
</c:forEach>
</body>
</html>