7월 12일
el2
mvc > src > main > webapp> el)
name_map.jsp
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Map<String, String> nameMap=new HashMap<>();
nameMap.put("first.name", "홍");
nameMap.put("second.name", "길동");
request.setAttribute("nameMap", nameMap);
request.getRequestDispatcher("name_map_el.jsp").forward(request, response);
%>
name_map_el.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL - Map</h1>
<hr>
<%-- 스코프 객체의 속성값이 Map 객체인 경우 맵키를 사용하여 맵값을 제공받아 출력 처리 --%>
<%-- => EL 표현식으로 사용하기 부적절한 문자가 포함된 맵키인 경우 . 연산자로 맵값을 제공받아 출력 불가능 --%>
<%-- <p>이름 = ${nameMap.first.name } ${nameMap.second.name }</p> --%>
<%-- 스코프 객체의 속성값이 Map 객체인 경우 EL 표현식으로 사용하기 부적절한 문자가 포함된
맵키는 EL 표현식에서 . 연산자 대신 [] 연산자를 사용하여 맵값을 제공받아 출력 처리 가능 --%>
<p>이름 = ${nameMap["first.name"] } ${nameMap["second.name"] }</p>
</body>
</html>
mvc > src > main > webapp> el)
string_array .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String[] nameArray={"홍길동","임꺽정","전우치","일지매","장길산"};
request.setAttribute("nameArray", nameArray);
request.getRequestDispatcher("string_array_el.jsp").forward(request, response);
%>
string_array_el .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL - Array</h1>
<hr>
<%-- <p>${nameArray }</p> --%>
<ul>
<%-- 스코프 객체의 속성값이 배열인 경우 배열 요소값을 제공받아 출력하기 위해 첨자 사용 --%>
<%-- => EL 표현식에서 . 연산자로 첨자를 사용하여 표현한 경우 ELException 발생 --%>
<%-- <li>${nameArray.0 }</li> --%>
<%-- EL 표현식에서 . 연산자 사용 불가능 - EL 표현식에서 .연산자 대신 [] 연산자를 사용 --%>
<%-- <li>${nameArray["0"] }</li> --%>
<%-- 첨자는 " " 기호 생략 가능 --%>
<li>${nameArray[0] }</li>
<li>${nameArray[1] }</li>
<li>${nameArray[2] }</li>
<li>${nameArray[3] }</li>
<li>${nameArray[4] }</li>
<%-- EL 표현식에서 배열의 첨자가 범위를 벗어난 경우 EL 미실행 - 값 미출력 --%>
<li>${nameArray[5] }</li>
</ul>
</body>
</html>
mvc > src > main > webapp> el)
el_function .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- taglib 디렉티브를 사용하여 TLD 파일을 제공받아 TLD 파일에 등록된 EL 함수 또는 커스텀
태그를 JSP 문서에 사용할 있도록 설정 --%>
<%-- taglib Directive : TLD 파일을 제공받아 JSP 문서에 EL 함수 또는 커스텀 태그를 제공하는 지시어 --%>
<%-- prefix 속성 : EL 함수 또는 커스텀 태그를 사용하기 위한 접두사(식별자)를 속성값으로 설정 --%>
<%-- uri 속성 : TLD 파일을 구분하기 위한 식별자(uri 엘리먼트값)를 속성값으로 설정 - 자동 완성 기능 사용 가능 --%>
<%@taglib prefix="elfun" uri="http://www.itwill.xyz/mvc/el"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL Function</h1>
<hr>
<p>EL 함수 : EL 표현식에서 사용하기 위한 함수</p>
<p>EL 함수를 사용할 경우 호출될 메소드가 선언된 클래스를 작성하고 TLD 파일에서 EL 함수를
등록 후 JSP 문서에서 taglib 디렉티브를 이용하여 TLD 파일을 제공받아 EL 함수 사용</p>
<hr>
<p>${elfun:hello("홍길동") }</p>
<p>${elfun:hello("임꺽정") }</p>
<p>${elfun:hello("전우치") }</p>
</body>
</html>
el_operator .jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL Operator</h1>
<hr>
<%-- EL 연산자 : EL 표현식에서 사용하는 연산자 - 산술 연산자, 비교 연산자, 논리 연산자 등 --%>
<% request.setAttribute("num1", 20); %>
<% request.setAttribute("num2", 10); %>
<div>num1 = ${num1 }</div>
<div>num2 = ${num2 }</div>
<hr>
<div>num1 * num2 = ${num1 * num2}</div>
<div>num1 / num2 = ${num1 / num2}</div>
<div>num1 div num2 = ${num1 div num2}</div>
<div>num1 % num2 = ${num1 % num2}</div>
<div>num1 mod num2 = ${num1 mod num2}</div>
<div>num1 + num2 = ${num1 + num2}</div>
<div>num1 - num2 = ${num1 - num2}</div>
<hr>
<div>num1 > num2 = ${num1 > num2 }</div>
<div>num1 gt num2 = ${num1 gt num2 }</div>
<div>num1 < num2 = ${num1 < num2 }</div>
<div>num1 lt num2 = ${num1 lt num2 }</div>
<div>num1 >= num2 = ${num1 >= num2 }</div>
<div>num1 ge num2 = ${num1 ge num2 }</div>
<div>num1 <= num2 = ${num1 <= num2 }</div>
<div>num1 le num2 = ${num1 le num2 }</div>
<div>num1 == num2 = ${num1 == num2 }</div>
<div>num1 eq num2 = ${num1 eq num2 }</div>
<div>num1 != num2 = ${num1 != num2 }</div>
<div>num1 ne num2 = ${num1 ne num2 }</div>
<hr>
<% request.setAttribute("su", 15); %>
<div>su = ${su }</div>
<hr>
<div>num1 > su && num2 < su = ${num1 > su && num2 < su}</div>
<div>num1 gt su and num2 lt su = ${num1 gt su and num2 lt su}</div>
<div>num1 < su || num2 > su = ${num1 < su || num2 > su}</div>
<div>num1 lt su or num2 gt su = ${num1 lt su or num2 gt su}</div>
<hr>
<%
Object object=null;
request.setAttribute("object", object);
String string="";
request.setAttribute("string", string);
String[] array={};
request.setAttribute("array", array);
List<String> list=new ArrayList<>();
request.setAttribute("list", list);
%>
<%-- empty 연산자 : EL 표현식으로 제공되는 Scope 객체의 속성값이 없거나 비어 있는 경우
[true]를 제공하고 Scope 객체의 속성값이 있으면 [false]를 제공하는 연산자 --%>
<div>object Empty = ${empty(object) }</div>
<div>string Empty = ${empty(string) }</div>
<div>array Empty = ${empty(array) }</div>
<div>list Empty = ${empty(list) }</div>
</body>
</html>
ㅇㅇ
mvc > src > main > webapp> el)
car_list.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="xyz.itwill.el.Car"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
List<Car> carList=new ArrayList<>();
carList.add(new Car("싼타페","하얀색"));
carList.add(new Car("쏘나타","검정색"));
carList.add(new Car("쏘렌토","빨강색"));
carList.add(new Car("페라리","파란색"));
carList.add(new Car("티볼리","초록색"));
request.setAttribute("carList", carList);
request.getRequestDispatcher("car_list_el.jsp").forward(request, response);
%>
car_list_el.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL - List</h1>
<hr>
<%-- EL 표현식에서 List 객체의 요소를 구분하기 위한 첨자를 . 연산자를 사용하여 표현하면 ELException 발생 --%>
<%-- <p>모델명 = ${carList.0.modelName }, 색상 = ${carList.0.carColor}</p> --%>
<%-- <p>모델명 = ${carList[0]["modelName"] }, 색상 = ${carList[0]["carColor"]}</p> --%>
<p>모델명 = ${carList[0].modelName }, 색상 = ${carList[0].carColor}</p>
<p>모델명 = ${carList[1].modelName }, 색상 = ${carList[1].carColor}</p>
<p>모델명 = ${carList[2].modelName }, 색상 = ${carList[2].carColor}</p>
<p>모델명 = ${carList[3].modelName }, 색상 = ${carList[3].carColor}</p>
<p>모델명 = ${carList[4].modelName }, 색상 = ${carList[4].carColor}</p>
</body>
</html>
mvc > src > main > webapp> el)
fruits_map .jsp
<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Map<String, String> fruitsMap=new HashMap<>();
fruitsMap.put("one", "복숭아");
fruitsMap.put("two", "참외");
fruitsMap.put("three", "수박");
request.setAttribute("fruitsMap", fruitsMap);
request.setAttribute("choice", "two");
request.getRequestDispatcher("fruits_map_el.jsp").forward(request, response);
%>
fruits_map_el .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL - Map</h1>
<hr>
<p>과일-1 = ${fruitsMap.one}</p>
<p>과일-2 = ${fruitsMap.two}</p>
<p>과일-3 = ${fruitsMap.three}</p>
<hr>
<p>좋아하는 과일 = ${fruitsMap.two }</p>
<p>좋아하는 과일 = ${fruitsMap["two"] }</p>
<%-- 스코프 객체의 속성값이 Map 객체인 경우 맵키를 사용하여 맵값을 제공받아 출력 처리 --%>
<%-- => 맵키로 제공되는 맵값이 없는 경우 EL 미실행 --%>
<%-- <p>좋아하는 과일 = ${fruitsMap.choice }</p> --%>
<%-- 스코프 객체의 속성값이 Map 객체인 경우 EL 표현식에서 [] 연산자를 사용하면 다른
스코프 객체의 속성값을 제공받아 맵키로 사용하여 맵값을 제공받아 출력 처리 가능 --%>
<p>좋아하는 과일 = ${fruitsMap[choice] }</p>
</body>
</html>
mvc > src > main > webapp> el)
implicit_header .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Request Header</h1>
<hr>
<h2>EL 미사용</h2>
<ul>
<%-- request.getHeader(String name) : 리퀘스트 메세지의 머릿부에 저장된 값들중
매개변수로 전달받은 이름의 값을 반환하는 메소드 --%>
<li>현재 접속중인 서버 = <%=request.getHeader("host") %></li>
<li>클라이언트 브라우저의 종류 = <%=request.getHeader("user-Agent") %></li>
<li>전달 가능한 문서의 종류 = <%=request.getHeaders("accept").nextElement() %></li>
</ul>
<hr>
<h2>EL 사용</h2>
<ul>
<%-- EL 표현식에서 header 내장객체 또는 headerValues 내장객체를 사용하여 리퀘스트
메세지의 머릿부에 저장된 값을 제공받아 출력 처리 가능 --%>
<%-- => header 내장객체 또는 headerValues 내장객체는 Map 객체로 맵키 대신 헤더값을
구분하는 이름을 사용하여 헤더값을 제공받아 출력 --%>
<li>현재 접속중인 서버 = ${header.host }</li>
<li>클라이언트 브라우저의 종류 = ${header["user-Agent"] }</li>
<li>전달 가능한 문서의 종류 = ${headerValues.accept[0] }</li>
</ul>
</body>
</html>
mvc > src > main > webapp> el)
implicit_cookie_use .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 클라이언트가 보내온 쿠키의 쿠키값을 반환받아 클라이언트에게 전달하여 응답하는 JSP 문서 --%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Cookie</h1>
<hr>
<h2>EL 미사용</h2>
<%
//클라이언트에서 보내온 모든 쿠키를 Cookie 객체 배열로 반환받아 저장
Cookie[] cookies=request.getCookies();
String userName="";//쿠키값을 저장하기 위한 변수
//Cookie 객체 배열의 요소값(Cookie 객체)을 차례대로 제공받아 반복 처리하는 for 구문
for(Cookie cookie : cookies) {
//Cookie 객체에 저장된 쿠키명을 반환받아 문자열과 비교하여 같은 경우
if(cookie.getName().equals("userName")) {
userName=cookie.getValue();//Cookie 객체에 저장된 쿠키값을 반환받아 저장
}
}
%>
<p>쿠키에 저장된 사용자 이름 = <%=userName %></p>
<hr>
<h2>EL 사용</h2>
<%-- EL 표현식에서 cookie 내장객체를 사용하여 쿠키값을 제공받아 출력 처리 가능 --%>
<%-- => cookie 내장객체는 Map 객체로 맵키 대신 쿠키명을 사용하여 Cookie 객체를 제공받아
value 표현식으로 쿠키값 출력 --%>
<%-- <p>쿠키에 저장된 사용자 이름 = ${cookie.userName }</p> --%>
<p>쿠키에 저장된 사용자 이름 = ${cookie.userName.value }</p>
</body>
</html>
implicit_cookie_add .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//클라이언트에 쿠키를 저장하기 위해 Cookie 객체 생성
// => Cookie 객체에 저장되는 쿠키명과 쿠키값은 영문자, 숫자, 일부 특수문자의 문자열만 사용 가능
// => 영문자, 숫자, 일부 특수문자를 제외한 문자를 문자열에 포함할 경우 부호화 처리하여 저장
Cookie cookie=new Cookie("userName","HongGilDong");
cookie.setMaxAge(60*60);//쿠키의 지속시간(초) 변경
response.addCookie(cookie);//response 객체에 Cookie 객체 추가 - 클라이언트에 쿠키가 전달되어 저장
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Cookie</h1>
<hr>
<p>클라이언트에게 쿠키를 전달하여 저장 하였습니다.</p>
<p><a href="implicit_cookie_use.jsp">쿠키값 출력</a></p>
</body>
</html>
mvc > src > main > webapp> el)
implicit_init .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Context Init Parameter</h1>
<hr>
<h2>EL 미사용</h2>
<%-- application.getInitParameter(String name) : [web.xml] 파일의 context-param 엘리먼트로
제공되는 값을 얻어와 반환하는 메소드 --%>
<%-- <p>이름 = <%=application.getInitParameter("name") %></p> --%>
<p>이름 = <%=request.getServletContext().getInitParameter("name") %></p>
<hr>
<h2>EL 사용</h2>
<%-- EL 표현식에서 initParam 내장객체를 사용하여 [web.xml] 파일의 context-param 엘리먼트로
제공되는 값을 출력 처리 가능 --%>
<%-- => initParam 내장객체는 Map 객체로 맵키 대신 param-name 엘리먼트의 이름을 사용하여
param-value 엘리먼트의 값을 제공받아 출력 --%>
<p>이름 = ${initParam.name }</p>
</body>
</html>
implicit_page .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - PageContext</h1>
<hr>
<h2>EL 미사용</h2>
<%-- request 내장객체 - HttpServletRequest 객체 : 요청정보를 저장한 객체 --%>
<p>컨텍스트 경로 = <%=request.getContextPath() %></p>
<p>요청 URI 주소 = <%=request.getRequestURI() %></p>
<hr>
<%-- pageContext 내장객체 - PageContext 객체 : 웹프로그램 작성에 필요한 모든 정보를 저장한 객체 --%>
<%-- pageContext.getRequest() : 요청정보가 저장된 ServletRequest 객체를 반환하는 메소드 --%>
<%-- => ServletRequest 객체(부모)를 HttpServletRequest 객체(자식)로 형변환 가능 --%>
<p>컨텍스트 경로 = <%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %></p>
<p>요청 URI 주소 = <%=((HttpServletRequest)pageContext.getRequest()).getRequestURI() %></p>
<hr>
<h2>EL 사용</h2>
<%-- EL 표현식에서 pageContext 내장객체를 사용하여 JSP의 pageContext 내장객체를 제공받아 사용 --%>
<%-- => EL 표현식에서 pageContext 내장객체로 JSP의 pageContext 내장객체의 메소드 호출 가능 --%>
<%-- <p>컨텍스트 경로 = ${pageContext.getRequest().getContextPath() }</p> --%>
<%-- EL 표현식에서 Getter 메소드는 필드명을 이용하여 자동 호출 가능 --%>
<p>컨텍스트 경로 = ${pageContext.request.contextPath }</p>
<p>요청 URI 주소 = ${pageContext.request.requestURI }</p>
</body>
</html>
implicit_scope .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//JSP 내장객체에 따라 속성값을 저장하여 사용할 수 있는 범위를 다르게 설정 가능
//스코프 객체 속성값의 사용범위 : Page Scope, Request Scope, Session Scope, Application Scope
pageContext.setAttribute("pageName", "홍길동");//Page Scope
request.setAttribute("requestName", "임꺽정");//Request Scope
session.setAttribute("sessionName", "전우치");//Session Scope
application.setAttribute("applicationName", "일지매");//Application Scope
//JSP 내장객체가 다른 경우 동일한 속성명을 사용하여 속성값 저장 가능
// => 같은 JSP 내장객체에 동일한 속성명을 사용하여 속성값을 저장하면 기존 속성값 대신
//새로운 속성값이 저장 - 변경 처리
pageContext.setAttribute("name", "홍길동");//Page Scope
request.setAttribute("name", "임꺽정");//Request Scope
session.setAttribute("name", "전우치");//Session Scope
application.setAttribute("name", "일지매");//Application Scope
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Scope Attribute</h1>
<hr>
<h2>스코프 객체의 속성명이 서로 다른 경우</h2>
<ul>
<%-- EL 표현식에서는 스코프 객체에 상관없이 속성명을 사용하여 속성값을 제공받아 출력 처리 가능 --%>
<li>pageName 속성값(Page Scope) = ${pageName }</li>
<li>requestName 속성값(Request Scope) = ${requestName }</li>
<li>sessionName 속성값(Session Scope) = ${sessionName }</li>
<li>applicationName 속성값(Application Scope) = ${applicationName }</li>
</ul>
<hr>
<h2>스코프 객체의 속성명이 같은 다른 경우</h2>
<ul>
<%-- EL 표현식으로 속성값을 제공받기 위한 순서 --%>
<%-- => Page Scope >> Request Scope >> Session Scope >> Application Scope --%>
<%-- => Scope 객체에 동일한 이름의 속성명을 사용하여 속성값을 저장한 경우 먼저 검색된
Scope 객체의 속성값을 제공받아 출력 처리 - Scope 객체의 속성명은 다른게 설정하는 것을 권장 --%>
<%--
<li>pageName 속성값(Page Scope) = ${name }</li>
<li>requestName 속성값(Request Scope) = ${name }</li>
<li>sessionName 속성값(Session Scope) = ${name }</li>
<li>applicationName 속성값(Application Scope) = ${name }</li>
--%>
<%-- Scope 객체에 동일한 이름의 속성명을 사용하여 속성값을 저장한 경우 EL 내장객체를
사용하여 스코프 객체를 구분하여 속성값을 제공받아 출력 처리 --%>
<%-- => EL 내장객체 : pageScope, requestScope, sessionScope, applicationScope - Map 객체 --%>
<li>pageName 속성값(Page Scope) = ${pageScope.name }</li>
<li>requestName 속성값(Request Scope) = ${requestScope.name }</li>
<li>sessionName 속성값(Session Scope) = ${sessionScope.name }</li>
<li>applicationName 속성값(Application Scope) = ${applicationScope.name }</li>
</ul>
</body>
</html>
implicit_param_action .jsp - (7/12 아직 오류)
입력값을 전달받아 클라이언트에게 전달하여 응답하는 jsp문서
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 입력값을 전달받아 클라이언트에게 전달하여 응답하는 JSP 문서 --%>
<%
//POST 방식으로 요청하여 리퀘스크 메세지 몸체부에 저장되어 전달되는 값에 대한 캐릭터셋 변경
request.setCharacterEncoding("utf-8");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Request Parameter</h1>
<hr>
<h2>EL 미사용</h2>
<ul>
<li>이름 = <%=request.getParameter("name") %></li>
<li>주소 = <%=request.getParameter("address") %></li>
<%-- 같은 이름으로 전달된 값이 여러개인 경우 첫번째 전달값을 반환받아 사용 가능 --%>
<%--
<li>음식-1 = <%=request.getParameter("food") %></li>
<li>음식-2 = <%=request.getParameter("food") %></li>
--%>
<%-- 같은 이름으로 전달된 값이 여러개인 경우 getParameterValues() 메소드를 호출하여
모든 전달값을 문자열 배열로 반환받아 사용 가능 --%>
<li>음식-1 = <%=request.getParameterValues("food")[0] %></li>
<li>음식-2 = <%=request.getParameterValues("food")[1] %></li>
</ul>
<hr>
<h2>EL 사용</h2>
<ul>
<%-- EL 표현식에서 param 내장객체 또는 paramValues 내장객체를 사용하여 전달값을
제공받아 출력 처리 가능 --%>
<%-- => param 내장객체 또는 paramValues 내장객체는 Map 객체로 맵키 대신 전달값의
구분하는 이름을 사용하여 전달값을 제공받아 출력 --%>
<li>이름 = ${param.name }</li>
<li>주소 = ${param.address }</li>
<li>음식-1 = ${paramValues.food[0] }</li>
<li>음식-2 = ${paramValues.food[1] }</li>
</ul>
</body>
</html>
implicit_param_form .jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MVC</title>
</head>
<body>
<h1>EL 내장객체 - Request Parameter</h1>
<hr>
<form action="implicit_param_action.jsp" method="post">
<div><b>개인정보</b></div>
<div>이름 : <input type="text" name="name"></div>
<div>주소 : <input type="text" name="address"></div>
<br>
<div><b>좋아하는 음식</b></div>
<div>음식-1 : <input type="text" name="food"></div>
<div>음식-2 : <input type="text" name="food"></div>
<br>
<button type="submit">제출</button>
</form>
</body>
</html>
mvc > src > main > java > xyz.itwill.el )
HelloEL .java - (오류)
package xyz.itwill.el;
//EL 함수를 사용할 경우 호출될 메소드가 선언된 클래스
public class HelloEL {
//EL 함수를 사용할 경우 호출될 메소드는 반드시 static 메소드로 선언
public static String hello(String name) {
return name+"님, 안녕하세요.";
}
}
mvc > src > main> webapp > WEB-INF > tld)
el.xml → el.tld (확장자 바꿔줌) - (오류)
<?xml version="1.0" encoding="UTF-8"?>
<!-- TLD(Tag Library Description) 파일 : EL 함수 및 커스텀 태그를 선언하기 위한 XML 파일 -->
<!-- => XML 스키마 파일(web-jsptaglibrary_2_0.xsd)에서 제공하는 엘리먼트만 사용 -->
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ">
<!-- description : TLD 파일에 대한 설명을 제공하는 엘리먼트 -->
<description>EL 함수를 선언한 TLD 파일</description>
<!-- tlib-version : TLD 파일의 버전을 등록하기 위한 엘리먼트 -->
<tlib-version>1.0</tlib-version>
<!-- short-name : TLD 파일의 이름을 등록하기 위한 엘리먼트 -->
<short-name>elfun</short-name>
<!-- uri : JSP 문서에서 TLD 파일을 불러오기 위해 사용하는 식별자를 등록하기 위한 엘리먼트 -->
<uri>http://www.itwill.xyz/mvc/el</uri>
<!-- function : EL 함수를 등록하기 위한 엘리먼트 -->
<function>
<!-- name : EL 함수의 이름을 설정하기 위한 엘리먼트 -->
<name>hello</name>
<!-- function-class : EL 함수 사용시 호출될 메소드가 선언된 클래스를 설정하기 위한 엘리먼트 -->
<function-class>xyz.itwill.el.HelloEL</function-class>
<!-- function-signature : EL 함수 사용시 호출될 메소드 머릿부를 설정하기 위한 엘리먼트 -->
<function-signature>java.lang.String hello(java.lang.String)</function-signature>
</function>
</taglib>