EL (표현언어)
EL (표현언어)
. 속성값들을 편리하게 출력하기 위해 제공되는 언어이다.
. jsp스크립트를 대신하여 속성값들을 좀더 편리하게 출력하기 위해서 제공되는 언어
. 값을 출력하기 위해 사용된다.
. 형변환을 좀더 자동적으로 처리해주고, null값을 갖는 변수에 대해 좀 더 관대하다.
. 스크립트릿, 표현식, 선언부 에서는 사용할 수 없다.
. 좀 더 간단하게 값을 출력할 수 있는 장점이 있다.
. 구현 : <%= 값 %> ${ 표현식 }
. 표현식
- 변수와 연산자를 포함할 수 있다.
- jsp내장객체의 모든 속성과 자바빈 객체를 사용할 수 있다.
- 지원되는 내장객체가 있다.
- 정수, 실수, 문자열, 논리형, null이 있다.
. 연산자
- . : 자바빈 객체의 속성이나 맵의 원소에 접근 (접근지정자)
- []: 배열이나 리스트의 원소에 접근
- lt : 작다와 같음
- gt : 크다와 같음
- empty : null인지 여부 체크
- func(args) : 함수호출
등등... 자바와 동일
. 내장객체
param : param[이름] --- request.getParameter("이름")
paramValues : paramValues[이름] -- request.getParameterValues("이름")
pageContext : jsp의 pageContext 내장객체와 동일
* RequestDispatcher클래스
. 클라이언트로부터 최초에 들어온 요청을 서버내에서 원하는 자원으로,
request, response를 넘기는 역할을 수행한다.
. 특정 자원에서 처리한 결과를 가져오는 기능도 한다.
. forward() : 받은 요청을 넘김
. include() : 요청받은 결과를 받음
j1_input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>누적합계</title>
</head>
<body>
<h2>누적합계를 구할 숫자를 입력하세요</h2>
<form action="j1_result.jsp">
숫자 : <input type="number" name="num" required><p>
<input type="submit" value="계산요청">
</form>
</body>
</html>
j1_do.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>
<%
// 1~100 연산
request.setCharacterEncoding("utf-8");
int num = Integer.parseInt(request.getParameter("num"));
int sum = 0;
for(int i=1; i<=num; i++){
sum += i;
}
request.setAttribute("sum",sum);
//결과값을 다음페이지로 넘긴다.
//pageContext.forward("j1_result.jsp");
RequestDispatcher rd = request.getRequestDispatcher("j1_result.jsp");
rd.forward(request, response);
%>
</body>
</html>
j1_result.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>
<%--
<%
int sum = (Integer)request.getAttribute("sum");
%>
합계 : <%=sum %>
--%>
<hr>
<h3>요청받은 결과를 EL로 출력합니당</h3>
<h3>누적합계 : ${sum }</h3>
</body>
</html>
j2.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>색상 선택</title>
</head>
<body>
<h2>좋아하는 색을 선택하세용</h2>
<form action="j2_result.jsp">
<label for="m1">빨강
<input type="radio" name="color" value="red" id="m1"><br>
</label>
<label for="m2">주황
<input type="radio" name="color" value="orange" id="m2"><br>
</label>
<label for="m3">노랑
<input type="radio" name="color" value="yellow" id="m3"><br>
</label>
<label for="m4">초록
<input type="radio" name="color" value="green" id="m4"><br>
</label>
<label for="m5">파랑
<input type="radio" name="color" value="blue" id="m5"><br>
</label>
<br>
<input type="submit" value="선택완료">
</form>
</body>
</html>
j2_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>색상선택 결과</title>
</head>
<%--
<%
String color = request.getParameter("color");
%>
<body bgcolor='<%=color%>'>
--%>
<body bgcolor='${param.color }'>
<h3>배경 색이 변경되었습니당ㅇㅅㅇ</h3>
</body>
</html>
j3_input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>숫자 입력</title>
</head>
<body>
<!-- 계산할 숫자1, 숫자2 입력 -->
<h2>계산할 두 숫자를 입력하세요♡</h2>
<form action="j3_result1.jsp">
숫자 1 : <input type="number" name="num1" required><p>
숫자 2 : <input type="number" name="num2" required><p>
<input type="submit" value="계산요청">
</form>
</body>
</html>
j3_result1.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>
<%
request.setCharacterEncoding("utf-8");
int num1 = Integer.parseInt(request.getParameter("num1"));
int num2 = Integer.parseInt(request.getParameter("num2"));
int sum = 0;
sum = num1+num2;
int min = 0;
min = num1-num2;
int mul = 0;
mul = num1*num2;
int divi = 0;
divi = num1/num2;
int by = 0;
by = num1%num2;
request.setAttribute("sum",sum);
request.setAttribute("min",min);
request.setAttribute("mul",mul);
request.setAttribute("divi",divi);
request.setAttribute("by",by);
//결과값을 다음페이지로 넘긴다.
//pageContext.forward("j1_result.jsp");
RequestDispatcher rd = request.getRequestDispatcher("j3_result2.jsp");
rd.forward(request, response);
%>
</body>
</html>
j3_result2.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>
<h3>계산 결과입니당♥</h3>
<hr>
<h3>덧셈 : ${sum }</h3>
<h3>뺄셈 : ${min }</h3>
<h3>곱셈 : ${mul }</h3>
<h3>나눗셈 : ${divi }</h3>
<h3>나머지 : ${by }</h3>
<hr> <!-- 선생님 방법 -->
덧셈 : ${param.num1 } + ${param.num2 } = ${param.num1+param.num2 }<br>
뺄셈 : ${param.num1 } - ${param.num2 } = ${param.num1-param.num2 }<br>
곱셈 : ${param.num1 } * ${param.num2 } = ${param.num1*param.num2 }<br>
나눗셈 : ${param.num1 } / ${param.num2 } = ${param.num1/param.num2 }<br>
나머지 : ${param.num1 } % ${param.num2 } = ${param.num1%param.num2 }<br>
</body>
</html>
j4_input.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선택</title>
</head>
<body>
<h3>최애 고르기♡</h3>
<form action="j4_result.jsp">
<label for = "m1"> 서대길
<input type="checkbox" name="pet" id="m1" value="서대길"><br>
</label>
<label for = "m2"> 김광희
<input type="checkbox" name="pet" id="m2" value="김광희"><br>
</label>
<label for = "m3"> 하현상
<input type="checkbox" name="pet" id="m3" value="하현상"><br>
</label>
<br>
<input type="submit" value="확인">
</form>
</body>
</html>
j4_result.jsp
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선택결과</title>
</head>
<body>
<%--
<%
String[] pt = request.getParameterValues("pet");
for(int i=0; i<pt.length; i++){
}
for(String p:pt){
out.print(p+"<br>");
}
Enumeration em = request.getParameterNames();
while(em.hasMoreElements()){
String pet = (String) em.nextElement();
String name = request.getParameter(pet);
out.print(name+"<br>");
}
%>
--%>
<p>내가 선택한 첫번째 : ${paramValues.pet[0] }</p>
<p>내가 선택한 두번째 : ${paramValues.pet[1] }</p>
<p>내가 선택한 세번째 : ${paramValues.pet[2] }</p>
</body>
</html>
j5.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>
<%
Cookie cookie = new Cookie("name","서대길");
response.addCookie(cookie);
%>
<a href="j5_result.jsp">쿠키결과</a>
</body>
</html>
j5_result.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>
<%
%>
저장쿠키 : ${cookie.name["value"] }
</body>
</html>
Hashmap
j8.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.HashMap" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HashMap 과일</title>
</head>
<body>
<%
HashMap<String,String> hm = new HashMap<>();
hm.put("k1","사과");
hm.put("k2","바나나");
hm.put("k3","키위");
hm.put("k4","딸기");
request.setAttribute("fruit",hm);
RequestDispatcher rd = request.getRequestDispatcher("j8_result.jsp");
rd.forward(request, response);
%>
</body>
</html>
j8_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.util.HashMap, java.util.Set" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>내가 좋아하는 과일들</h3>
${fruit.k1 }<br>
${fruit.k2 }<br>
${fruit.k3 }<br>
${fruit.k4 }<br>
<hr>
<%
HashMap<String,String> hm = (HashMap<String,String>) request.getAttribute("fruit");
Set<String> et = hm.keySet();
for(String str: et){
out.print(hm.get(str)+"<br>");
}
%>
</body>
</html>