Spring Boot/스프링부트 예제

URL 매개변수를 ArrayList 형태로 View에 전달

2주녘 2023. 10. 5. 12:48
반응형

💡 ArrayList 형태의 View에서의 출력

📂 MulitParamController.java

@GetMapping("/hello-array")
public String setHelloArray(Model model,
                            @RequestParam(defaultValue = "") String name,
                            @RequestParam(defaultValue = "") String id)
{
    List<String> list = new ArrayList<>();
    list.add(name);
    list.add(id);

    model.addAttribute("list",list);
    return "exam03/hello_array.jsp";
}

setHelloArray 메서드 내에서 문자열 형태의 ArrayList를 생성합니다.

그리고 .add() 를 사용하여 RequestParam의 변수를 넣어줍니다.

 

📂 hello_array.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--TODO : JSTL 표현식 사용을 위한 import--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <%--    TODO 부트스트랩 CSS CDN --%>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <h2>예제 2) URL 매개변수를 ArrayList 로 View에 전달</h2>
    <p>${list}</p>

    <table class="table">
        <thead>
        <tr>
            <th scope="col">id</th>
            <th scope="col">name</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <%--    TODO: JSP 반복문 : jstl 표현식 사용    --%>
<%--                  <c:forEach var="일반변수" items="${배열}">   --%>
            <c:forEach var="data" items="${list}">
                <td>${data}</td>
            </c:forEach>
        </tr>
        </tbody>
    </table>
</div>
</body>
</html>

내용을 깔끔하게 보이게 하기 위해 부트스트랩의 테이블 소스를 사용하였습니다.

JSP에서의 반복문은 JSTL 표현식을 사용합니다.

<c:forEach var="변수명" items="${배열}">
${변수명}
</c:forEach>

📌 결과

 

📖 연습문제

//  TODO: 연습 2) 연습 1에서 작성한 dno, dname, loc 를 ArrayList 담아서 jsp 전달하세요
//    화면에 출력시 부트스트랩 테이블을 이용해서 출력하세요
//    url : /example02
//    jsp : exam03/example02.jsp
//    url 테스트 : http://localhost:8000/exam03/example02?dno=10&dname=Accounting&loc=NewYork
//    결과 : 테이블 형태로
//    부서번호 : 10
//    부서명 : Accounting
//    위치 : NewYork

 

📂 MulitParamController.java

@GetMapping("/example02")
public String setHelloArray2(Model model,
                             @RequestParam(defaultValue = "")int dno,
                             @RequestParam(defaultValue = "")String dname,
                             @RequestParam(defaultValue = "")String loc
                             )
{
    List<String> list = new ArrayList<>();
    list.add(String.valueOf(dno));
    list.add(dname);
    list.add(loc);

    model.addAttribute("list",list);
    return "exam03/example02.jsp";
}

📂 example02.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--TODO : JSTL 표현식 사용을 위한 import--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <%--    TODO 부트스트랩 CSS CDN --%>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <h2> 연습1) URL 매개변수를 ArrayList 로 View에 전달</h2>
    <p>${list}</p>

    <table class="table">
        <thead>
        <tr>
            <th scope="col">부서번호</th>
            <th scope="col">부서명</th>
            <th scope="col">위치</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <%--    TODO: JSP 반복문 : jstl 표현식 사용    --%>
            <%--                  <c:forEach var="일반변수" items="${배열}">   --%>
            <c:forEach var="data" items="${list}">
                <td>${data}</td>
            </c:forEach>
        </tr>
        </tbody>
    </table>
</div>
</body>
</html>

📌 실행결과

 

//  TODO: 연습 3) 아래 결과를 ArrayList 담아서 jsp 전달하세요
//    화면에 출력시 부트스트랩 테이블을 이용해서 출력하세요
//    url : /example03
//    jsp : exam03/example03.jsp
//    url 테스트 : http://localhost:8000/exam03/example03?eno=7788&ename=Scott&salary=3000&job=Manager
//    결과 : 테이블 형태로
//      사원번호 : 7788
//      사원명 : Scott
//      월급 : 3000
//      직위 : Manager

📂  MulitParamController.java

@GetMapping("/example03")
public String setHelloArray3(Model model,
                             @RequestParam(defaultValue = "")int eno,
                             @RequestParam(defaultValue = "")String ename,
                             @RequestParam(defaultValue = "")int salary,
                             @RequestParam(defaultValue = "")String job
)
{
    List<String> list = new ArrayList<>();
    list.add(String.valueOf(eno));
    list.add(ename);
    list.add(String.valueOf(salary));
    list.add(job);

    model.addAttribute("list",list);
    return "exam03/example03.jsp";
}

📂 example03.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%--TODO : JSTL 표현식 사용을 위한 import--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <%--    TODO 부트스트랩 CSS CDN --%>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65" crossorigin="anonymous">
</head>
<body>
<div class="container">
    <h2> 연습3) URL 매개변수를 ArrayList 로 View에 전달</h2>
    <p>${list}</p>

    <table class="table">
        <thead>
        <tr>
            <th scope="col">eno</th>
            <th scope="col">ename</th>
            <th scope="col">salary</th>
            <th scope="col">job</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <%--    TODO: JSP 반복문 : jstl 표현식 사용    --%>
            <%--                  <c:forEach var="일반변수" items="${배열}">   --%>
            <c:forEach var="data" items="${list}">
                <td>${data}</td>
            </c:forEach>
        </tr>
        </tbody>
    </table>
</div>
</body>
</html>

📌 실행결과

반응형