본문 바로가기

개발자노트/웹

HTML - JSP - 커스텀태그를 사용해 EL식 , JSTL 사용

Test.java코드

먼저 useBean을 사용하기 위해 Test.java 클래스스를 만들었다.

package test;

public class Test {
	private String[] datas = {"apple","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;
	}
	
}

이미 값을 셋해주어서 getter만 만든 상태.

 

그리고 test1.jsp 의 코드이다.

상단에 커스텀 태그를 사용하기위한 taglib을 작성하였고,

Test.java에 있는 정보를 사용하기위해 jsp:useBean을 작성하였다.

<%@ page import="test.Test"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<jsp:useBean id="test" class="test.Test" scope="session"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL식, JSTL으로 수정</title>
</head>
<body>

	<form action="test2.jsp" method="post">
		<select name="sel">
			<c:forEach var="v" items="${test.datas}">
				<option>${v}</option>
			</c:forEach>
		</select>
		<input type="submit" value="선택">
	</form>

</body>
</html>

test.datas ( 자바코드에서 초기화해둔 apple,banana,kiwi ) 값들을 forEach문으로  출력 후 선택된 값을 

form action을 통해 test2.jsp로 보내게 된다.

 

 

test2.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이라는 파라미터에 저장된 값: ${param.sel} <br>
	<hr>
	현재 session에는 test라는 이름의 객체가 저장된 상태 <br>
	${test.num1}+${test.num2}=${test.num1+test.num2}

</body>
</html>

test1.jsp 에서 이미 useBean으로 session 단위에 test 객체가 저장되어있기 때문에, 

test2.jsp 에서까지 useBean사용 없이 test에 접근 할 수 있는 것을 볼 수 있다.

그래서 test.num1 과 num2의 계산 또한 가능하다.

 

 

 

수행결과

test1.jsp
test2.jsp

선택한 apple이 값으로 test2.jsp로 넘어갔고,

session에는 test라는 이름의 객체가 저장되어있는 상태기 때문에

따로 useBean 없이 호출하여 사용해 연산까지 한 것을 볼 수 있다.