본문 바로가기

개발자노트/웹

HTML - JSP - EL 표현식 사용예제

EL 표현식을 사용하여 사용자의 선택값 / 입력값을 <jsp:useBean> 이나 new 없이 사용하는 방법이다.

 

객체가 가지고 있을 멤버변수를 만들어주는 .java 코드

package test;

public class Test {
	private String[] datas= {"appple","banana","kiwi"};
	private int num1=10; // 값을 이미 넣었기 때문에 세터 안할것임!
	private int num2=20;
	public String[] getDatas() {
		return datas;
	}
	public int getNum1() {
		return num1;
	}
	public int getNum2() {
		return num2;
	}

}

 

사용자의 입력값을 받을 .jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<jsp:useBean id="test" class="test.Test" scope="session" />

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL식 - 1</title>
</head>
<body>

<form action="NewFile2.jsp" method="post"> <!-- 데이터를 다음 페이지로 보내주기 위해 form에 post -->
	<select name="sel">
		<%
			for(String v : test.getDatas()){  // Test클래스의 datas 멤버변수
							   				  // 객체가 필요하다는 것을 의미!
							   				  // new 해야함 --> jsp:useBean 사용!!
		%>
			<option><%=v%></option>
		<% 	
			}
		%>
	</select>
	<input type="submit" value="선택">
</form>

</body>
</html>

 

입력값을 전달받아 화면에 출력하는 .jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL식 - 2</title>
</head>
<body>

<!-- 
sel이라는 파라미터에 저장된 값: <%= request.getParameter("sel")%> <br>
-->
EL식으로 표기하면 <br>
파라미터 : ${param.sel} <br>

<!--  
현재 session에는 test라는 이름의 객체가 저장된 상태 <br>
test.getNum1() + test.getNum() = ??? 이걸 하고 싶은데 어떻게 할까? <br>
Test test =(Test)session.getAttribute("test"); 를 해야함 <br>
=> <jsp:useBean scope="session" id="test" class="test.Test"/>
-->
<!-- 하지만 EL표현식을 사용하면 이러한 행동을 하지 않아도 됨 !! -->
${test.num1} ${test.num2} = ${test.num1 + test.num2}
<hr>

<!-- <%
	int res=test.getNum1() + test.getNum2();
	out.print(res);
%> -->


</body>
</html>

${param.sel}

test.getNum1() + test.getNum2() = ???의 수행을 위해서는,
1)
Test test(Test)session.getAttribute("test");
=> <jsp:useBean scope="session" id="test" class="test.Test" />

2)
<%
int res=test.getNum1() + test.getNum2();
out.println(res)
%>

↓↓↓↓↓↓↓↓

EL 표현식을 사용한다면
${test.num1} ${test{"num1"]}