잡동사니에도 사랑을

[21.10.07] jstlExam / jstlTest(jstl) 본문

JAVA_EE/EL-JSTL

[21.10.07] jstlExam / jstlTest(jstl)

luvforjunk 2021. 10. 7. 17:50
728x90
반응형

////////jstlExam.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import="com.jstl.PersonDTO"%>
<%
// 자바 파일의 역할 ---> 페이지를 이동해야 하니 여기서 실행하세요

List<String> list = new ArrayList<String>();
list.add("호랑이");
list.add("사자");
list.add("기린");
list.add("코끼리");
list.add("타조");
list.add("코알라");
list.add("여우");

PersonDTO aa = new PersonDTO("홍길동", 25);
PersonDTO bb = new PersonDTO("네  오", 23);
PersonDTO cc = new PersonDTO("프로도", 30);

List<PersonDTO> list2 = new ArrayList<PersonDTO>();
list2.add(aa);
list2.add(bb);
list2.add(cc);

//데이터
request.setAttribute("list", list);
request.setAttribute("list2", list2);

//페이지 이동
// response.sendRedirect("jstlTest.jsp"); 
/* 
데이터가 가지 않아 아무것도 뜨지 않는다
왜? jstlExam.jsp에서의 request와 jstlTest.jsp의 request가 다르기 때문
*/

//forward
RequestDispatcher dispatcher = request.getRequestDispatcher("jstlTest.jsp");
dispatcher.forward(request, response);

%>
<%-- <jsp:forward page="jstlTest.jsp" /> --%>

 

 

 

////////jstlTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>** 변수 설정 **</h3>
<c:set var="name" value="홍길동"></c:set> <!-- 정수 실수 이런게 없으니 var="" -->
<c:set var="age">25</c:set>

나의 이름은 ${name } 입니다. <br>
내 나이는 <c:out value="${age }"></c:out>살 입니다<br>
나의 키는 ${height }입니다. <!-- c:set을 설정하지 않아도 오류가 뜨지 않는다 -->

<h3>** 변수 삭제 **</h3>
<c:remove var="name"/>

나의 이름은 ${name } 입니다. <br>
내 나이는 <c:out value="${age }"></c:out>살 입니다<br>
나의 키는 ${height }입니다.

<h3>** forEach **</h3> <!-- 반복문 -->
<c:forEach var="i" begin="1" end="10" step="1"><%-- for(int i=1; i<=10; i++) --%>
	${i }
	<c:set var="sum" value="$(sum + i)"></c:set><%-- sum = sum + i --%>
</c:forEach>
<br>
1~ 10까지의 합은 ${sum }입니다.
<br><br>

<c:forEach var="i" begin="1" end="10" step="1"> <!-- step엔 0도 안되고 -도 안된다 -->
	${11-i }
</c:forEach>
<br>

<h3>** 문자열 분리 **</h3>
<c:forTokens var="car" items="소나타,아우디,페라리,제네시스,제규어" delims=",">
	${car }<br>
</c:forTokens>

<h3>** jstlExam.jsp에서 넘어오는 데이터 **</h3>
${requestScope.list } <!-- 옆에 꺼와 같은 의미 request.getAttribute("list") -->
<!-- el태그를 쓰고 있으니 request가 아닌 requestScope라고 써준다 -->

<h3>** 인덱스 2 데이터 출력 **</h3>
${list[2] }

<h3>** jstlExam.jsp에서 넘어오는 데이터 **</h3>
${list2 }
<br><br>

<c:forEach var="personDTO" items="${list2}"> <!-- for(PersonDTO personDTO : list2) -->
	이름 = ${personDTO.getName() } &emsp; 나이 = ${personDTO.getAge() }<br>
</c:forEach>

<h3>메소드명을 변수명처럼 사용</h3> <!-- set과 get 접두사 빼기, 뒤에 있는 괄호도 빼기 -->
<c:forEach var="personDTO" items="${list2}"> <!-- for(PersonDTO personDTO : list2) -->
	이름 = ${personDTO.name } &emsp; 나이 = ${personDTO.age }<br>
</c:forEach>
<!-- personDTO.name()의 name은 DTO의 String name이 아니다
private이라 다른 클래스에서 쓸 수 없으므로
웹에서는 getter만 Spring에서는 getter setter -->

</body>
</html>

 

 

 

////////PersonDTO

package com.jstl;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
@NoArgsConstructor
@AllArgsConstructor
@Data // 기본 생성자, setter/getter , toString(),...를 자동으로 설정
public class PersonDTO {
	@NonNull
	private String name; 
	private int age;

}

 

결과창

728x90
반응형