데이터융합 JAVA응용 SW개발자 기업 채용연계 연수과정 45일차 강의 정리

misung·2022년 5월 19일
0

JSP

실습 1. 어제에 이어서

user_login_con은 저번에 구현했을거고
왠지 모르겠었는데 세션 아이디 값을 못 가져왔었음.

아무래도 user_mypage.jsp 의 구현이 문제였나본데, 해결되긴 함. 어떻게든..

이번에 구현한 것

  • user_mypage.jsp
  • user_change_pw.jsp 리다이렉트 수정, user_change_pw_con.jsp 구현
  • user_update.jsp 템플릿 되어있는거 가져다가 form 태그의 value 부분이 비어있었는데, 세션에서 유저 데이터를 가져와서 <%= %>로 데이터 표시, user_update_con 구현
  • user_delete, user_delete_con
  • user_logout

새로 배우는 개념

  • EL, JSTL

user_mypage.jsp

<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <%
    	//주소를 치고 강제로 들어오는 접근을 막겠습니다.
    	if(session.getAttribute("user") == null) { %>
    		<script>
    			alert("로그인 한 회원만 접근이 가능합니다.");
    			location.href="user_login.jsp";
    		</script>
    	<% } else {
   				UserVO vo = (UserVO) session.getAttribute("user");
    	%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<%@ include file="../include/header.jsp" %>
	
	<div align="center">
		<h2>My Page</h2>
		<hr>
		<p>
			<strong><%=vo.getName() %>(<%=vo.getId() %>)님의 정보를 관리합니다.</strong>
		</p>
		<hr>
		<br>
		<p>
			<a href="user_change_pw.jsp">비밀번호 변경</a> &nbsp;
			<a href="user_update.jsp">회원정보 변경</a> &nbsp;
			<a href="user_delete.jsp">회원 탈퇴</a>
		</p>
	</div>
	
	<%@ include file="../include/footer.jsp" %>

</body>
</html>


<% } %>

마이페이지 부분을 구현했다.
만약 로그인 하지 않은 상태에서 URL을 입력하여 접근하는 경우 세션에 유저 정보가 저장되어 있지 않을 것이므로, 유저 정보가 세션에 있나 없나 검사하여 mypage로의 접근을 막거나 허용하도록 했다.

user_change_pw.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
input {
  font-size: 1em;
  letter-spacing: 1px;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 5px;
}


</style>
</head>
<body>
   
   <%@ include file="../include/header.jsp" %>
   
    <div align="center" style="margin-bottom: 20px; padding-bottom: 50px;">
      <h2>비밀번호 변경 페이지</h2>
      <hr>
       
      <form action="user_change_pw_con.jsp" method="post">
         <p><strong>현재 비밀번호</strong></p>
          <input type="password" name="old_pw" required="required"> <br><br>
         <p><strong>변경 비밀번호</strong></p>
         <input type="password" name="new_pw" required="required"> <br><br>
         
         <input type="submit" value="확인" class="btn btn-primary btn-lg"> &nbsp;&nbsp;
         <input type="button" value="취소" class="btn btn-default btn-lg" onclick="history.back()">
         
      </form>
      
   </div>
   
   <%@ include file="../include/footer.jsp" %>
   
</body>
</html>

제공받은 소스이므로 크게 건든 곳은 없으나 리다이렉트되는 부분을 변경했다.

user_change_pw_con.jsp

<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@page import="kr.co.jsp.user.model.UserDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	/*
		1. 폼 데이터 처리 (기존 비번, 변경 비번)
		2. dao주소값을 받아오시고, userCheck()를 활용하여
		 기존 비번과 아이디 정보를 바탕으로 해당 비밀번호가 일치하는지를 검사.
		 (id는 세션에서 구해옵니다.)
		
		3. 기존 비밀번호가 일치한다면 비밀번호 변경 메서드 changePassword() 호출.
		4. "비밀번호가 정상적으로 변경되었습니다." 경고창 출력 후 mypage 이동.
		5. 현재 비밀번호가 불일치 -> "현재 비밀번호가 다릅니다." 경고창 출력 후 뒤로가기.
	*/
	
	// 세션에서 가져오기
	UserVO vo = (UserVO) session.getAttribute("user");
	String id = vo.getId();
	
	// 폼에서 넘긴 데이터 가져오기	
	String oldPw = request.getParameter("old_pw");
	String newPw = request.getParameter("new_pw");
	
	UserDAO dao = UserDAO.getInstance();
	
	int result = dao.userCheck(id, oldPw);
	
	if (result == 1) {
		dao.changePassword(id, newPw);
	%>
		<script>
			alert("비밀번호가 정상적으로 변경되었습니다.")
			location.href="user_mypage.jsp";
		</script> 
	<%
	} else { %>
		<script>
			alert("현재 비밀번호가 다릅니다.");
			history.back();
		</script>
	<% } %>

폼에서 넘어온 데이터를 getParameter() 로 가져오고, 유저 객체는 세션에 저장되어 있으므로 세션에서 유저 객체를 얻어온다.

가져온 데이터들을 기반으로 dao의 userCheck() 함수로 유저의 유효성을 검사하고 유효한 경우 (id, 구 pw 일치) 비밀번호를 변경해주고, 그렇지 않은 경우 이전 페이지로 돌려보내고 있다.

user_update.jsp

<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%--
	/*
       	사용자가 이 페이지에 들어왔을 때
       	세션에 들어있는 로그인 중인 회원 정보를 불러온 후
       	아래의 input 태그의 value에 해당하는 값이 보여지도록 처리.
    */
    UserVO vo = (UserVO) session.getAttribute("user");
--%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

   <%@ include file="../include/header.jsp" %>

<div class="virtual-box"></div>

<div class="container">
   <div class="row">
      <div class="col-md-offset-2 col-md-4">
         <div class="panel" style="width:200%;">
            <div class="panel-heading text-white" align="center" style="background: #F8F8FF;">
               <h2><span style="color: gray;">MyWeb</span> 회원 정보 수정</h2>
            </div>
            <div class="panel-body">
               <form action="user_update_con.jsp" method="post" style="margin-bottom: 0;">
                   
                  <table
                     style="cellpadding: 0; cellspacing: 0; margin: 0 auto; width: 100%">
                     <tr>
                        <td style="text-align: left">
                           <p><strong>아이디</strong>&nbsp;&nbsp;&nbsp;</p>
                        </td>                     
                     </tr>
                     <tr>
                        <td><input type="text" name="id" value="${user.id}"
                           class="form-control" maxlength="14"
                           style="margin-bottom: 25px; width: 100%; height: 40px; border: 1px solid #d9d9de"
                           readonly>
                        </td>
                     </tr>
         
                     <tr>
                        <td style="text-align: left">
                           <p><strong>이름을 수정해 주세요.</strong>&nbsp;&nbsp;&nbsp;</p>
                        </td>
                     </tr>
                     <tr>
                        <td><input type="text" name="name" value="${user.name}"
                           class="form-control" maxlength="6"
                           style="margin-bottom: 25px; width: 100%; height: 40px; border: 1px solid #d9d9de"
                           placeholder="이름을 입력하세요."></td>
                     </tr>
                     
                      
                     <tr>
                        <td style="text-align: left">
                           <p><strong>이메일을 수정해 주세요.</strong>&nbsp;&nbsp;&nbsp;</p>
                        </td>
                     </tr>
                     <tr>
                        <td><input type="email" name="email" value="${user.email}"
                           class="form-control" 
                           style="margin-bottom: 25px; width: 100%; height: 40px; border: 1px solid #d9d9de"
                           placeholder="ex) abc@jsp.com"></td>
                     </tr>
                     <tr>
                        <td style="text-align: left">
                           <p><strong>주소를 수정해 주세요.</strong>&nbsp;&nbsp;&nbsp;</p>
                        </td>
                     </tr>
                     <tr>
                        <td><input type="text" name="address" value="${user.address}"
                           class="form-control" 
                           style="margin-bottom: 25px; width: 100%; height: 40px; border: 1px solid #d9d9de"
                           placeholder="ex) 서울특별시 종로구"></td>
                     </tr> 
                     
         
                     <tr>
                        <td style="width: 100%; text-align: center; colspan: 2;">
                     <input type="submit" value="정보수정" class="btn btn-primary btn-lg" onclick="return confirm('수정하시겠습니까?')"> &nbsp;&nbsp;
                     <input type="button" value="취소" class="btn btn-danger btn-lg" onclick="location.href='user_mypage.jsp'">
                        </td>
                     </tr>
         
                  </table>
               </form>
            </div>
         </div>
      </div>
   </div>
</div>

<%@ include file="../include/footer.jsp" %>
   

</body>
</html>

보면 중간중간 ${obj.value} 와 같은 표현식을 볼 수 있는데, 이건 아래에 나중에 설명할 EL이라는 것이다.

user_update_con.jsp

<%@page import="kr.co.jsp.user.model.UserDAO"%>
<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	/*
		1. 폼 데이터 처리하세요.
		2. DAO 연동을 통해 updateUser() 메서드를 호출하여 회원 정보를 수정합니다.
		 회원 정보 수정을 성공했다면 세션을 다시 제작해 주셔야 합니다.
		 이름은 똑같이 해서 저장해 주시면 되겠습니다.
		3. 수정 후 "회원 정보가 수정되었습니다." 를 출력 후 마이페이지로 이동.
	*/
	
	request.setCharacterEncoding("utf-8");
	
	// 폼 데이터 id, name, email, address
	UserVO vo = new UserVO();
	UserDAO dao = UserDAO.getInstance();
	
	vo.setId(request.getParameter("id"));
	vo.setName(request.getParameter("name"));
	vo.setEmail(request.getParameter("email"));
	vo.setAddress(request.getParameter("address"));
	
	dao.updateUser(vo);
	session.setAttribute("user", dao.getUserInfo(vo.getId()));
%>

<script>
    alert("회원 정보가 수정되었습니다.");
    location.href="user_mypage.jsp";
</script>

빈 vo 객체를 하나 만들고 폼에서 넘어온 데이터를 저장한다.
그리고 dao의 updateUser() 메서드를 통해 유저 정보를 업데이트하고, 세션에다 일치하는 vo객체를 id로 찾아 저장해 둔다.

user_delete.jsp

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

	<%@ include file="../include/header.jsp" %>
	
	<div align="center" style="margin-bottom: 20px;">
		<h3>현재 비밀번호를 입력하세요.</h3>
		<hr>
		
	<form action="user_delete_con.jsp" method="post" role="form" class="form-inline">
        <div class="form-group">
            <input type="password" name="check_pw" class="form-control" placeholder="현재 비밀번호"
            style="width: 225px">
        </div>

        <div class="form-group">
            <button type="submit" class="btn btn-primary" onclick="return confirm('정말 삭제하시겠습니까?')"> 확인</button>
        </div>
         <div class="form-group">
            <button type="button" class="btn btn-danger" onclick="location.href='user_mypage.jsp'"> 취소</button>
        </div>

    </form>

	</div>
	
	
	<%@ include file="../include/footer.jsp" %>
	

</body>
</html>

유저 삭제를 위한 폼. 비밀번호를 받아 user_delete_con.jsp로 리다이렉트 시키는 중

user_delete_con.jsp

<%@page import="kr.co.jsp.user.model.UserDAO"%>
<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	UserVO vo = (UserVO) session.getAttribute("user");
	String id = vo.getId();
	
	String pw = request.getParameter("check_pw");

	UserDAO dao = UserDAO.getInstance();
	
	if (dao.userCheck(id, pw) == 0) { %>
	<script>
		alert("비밀번호가 틀렸습니다.");
		location.href="user_mypage.jsp";
	</script>
	<% } else {
		dao.deleteUser(id);
		session.invalidate(); %>
		<script>
			alert("회원 탈퇴가 정상적으로 처리되었습니다.");
			<%-- 프로젝트 자체에 요청 보내기 --%>
			location.href="/MyWeb";
		</script>
<%	}
%>

방금 폼에서 넘어온 check_pw를 받아오고, 세션에 저장된 유저 객체를 꺼낸다.

유저 객체의 id와 check_pw를 dao의 userCheck() 메서드에 보내서 유효한 경우 (유저 인증 성공) dao의 deleteUser() 메서드로 유저를 삭제하고 세션을 날린다. 그리고 프로젝트 자체에 요청을 보낸다. (이러면 WEB-INF의 web.xml에 지정된 웰컴 페이지로 이동된다.)

EL (Expression Language)

  • EL이란, JSP에서 저장객체를 출력할 때 스크립팅을 전혀 쓰지 않을 수 있는 기술이다.
  • EL은 일종의 스크립트 언어로, 자료 타입, 수치 연산자, 논리 연산자, 비교 연산자 등을 제공하며 표현식을 대체할 수 있다.

EL의 사용법
표현식 <%= value %>EL ${value}

EL 내부에 사용하는 연산자
산술, 관계, 조건, 논리

액션 태그와 EL
액션 태그 : <jsp:getProperty name="member" property="name"/>
EL : ${member.name}

EL은 보통 DB에서 가져온 객체를 표시할 때 자주 사용한다.
스프링까지 계속 이 문법은 가져갈 것이며, 점차 JSP에서 자바 코드를 줄여나가게 될 것.

원래 자바 코드는 .java 파일에만 작성하면 되고, .jsp에 자바 코드를 작성하면 HTML과 혼합되어 복잡해지는 문제가 생김.

EL 실습

el_basic.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>
		<% int i = 5; %>
		
		<%= 10 * 4 %> <br> <!-- == out.print(10 * 4) 와도 같음. -->
		<%= 5.55 + 3 %> <br>
		<%= "안녕하세요~" %> <br>
		<%= i %>
	</p>
	
	<hr>
	
	<p>
		${10 * 4}		<br>
		${5.55 + 3}		<br>
		${'안녕하세요~'}	<br>
		${ i } <!-- 얘만 값을 못 가져옴. -->
	</p>
</body>
</html>

위의 코드는 기존의 스크립트릿 방식이고 아래는 EL 방식이다.
잘 보면 EL의 i는 값을 표현하지 못하고 있다.

el_form.jsp, el_con.jsp, el_result.jsp

el_form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="el_con.jsp">
		<p>
			# 이름: <input type="text" name="name"> <br>
			# 별명: <input type="text" name="nick"> <br>
			<input type="submit" value="확인">
		</p>
	</form>
</body>
</html>

이름과 별명을 입력받고 폼으로 넘긴다.

el_con.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String name = request.getParameter("name");
	String nick = request.getParameter("nick");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>
		<!-- 값을 꺼내서 바로 사용하기 위해 주로 사용 -->
		# 이름: ${param.name} <br>
		# 별명: ${param.nick}
	</p>
	
	<%
		session.setAttribute("data1", "Hello!");
		application.setAttribute("data2", "bye!");
		session.setAttribute("data2", "이름은 같지만 다른 데이터");
	%>
	
	<a href="el_result.jsp">세션, 어플리케이션 데이터를 화면에 출력</a>
</body>
</html>

폼 데이터로 넘어온 값을 바로 EL로 꺼내올 수 있다.
param은 EL의 내장 객체로써, parameter의 값을 꺼내올 수 있다.

el_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>
		<!-- 세션이라고 지정하지 않아도 바로 찾을 수 있음 -->
		# data1: ${data1} <br>
		# data2: ${applicationScope.data2}
	</p>
</body>
</html>

찾으려는 값의 이름 앞에 찾으려는 범위를 지정할 수 있는데, 지정하지 않더라도 모든 범위를 수색하면서 값을 끌어오기 때문에 지정하지 않아도 되기는 한다.

중복된 이름을 갖는 경우엔 문제가 되긴 하겠지만, 보통은 중복된 이름을 갖지 않게 하는 경우가 대부분이라 괜찮다고 하셨다.

el_obj 01, 02, 03.jsp

el_obj01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="el_obj02.jsp">
		<p>
			# 아이디: <input type="text" name="id"> <br>
			# 비밀번호: <input type="password" name="pw"> <br>
			# 이름: <input type="text" name="name"> <br>
			# 이메일: <input type="text" name="email"> <br>
			# 주소: <input type="text" name="address"> <br>
			<input type="submit" value="확인">
		</p>
	</form>
</body>
</html>

el_obj02.jsp

<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	UserVO vo = new UserVO (
				request.getParameter("id"),
				request.getParameter("pw"),
				request.getParameter("name"),
				request.getParameter("email"),
				request.getParameter("address")
			);
	session.setAttribute("member", vo);
%>

<a href="el_obj03.jsp">el로 세션 내 객체의 값을 표현하기</a>

el_obj03.jsp

<%@page import="kr.co.jsp.user.model.UserVO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		UserVO vo = (UserVO) session.getAttribute("member");
	%>
	
	<p>
		# 이름: <%=vo.getName() %> <br>
		# 아이디: <%=vo.getId() %> <br>
		# 이메일: <%=vo.getEmail() %> <br>
		# 주소: <%=vo.getAddress() %> <br>
	</p>
	
	<hr>
	
	<!-- 
		get을 제외한 메서드의 이름을 쓰면 된다. 
		getName()이었다면, name만.
	-->
	<p>
		# 이름: ${sessionScope.member.name} <br>
		# 아이디: ${member.id} <br>
		# 이메일: ${member.email} <br>
		# 주소: ${member.address}
	</p>
</body>
</html>

01에서는 폼으로 데이터를 받아 02로 보내고, 02에서는 객체로 포장하여 세션에 객체를 저장하였다.
03에서는 객체를 세션으로부터 꺼내온 다음, 스크립트릿과 EL 두 가지의 방식으로 값을 꺼내오는 방법을 보여주고 있다.

JSTL (Java Standard Tag Library)

  • JSP의 경우 HTML태그와 같이 사용되어 전체적인 코드의 가독성이 떨어진다.

  • 그래서 이런 단점을 보완하고자 만들어진 것이 JSTL이다.

  • JSTL을 사용하면 자바의 제어문을 HTML 태그화 시킬 수 있다.

  • JSTL의 경우 우리가 사용하는 Tomcat 기본 컨테이너에 포함되어 있지 않으므로, 별도의 라이브러리를 설치하고 사용해야 한다.

[설치 방법]
http://jakarta.apache.org/ 접속
(jstl.jar, standard.jar 파일 설치 된 톰캣의 lib 폴더 안으로 복사)

하지만 실제 설치는
https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
이 링크에서 .jar 파일 설치했음.

실습

jstl_if.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%-- jstl을 사용하기 위해서는 외부 태그 라이브러리 선언을 해야 한다. --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%--
 		JSTL로 변수를 선언하면 EL안에서 활용이 가능하다.
 		값도 EL을 이용해서 매겨줄 수 있다.
 		EL이 타입을 자동으로 인식하여 적용해 준다.
 		
 		c:set을 이용해서 지정한 변수는 스트립트릿의 자바 변수와는 다르다.
 		내장객체에 지정하는 데이터로 활용되기 때문에 EL이 가능한 것이다.
 	--%>
 	
 	<%-- 
 		var : 데이터 이름, value : 값, scope : setAttribute 할 내장 객체 
 		setAttribute 하지 않으면 page 객체가 되어 이 페이지에서만 사용가능한 변수가 됨	
 	--%>
	<c:set var="age" value="${param.age}" scope="session" />
	
	<p>
		나이: ${age}세 <br>
		
		<c:if test="${age >= 20}">
			<h2>당신은 성인입니다.</h2>
		</c:if>
		
		<c:if test="${age < 20}">
			<h2>당신은 미성년자입니다.</h2>
		</c:if>
	</p>
</body>
</html>

jstl에서 <c:ser var="이름" value="값" scope="범위" /> 이렇게 적어 변수를 선언할 수 있다.

만약 단일 if가 아니라 if~else를 하고 싶다면? 다음과 같이 진행한다.

age_form.jsp, jstl_choose.jsp

age_form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="jstl_choose.jsp">
		# 이름: <input type="text" name="name"> <br>
		# 나이: <input type="text" name="age"> <br>
		<input type="submit" value="확인">
	</form>
</body>
</html>

jstl_choose.java

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="age" value="${param.age}" />
	
	# 이름 : ${param.name}
	# 나이 : ${age}
	
	<c:choose>
		<c:when test="${age >= 20}">
			<h3>당신은 성인입니다.</h3>
		</c:when>
		<c:when test="${age >= 17}">
			<h3>당신은 고등학생입니다.</h3>
		</c:when>
		<c:when test="${age >= 14}">
			<h3>당신은 중학생입니다.</h3>
		</c:when>
		<c:when test="${age >= 8}">
			<h3>당신은 초등학생입니다.</h3>
		</c:when>
		<c:otherwise>
			<h3>당신은 미취학 아동입니다.</h3>
		</c:otherwise>
	</c:choose>
</body>
</html>

폼으로 데이터를 넘겼으므로 param으로 접근하여 데이터를 가져오는데, <c:set ...> 문법을 사용하여 가져온 데이터를 변수로 선언시켜 두고 아래의 EL에서 변수를 사용토록 하고 있다.

그리고 <c:if ...> 와는 달리, <c:choose> 로 시작하여, <c:when> ~ </c:when> 으로 if~else if를 표현하고 <c:otherwise> 로 else를 표현한다.

0개의 댓글