EL
JSP 표현식을 조금 더 효율적이고 간단하게 작성할 수 있도록 고안된 언어
화면에 표현하고자 하는 자바코드를 ${value} 형식으로 작성함
📍 ${ param.name 속성값 }
📍 ${paramValues.lang[인덱스] }
package edu.kh.jsp.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import edu.kh.jsp.model.vo.Person;
@WebServlet("/EL/result")
public class ELResultServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// POST 방식 요청 -> 한글 깨짐 -> 문자 인코딩 처리 필요
req.setCharacterEncoding("UTF-8");
// 새로운 임의의 값
String menu = "돈까스";
// 파라미터 얻어오기
String inputName = req.getParameter("inputName");
int inputAge = Integer.parseInt(req.getParameter("inputAge"));
String inputAddress = req.getParameter("inputAddress");
// Person 객체에 파라미터를 변경한 값을 대입
Person p = new Person();
p.setName(inputName +"님");
p.setAge(inputAge +100);
p.setAddress("대한민국 " +inputAddress);
// 응답 화면 작성 코드를 JSP로 위임
// 1) 요청 발송자
String path = "/WEB-INF/views/el/result.jsp"; // webapp 폴더 기준으로 작성
RequestDispatcher dispatcher = req.getRequestDispatcher(path);
// 2) 요청 위임 시 추가할 값 세팅
req.setAttribute("person", p);
req.setAttribute("menu", menu);
// 3) 요청 위임
dispatcher.forward(req, resp);
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>c:forEach 향상된 for문처럼 사용하기</title>
</head>
<body>
<h3>EL로 파라미터 얻어오는 방법</h3>
1. \${ param.name 속성값 }
-> 단일 파라미터를 얻어와 출력하는 용도
-> 복수 파라미터에 사용하는 경우 맨 앞(0번 인덱스) 값만 얻어옴<br><br>
${param.lang }
<br><br>
2. \${paramValues.lang[인덱스] } <br><br>
${ paramValues.lang[0] }<br>
${ paramValues.lang[1] }<br>
${ paramValues.lang[2] }<br>
<hr>
<h3>향상된 for문 사용</h3>
<ul>
<c:forEach var="str" items="${paramValues.lang}" varStatus="vs">
<li>
${str} / ${vs.index} / ${vs.count } / ${vs.current}
<br>
<c:if test="${vs.first}">
<!-- 첫 번째 반복인 경우 -->
<span style="color:red;">첫 번째</span>
</c:if>
<c:if test="${vs.last}">
<!-- 마지막 반복인 경우 -->
<span style="color:blue;">마지막</span>
</c:if>
</li>
</c:forEach>
</ul>
</body>
</html>