//OtherImplicitObj.jsp, 4장에서 배운cookieManager사용
<%@ page import="com.util.CookieManager" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
CookieManager.makeCookie(response, "ELCookie", "EL좋아요", 10);
%>
<html>
<head>
<title>표현언어 그 외 내장 객체</title>
</head>
<body>
<h3>쿠키값 읽기</h3>
<li>ELCookie값 : ${ cookie.ELCookie.value }</li>
<h3>HTTP 헤더 읽기</h3>
<ul>
<li>host : ${header.host}</li>
<li>user-agent : ${header['user-agent']}</li>
<li>cookie : ${header.cookie}</li>
</ul>
<h3>컨텍스트 초기화 매개 변수 읽기</h3>
<li>OracleDriver : ${ initParam.OracleDriver }</li>
<h3>컨텍스트 루트 경로 읽기</h3>
<li> ${ pageContext.request.contextPath}</li>
</body>
</html>

경로 설정이 달라서 우리는 보이지 않는다.
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page import="com.common.Person" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>표현언어 - 컬렉션</title>
</head>
<body>
<h2>List 컬렉션</h2>
<%
List<Object> aList = new ArrayList<Object>();
aList.add("청해진");
aList.add(new Person("장보고", 28));
pageContext.setAttribute("Ocean", aList);
%>
<ul>
<li>0번째 요소 : ${ Ocean[0] }</li>
<li>1번째 요소 : ${ Ocean[1].name }, ${ Ocean[1].age }</li>
<li>2번째 요소 : ${ Ocean[2] } <!--출력되지않음--></li>
</ul>
<h2>Map 컬렉션</h2>
<%
Map<String, String> map = new HashMap<String, String>();
map.put("한글", "훈민정음");
map.put("Eng", "English");
pageContext.setAttribute("King", map);
%>
<ul>
<li>영문 Key : ${ King ["Eng"] }, ${ King['Eng'] }, ${ King.Eng }</li>
<li>한글 Key : ${ King ["한글"] }, ${ King['한글'] }, \${ King.한글 }<!--에러가 난다--></li>
</ul>
</body>
</html>
//${ King.한글 }는 오류가 난다! 한글은 잘 쓰지않는게 일반적이다.

//메소드를 만들어주자 MyElClass.java
package com.el;
public class MyElClass {
//주민번호를 입력받아 성별을 반환합니다.
public String getGender(String jumin) {
String returnStr = "";
int beginIdx = jumin.indexOf("-") + 1;
String genderStr = jumin.substring(beginIdx, beginIdx + 1);
int genderInt = Integer.parseInt(genderStr);
if (genderInt == 1 || genderInt == 3) {
returnStr = "남자";
} else if (genderInt == 2 || genderInt == 4) {
returnStr = "여자";
} else {
returnStr = "주민번호 오류입니다.";
}return returnStr;
}
//입력받은 문자열이 숫자인지 판별해줍니다.
public static boolean isNumber(String value){
char[] chArr = value.toCharArray();
for (int i = 0; i < chArr.length; i++) {
if(!(chArr[i]>='0' && chArr[i] <='9')){
return false;
}
}
return true;
}
//입력받은 정수까지의 구구단을 HTML 테이블로 출력
public static String showGugudan(int limitDan){
StringBuffer sb = new StringBuffer();
try{
sb.append("<table border='1'>");
for (int i = 0; i < limitDan; i++) {
sb.append("<tr>");
for (int j = 0; j < 9; j++) {
sb.append("<td>" + i + "*" + j + "=" + (i * j) + "</td>");
}
sb.append("</tr>");
}
sb.append("</table>");
}catch (Exception e){
e.printStackTrace();
}
return sb.toString();
}
}
//ElCallMethod.jsp
<%@ page import="com.el.MyElClass" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
MyElClass myClass = new MyElClass(); //객체 생성
pageContext.setAttribute("myClass", myClass); //page영역에 저장
%>
<html>
<head>
<title>표현 언어 메서드 호출</title>
</head>
<body>
<h3>영역에 저장 후 메서드 호출하기</h3>
001225-3000000 => ${ myClass.getGender("0012225-3000000") }<br/>
001225-2000000 => ${ myClass.getGender("0012225-2000000") }<br/>
<h3>클래스명을 통해 정적 메서드 호출하기</h3>
${ MyElClass.showGugudan(7)}
</body>
</html>
EL은 영역에 저장된 값을 가져오는 기법이므로 호출하려면 먼저 객체를 만들어 영역에 저장해야한다. 그러고 나면 저장된 속성명을 통해 메서드를 호출할 수 있다.
