$ { 표현식 || 값 }
Expression Language
표현 언어
사용 시 isELIgnored = false 설정 필요
표현식보다 편리한 출력
변수, 다양한 연산자 포함 가능
JSP 내장 객체 속성, 자바 빈 속성 출력 가능
자체 내장 객체 제공
bool, 정수, 실수, 문자열, null
+, =, *, div(/), mod(%)
eq(==), ne(!=), lt(<), le(<=), gt(>), ge(>=), and(&&), or(||), not(!)
empty, 삼항연산자
숫자형문자열 + 숫자 = 숫자
null + 숫자 = 숫자
문자열 + 문자열: ERROR
pro14/WebContent/elTest.jsp
기본 연산자
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"
isELIgnored="false" %> <%-- 표현언어 활성화 --%>
<html>
<head>
<meta charset="UTF-8">
<title>표현 언어에서 사용되는 데이터들</title>
</head>
<body>
<h1>표현 언어로 여러 가지 데이터 출력하기</h1>
<h1>
\${100}: ${100}<br>
\${"안녕하세요"}: ${"안녕하세요"}<br>
\${10+1}: ${10+1}<br>
\${"10"+1} : ${"10"+1 }<br> <!-- 11 -->
\${null+10 }: ${null+10 }<br> <!-- 10 -->
<%-- \${"안녕"+11 }: ${"안녕"+11 }<br> --%> <!-- error -->
<%-- \${"hello"+"world"}:${"hello"+"world"}<br> --%> <!-- error -->
</h1>
</body>
</html>
pro14/WebContent/elTest.jsp
empty 연산자
<%@ page language="java" contentType="text/html; charset=UTF-8" import="java.util.*" pageEncoding="UTF-8" isELIgnored="false" %>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean" scope="page" />
<jsp:setProperty name="m1" property="name" value="이순신"/><%-- m1값 설정 --%>
<jsp:useBean id="m2" class="java.util.ArrayList" scope="page" />
<%-- m2값 미설정 --%>
<html>
<head>
<meta charset="UTF-8">
<title>표현 언어의 여러 가지 연산자들</title>
</head>
<body>
empty 연산자
<h2>
\${empty m1 } : ${empty m1 } <br>
\${not empty m1 } : ${not empty m1 } <br><br> <!-- false -->
\${empty m2 } : ${empty m2 } <br>
\${not empty m2} : ${not empty m2 } <br><br> <!-- true -->
\${empty "hello"} : ${empty "hello"}<br> <!-- false -->
\${empty null} : ${empty null} <br> <!-- true -->
\${empty ""} : ${empty ""} <br> <!-- true -->
</h2>
</body>
</html>
표현 언어에서 사용가능한 내장 객체
JSP 기본 제공 내장 객체는 표현식에서만 사용 가능
pageScope
requestScope
sessionScope
applicationScope
param: 단일 요청 매개변수 처리
paramValues: 복수 요청 매개변수 처리
getParameter() 사용없이 param 내장객체만으로 출력 가능
header: 요청 헤더 이름 정보 반환
headerValues: 요청 헤더 이름 정보 배열 반환
Cookies: 쿠키 이름 값 반환
pageContext
initParam
page > request > session > application
pro14/WebContent/test01/memberForm.jsp
<%@ page language="java" contentType="text/html; charset = UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
</head>
<body>
<form method="post" action="member.jsp">
<h1 style="text-align:center">회원 가입창</h1>
<table align="center">
<tr>
<td width="200"><p align="right">아이디</td>
<td width="400"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200"><p align="right">비밀번호</td>
<td width="400"><input type="password" name="pwd"></td>
</tr>
<tr>
<td width="200"><p align="right">이름</td>
<td width="400"><p><input type="text" name="name"></td>
</tr>
<tr>
<td width="200"><p align="right">이메일</td>
<td width="400"><p><input type="text" name="email"></td>
</tr>
<tr>
<td width="200"><p> </p></td>
<td width="400"><input type="submit" value="가입하기"><input type="reset" value="다시입력"></td>
</tr>
</table>
</form>
</body>
</html>
pro14/WebContent/test01/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("id");
String pwd=request.getParameter("pwd");
String name= request.getParameter("name");
String email= request.getParameter("email");
%>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table border="1" align="center" >
<tr align="center" bgcolor="#99ccff">
<td width="20%"><b>아이디</b></td>
<td width="20%"><b>비밀번호</b></td>
<td width="20%" ><b>이름</b></td>
<td width="20%"><b>이메일</b></td>
</tr>
<!-- 표현식 -->
<tr align=center>
<td><%=id %></td>
<td><%=pwd%></td>
<td><%=name %></td>
<td><%=email %></td>
</tr>
<!-- 표현 언어 -->
<tr align=center>
<td>${param.id }</td>
<td>${param.pwd }</td>
<td>${param.name }</td>
<td>${param.email }</td>
</tr>
</table>
</body>
</html>
pro14/WebContent/test01/memberForm.jsp
<%@ page language="java" contentType="text/html; charset = UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입창</title>
</head>
<body>
<form method="post" action="forward.jsp">
<h1 style="text-align:center">회원 가입창</h1>
<table align="center">
<tr>
<td width="200"><p align="right">아이디</td>
<td width="400"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200"><p align="right">비밀번호</td>
<td width="400"><input type="password" name="pwd"></td>
</tr>
<tr>
<td width="200"><p align="right">이름</td>
<td width="400"><p><input type="text" name="name"></td>
</tr>
<tr>
<td width="200"><p align="right">이메일</td>
<td width="400"><p><input type="text" name="email"></td>
</tr>
<tr>
<td width="200"><p> </p></td>
<td width="400"><input type="submit" value="가입하기"><input type="reset" value="다시입력"></td>
</tr>
</table>
</form>
</body>
</html>
pro14/WebContent/test01/forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%
request.setCharacterEncoding("utf-8");
request.setAttribute("address","서울시 강남구"); //주소 바인딩
%>
<html>
<head>
<meta charset="UTF-8">
<title>포워드</title>
</head>
<body>
<jsp:forward page="member.jsp"></jsp:forward> <!-- 포워딩 -->
</body>
</html>
pro14/WebContent/test01/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%
request.setCharacterEncoding("UTF-8");
String id=request.getParameter("id");
String pwd=request.getParameter("pwd");
String name= request.getParameter("name");
String email= request.getParameter("email");
%>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table border="1" align="center" >
<tr align="center" bgcolor="#99ccff">
<td width="20%"><b>아이디</b></td>
<td width="20%"><b>비밀번호</b></td>
<td width="20%" ><b>이름</b></td>
<td width="20%"><b>이메일</b></td>
</tr>
<tr align=center>
<td>${param.id }</td>
<td>${param.pwd }</td>
<td>${param.name }</td>
<td>${param.email }</td>
<td>${requestScope.address}</td> <!-- 바인딩된 정보 -->
</tr>
</table>
</body>
</html>
pro14/WebContent/test01/login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<form action="result.jsp">
아이디 : <input type="text" size=20 /><br>
비밀번호: <input type="password" size=20 /><br>
<input type="submit" value="로그인" /> <input type="reset" value="다시입력" />
</form>
<br><br>
<!-- 방법 1 -->
<a href="http://localhost:8090/pro14/test01/memberForm.jsp">sign up</a> <!-- 컨텍스트 이름 직접 입력 -->
<!-- 방법 2 -->
<a href="<%=request.getContextPath() %>/test01/memberForm.jsp">sign up</a> <%-- 표현식 getContextPath 사용 --%>
<!-- 방법 3 -->
<a href="${pageContext.request.contextPath}/test01/memberForm.jsp">sign up</a> <%-- 표현 언어 pageContext 사용 --%>
</body>
${bean 이름: 속성 이름}
pro14/WebContent/test01/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<% request.setCharacterEncoding("UTF-8"); %>
<%-- bean 생성 및 속성 값 설정 --%>
<jsp:useBean id="m" class="sec01.ex01.MemberBean" />
<jsp:setProperty name="m" property="*" />
<meta charset="UTF-8">
<html>
<head>
<title>회원 정보 출력창</title>
</head>
<body>
<table align="center" border="1">
<tr align="center" bgcolor="#99ccff">
<td width="20%"><b>아이디</b></td>
<td width="20%"><b>비밀번호</b></td>
<td width="20%"><b>이름</b></td>
<td width="20%"><b>이메일</b></td>
</tr>
<!-- bean 속성 접근 및 출력 -->
<tr align="center">
<td>${m.id}</td>
<td>${m.pwd}</td>
<td>${m.name}</td>
<td>${m.email}</td>
</tr>
</table>
</body>
</html>
<!-- 스크립트 요소: 표현식 -->
<tr align="center">
<td><%= bean.getId() %></td>
<td><%= bean.getPwd() %></td>
<td><%= bean.getName() %></td>
<td><%= bean.getEmail() %></td>
<td><%= bean.getJoinDate() %></td>
</tr>
<!-- 액션 태그: getProperty -->
<tr align="center">
<td><jsp:getProperty name="m" property="id" /></td>
<td><jsp:getProperty name="m" property="pwd" /></td>
<td><jsp:getProperty name="m" property="name" /></td>
<td><jsp:getProperty name="m" property="email" /></td>
</tr>
<!-- 표현 언어 -->
<tr align="center">
<td>${m.id}</td>
<td>${m.pwd}</td>
<td>${m.name}</td>
<td>${m.email}</td>
</tr>
${Collection 객체 이름 [index].속성이름 }
표현 언어로 컬렉션 객체 접근
pro14/WebContent/test01/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<% request.setCharacterEncoding("UTF-8"); %>
<!-- ArrayList -->
<%-- ArrayList 생성 --%>
<jsp:useBean id="membersList" class="java.util.ArrayList" />
<%-- bean1 생성 및 member1 정보 저장 --%>
<jsp:useBean id="m1" class="sec01.ex01.MemberBean" />
<jsp:setProperty name="m1" property="*" />
<%-- bean2 생성 및 member2 정보 저장 --%>
<% MemberBean m2 = new MemberBean("son", "1234", "손흥민", "son@test.com"); %>
<%-- ArrayList에 bean1, bean2 저장 --%>
<% membersList.add(m1); membersList.add(m2); %>
<!-- HashMap -->
<%-- HashMap 생성 --%>
<jsp:useBean id="membersMap" class="java.util.HashMap" />
<%-- HashMap에 member3 정보 저장 --%>
<% membersMap.put("id", "park2");
membersMap.put("pwd", "4321");
membersMap.put("name", ",박지성");
membersMap.put("email", "park2@test.com"); %>
<%-- HashMap에 membersList 저장 --%>
<% membersMap.put("membersList", membersList); %>
<html>
<head>
<title>회원 정보 출력창</title>
</head>
<body>
<table align="center" border="1">
<tr align="center" bgcolor="#99ccff">
<td width="20%"><b>아이디</b></td>
<td width="20%"><b>비밀번호</b></td>
<td width="20%"><b>이름</b></td>
<td width="20%"><b>이메일</b></td>
</tr>
<!-- ArrayList(1) 출력 -->
<tr align="center">
<td>${membersList[0].id}</td>
<td>${membersList[0].pwd}</td>
<td>${membersList[0].name}</td>
<td>${membersList[0].email}</td>
</tr>
<!-- ArrayList(2) 출력 -->
<tr align="center">
<td>${membersList[1].id}</td>
<td>${membersList[1].pwd}</td>
<td>${membersList[1].name}</td>
<td>${membersList[1].email}</td>
</tr>
<!-- membersMap(1) 출력 -->
<tr align="center">
<td>${membersMap.id}</td>
<td>${membersMap.pwd}</td>
<td>${membersMap.name}</td>
<td>${membersMap.email }</td>
</tr>
<!-- membersMap(2[0]) 출력 -->
<tr align="center">
<td>${membersMap.membersList[0].id}</td>
<td>${membersMap.membersList[0].pwd}</td>
<td>${membersMap.membersList[0].name}</td>
<td>${membersMap.membersList[0].email}</td>
</tr>
<!-- membersMap(2[1]) 출력 -->
<tr align="center">
<td>${membersMap.membersList[1].id}</td>
<td>${membersMap.membersList[1].pwd}</td>
<td>${membersMap.membersList[1].name}</td>
<td>${membersMap.membersList[1].email}</td>
</tr>
</table>
</body>
</html>
${parrent.child.attribute}
속성으로 다른 javaBean을 갖는 경우
pro14/src/sec01/ex02/MemberBean.java
package sec01.ex02;
...
public class MemberBean {
private String id;
private String pwd;
private String name;
private String email;
private Date joinDate;
private Address addr; //다른 javaBean 클래스 타입의 속성
public MemberBean() { }
... // getter/setter
}
pro14/src/sec01/ex02/Address.java
public class Address {
private String city;
private String zipcode;
public Address() { }
... // getter/setter
}
pro14/WebContent/test01/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<% request.setCharacterEncoding("UTF-8"); %>
<%-- AddressBean 생성 --%>
<jsp:useBean id="addr" class="sec01.ex02.Address"/>
<jsp:setProperty name="addr" property="city" value="서울"/>
<jsp:setProperty name="addr" property="zipcode" value="07654"/>
<%-- MemberBean 생성 --%>
<jsp:useBean id="m" class="sec01.ex02.MemberBean" />
<jsp:setProperty name="m" property="*" />
<% m.setAddr(addr); /*MemberBean 속성에 AddressBean 설정*/ %>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table border=1 align="center" >
<tr align="center" bgcolor="#99ccff" >
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="5%"><b>이름</b></td>
<td width="5%"><b>이메일</b></td>
<td width="5%"><b>도시</b></td>
<td width="5%"><b>우편번호</b></td>
</tr>
<tr align="center">
<td>${m.id}</td>
<td>${m.pwd}</td>
<td>${m.name}</td>
<td>${m.email}</td>
<!-- 표현식 이용 -->
<td><%=m.getAddr().getCity() %></td>
<td><%=m.getAddr().getZipcode() %></td>
</tr>
<tr align="center">
<td>${m.id} </td>
<td>${m.pwd} </td>
<td>${m.name} </td>
<td>${m.email}</td>
<!-- 표현 언어 이용 -->
<td>${m.addr.city}</td>
<td>${m.addr.zipcode}</td>
</tr>
</table>
</body>
</html>
pro14/WebContent/test02/forward.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
// 1, 회원 정보 직접 전달
request.setAttribute("id","hong");
request.setAttribute("pwd", "1234");
session.setAttribute("name", "홍길동");
application.setAttribute("email", "hong@test.com");
// 2, Bean 안에 정보 넣어서 전달
MemberBean member = new MemberBean("lee", "1234", "이순신", "lee@test.com");
request.setAttribute("member", member);
//3, ArrayList 안에 Bean를 넣어서 전달
List membersList = new ArrayList();
MemberBean m1 = new MemberBean("lee", "1234", "이순신", "lee@test.com");
MemberBean m2 = new MemberBean("son", "1234", "손흥민", "son@test.com");
membersList.add(m1);
membersList.add(m2);
request.setAttribute("membersList", membersList);
%>
<html>
<head>
<meta charset="UTF-8">
<title>forward2</title>
</head>
<body>
<jsp:forward page="member.jsp" />
</html>
pro14/WebContent/test02/member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false" %>
<%
request.setCharacterEncoding("UTF-8");
String id= (String)request.getAttribute("id");
String pwd= (String)request.getAttribute("pwd");
String name= (String)session.getAttribute("name");
String email= (String)application.getAttribute("email");
%>
<html>
<head>
<meta charset="UTF-8">
<title>회원 정보 출력창</title>
</head>
<body>
<table border="1" align="center" >
<tr align="center" bgcolor="#99ccff">
<td width="20%"><b>아이디</b></td>
<td width="20%"><b>비밀번호</b></td>
<td width="20%" ><b>이름</b></td>
<td width="20%"><b>이메일</b></td>
</tr>
<!-- 1, 표현식 -->
<tr align="center">
<td><%=id %></td>
<td><%=pwd%></td>
<td><%=name %></td>
<td><%=email %></td>
</tr>
<!-- 1, 표현언어 -->
<tr align="center">
<td>${id}</td>
<td>${pwd}</td>
<td>${name}</td>
<td>${email}</td>
<!-- 2 -->
<tr align="center">
<td>${member.id}</td>
<td>${member.pwd}</td>
<td>${member.name}</td>
<td>${member.email}</td>
</tr>
<!-- 3 -->
<tr align="center">
<td>${membersList[0].id}</td>
<td>${membersList[0].pwd}</td>
<td>${membersList[0].name}</td>
<td>${membersList[0].email}</td>
</tr>
<!-- 3 -->
<tr align="center">
<td>${membersList[1].id}</td>
<td>${membersList[1].pwd}</td>
<td>${membersList[1].name}</td>
<td>${membersList[1].email}</td>
</tr>
</table>
</body>
</html>
*자바 웹을 다루는 기술