IT 공부/JSP

EL (표현언어)

toraa 2022. 8. 2. 17:18

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>