매개변수(파라메터) 전달받아 출력하기
@RequestParam : 쿼리스트링 방식으로 변수에 값을 저장해서 다른 페이지로 전달하는 어노테이션
http://localhost:8000/exam02/hello-name
http://localhost:8000/exam02/hello-name?name=홍길동

※ 정수 일 경우 (defaultValue = "0")  값을 정수로 무조건 넣어줘야 오류가 뜨지 않음
더보기
package com.example.controllerexam.controller.exam02;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * packageName : com.example.controllerexam.controller.exam02
 * fileName : ParamController
 * author : L.DH
 * date : 2023-10-05
 * description : @RequestMapping(공동url), @RequestParam(쿼리스트링 방식)
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url") : 공통url 함수의 url 과 합쳐져서 사용됨
//   예) @RequestMapping("/exam02") + @GetMapping("/hello-name")
//       => url : /exam02/hello-name
@RequestMapping("/exam02")

public class ParamController {
// TODO : 쿼리스트링 방식 : url?변수명 = 값 => 다른 jsp 페이지로 값을 전달 할 수 있음
// TODO : (vs 파라메터 방식   : url/값        => 다른 jsp 페이지로 값을 전달 할 수 있음 )
//     @RequestParam : 쿼리스트링 방식으로 변수에 값을 저장해서 다른 페이지로 전달하는 어노테이션
//      사용법 : 함수명(Model model, @RequestParam String 변수명){}
//              url? 변수명 = 값(웹 브라우저 주소창 입력)
//      옵션 : defaultValue = " " : 쿼리스트링 변수에 값이 null 이면 " " 바꿔줌
//      url 테스트 : http://localhost:8000/exam02/hello-name?name=홍길동
    @GetMapping("hello-name")
    public String HelloName(Model model
            , @RequestParam(defaultValue = "") String name) {
        model.addAttribute("greeting", "안녕하세요 " + name);

        return "exam02/hello.jsp";
    }

//  TODO: 연습 1) url : /exam02/hello-dname
//               jsp : exam02/example01.jsp
//               문제 : dname(부서명)의 값을 url 쿼리스트링으로 전달해서
//                example01.jsp 에 출력해 보세요
//               결과 : 부서명 : Sales
@GetMapping("hello-dname")
    public String Dname(Model model
                        , @RequestParam(defaultValue = "") String dname) {
        model.addAttribute("greeting","부서명 : " + dname);

        return "exam02/example01.jsp";
}

//  TODO: 연습 2) 숫자로 url 매개변수를 전달해서 화면에 출력해 보세요.
//         url : /exam02/hello-no
//         jsp : exam02/example02.jsp
//         결과 : 20
//    url 테스트 : http://localhost:8000/exam02/hello-no?no=20

    @GetMapping("hello-no")
    public String HelloNo(Model model
                       , @RequestParam(defaultValue = "0") int no) {
        model.addAttribute("greeting", "번호 : " + no);

        return "exam02/example02.jsp";
    }

}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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>@RequestParam 사용하기</title>
    <%-- TODO : bootstrap 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>매개변수(파라메터) 전달받아 출력하기</h2>
    <%--  TODO: el 표현식 --%>
    <p>${greeting}</p>
</div>
</body>
</html>

정수 일 경우 (defaultValue = "0")  값을 정수로 무조건 넣어줘야 오류가 뜨지 않음

 


 

공통된 URL @RequestMapping 사용해 보기

@RequestMapping("/공통url") : 공통url 함수의 url 과 합쳐져서 사용됨 예) @RequestMapping("/exam02") + @GetMapping("/hello-name") => url : /exam02/hello-name

 


 

@RequestMapping, @RequestParam URL 매개변수 2개를 각각 키 이름으로 전달 예제
매개변수 값 연결하여 사용시 %(앰퍼샌드)
http://localhost:8000/exam03/hello-name-id?name=kang&id=forbob
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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 매개변수 2개를 각각 키이름으로 전달</h2>
    <%--  TODO: el 표현식 --%>
    <p>${attrName}</p>
    <p>${attrId}</p>
</div>
</body>
</html>

 


 

연습1 : URL 매개변수로 dno=10, dName=Accounting Loc=NewYork 받았다. 아래 결과를 화면에 출력하세요.
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {

//  TODO: 연습 1) URL 매개변수로 dno=10, dName=Accounting Loc=NewYork 받았다. 아래 결과를 화면에 출력하세요.
//         url : /example01
//         jsp : exam03/example01.jsp
//         결과 :
//          부서번호 : 10
//          부서명 : Accounting
//          위치 : NewYork
//   url 테스트 : http://localhost:8000/exam03/example01?dno=10&dname=Accounting&loc=NewYork

    @GetMapping("/example01")
    public String setExample01(Model model,
                               @RequestParam(defaultValue = "0") int dno,
                               @RequestParam(defaultValue = "") String dname,
                               @RequestParam(defaultValue = "") String loc
    ){
        model.addAttribute("dno", "부서번호 : " + dno);
        model.addAttribute("dname", "부서이름 : " + dname);
        model.addAttribute("loc", "부서지역 : " + loc);

        return "exam03/example01.jsp";
    }

}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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 매개변수로 dno=10, dName=Accounting Loc=NewYork 받았다. 아래 결과를 화면에 출력하세요.</h2>
    <%--  TODO: el 표현식 --%>
    <p>${dno}</p>
    <p>${dname}</p>
    <p>${loc}</p>
</div>
</body>
</html>

 


 

예제2 : URL 매개변수를 ArrayList 로 View 에 전달
부트트랩 표 반복문 사용하기
※ jsp 반복문 : jstl 표현식으로 사용해야 함
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {

//  TODO: 예제 2) URL 매개변수를 ArrayList 로 View 에 전달
//   URL 테스트 : http://localhost:8000/exam03/hello-array?name=kang&id=forbob
    @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";
    }



}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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>
    <%--  TODO: el 표현식 --%>
    <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 표현식 --%>
 <%-- TODO : <c:forEach var="일반변수" items="${배열}"> --%>
        <c:forEach var="data" items="${list}">
        <td>${data}</td>
        </c:forEach>
    </tr>
    </tbody>
</table>

</div>
</body>
</html>

 


 

연습2 : URL 매개변수를 ArrayList 로 View 에 전달
※ list.add(String.valueOf(dno)); // 숫자 -> 문자열 변환
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {

//  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
//    힌트) List<String> list = new ArrayList<>();
//        list.add(String.valueOf(dno));    // 숫자 -> 문자열 변환
//    결과 : 테이블 형태로
//      부서번호 : 10
//      부서명 : Accounting
//      위치 : NewYork
    @GetMapping("/example02")
    public String setExample02(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";
    }

}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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>
    <%--  TODO: el 표현식 --%>
    <p>${list}</p>

<table class="table">
    <thead>
    <tr>
        <th scope="col">dno</th>
        <th scope="col">dname</th>
        <th scope="col">loc</th>
    </tr>
    </thead>
    <tbody>
    <tr>
 <%-- TODO : jsp 반복문 : jstl 표현식 --%>
 <%-- TODO : <c:forEach var="일반변수" items="${배열}"> --%>
        <c:forEach var="data" items="${list}">
        <td>${data}</td>
        </c:forEach>
    </tr>
    </tbody>
</table>

</div>
</body>
</html>

 


 

연습3 : URL 매개변수를 ArrayList 로 View 에 전달
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {


//  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
    @GetMapping("/example03")
    public String setExample03(Model model,
                               @RequestParam(defaultValue = "0") int eno,
                               @RequestParam(defaultValue = "") String ename,
                               @RequestParam(defaultValue = "0") 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";
    }


}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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>
    <%--  TODO: el 표현식 --%>
    <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 표현식 --%>
 <%-- TODO : <c:forEach var="일반변수" items="${배열}"> --%>
        <c:forEach var="data" items="${list}">
        <td>${data}</td>
        </c:forEach>
    </tr>
    </tbody>
</table>

</div>
<script>
<%-- TODO : jsp + js 같이 쓰기 --%>
let list = "${list}";
console.log(list);
</script>
</body>
</html>

console.log(list); jsp + js 같이 쓰기

 


 

예제3 : URL 매개변수 3개를 전달해서 조건에 따라 출력하기

if 조건문으로 출력하기 : jstl 표현식, else 없음
choose 조건문으로 출력하기, else 있음
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {

//   TODO: 예제 3: URL 매개변수 3개를 전달해서 조건에 따라 출력하기
//    URL 테스트 : http://localhost:8000/exam03/condition?name=삼식이&color=brown&kind=dog
    @GetMapping("/condition")
    public String setCondition(Model model,
                               @RequestParam(defaultValue = "") String name,
                               @RequestParam(defaultValue = "") String color,
                               @RequestParam(defaultValue = "") String kind
    ) {
        model.addAttribute("name", name);
        model.addAttribute("color", color);
        model.addAttribute("kind", kind);

        return "exam03/condition.jsp";
    }


}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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">
    <%-- TODO: 매개변수(파라메터) 배열 전달받아 출력하기 --%>
    <h2>예제3 : URL 매개변수 3개를 전달해서 조건에 따라 출력하기</h2>
    <%--  TODO: el 표현식 --%>
    <p>${name}</p>
    <p>${color}</p>
    <p>${kind}</p>

    <%-- TODO : if 조건문으로 출력하기 : jstl 표현식, else 없음 --%>
    <%--  사용법 : <c:if test="${조건식}"> 실행문 </c:if> --%>
    <c:if test="${name == '삼식이'}">
        <p>삼식이가 맞습니다.</p>
    </c:if>

    <%-- TODO : choose 조건문으로 출력하기, else 있음 --%>
    <c:choose>
        <c:when test="${color == 'brown'}">
            갈색입니다.
        </c:when>
        <c:when test="${color == 'yellow'}">
            노란색입니다.
        </c:when>
        <c:otherwise>
            다른색입니다.
        </c:otherwise>
    </c:choose>

</div>
</body>
</html>

 


 

연습4 : URL 매개변수를 전달해서 조건에 따라 출력하기
더보기
package com.example.controllerexam.controller.exam03;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.ArrayList;
import java.util.List;

/**
 * packageName : com.example.controllerexam.controller.exam03
 * fileName : MultiParamController
 * author : L.DH
 * date : 2023-10-05
 * description :  @RequestMapping, @RequestParam 2개 이상 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
// TODO : @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {

    //  TODO: 아래의 결과를 출력하세요, 조건문 이용해서 아래 출력
//    url : /example04
//    jsp : exam03/example04.jsp
//    URL 테스트 : http://localhost:8000/exam03/example04?title=아반떼&color=grey&kind=세단
//    결과 : 아반떼가 맞습니다.
//          회색입니다.
    @GetMapping("/example04")
    public String setExample04(Model model,
                               @RequestParam(defaultValue = "") String title,
                               @RequestParam(defaultValue = "") String color,
                               @RequestParam(defaultValue = "") String kind
    ) {
        model.addAttribute("title", title);
        model.addAttribute("color", color);
        model.addAttribute("kind", kind);

        return "exam03/example04.jsp";
    }
}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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>연습4 : URL 매개변수를 전달해서 조건에 따라 출력하기</h2>
    <%--  TODO: el 표현식 --%>
    <p>${title}</p>
    <p>${color}</p>
    <p>${kind}</p>

    <c:if test="${title == '아반떼'}">
    <p>아반떼가 맞습니다.</p>
    </c:if>

    <c:choose>
    <c:when test="${color == 'grey'}">
    회색입니다.
    </c:when>
    <c:otherwise>
    다른색입니다.
    </c:otherwise>
    </c:choose>

</body>
</html>

 


 

Lombok 라이브러리 : 유용한 @ 모은 라이브러리
@ModelAttribute : 객체형태로 변환하는 어노테이션
더보기
package com.example.controllerexam.controller.exam04;

import com.example.controllerexam.model.Member;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * packageName : com.example.controllerexam.controller.exam04
 * fileName : ObjectParamController
 * author : L.DH
 * date : 2023-10-05
 * description : @ModelAttribute : 객체형태로 변환하는 어노테이션
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */

@Controller
@RequestMapping("/exam04")
public class ObjectParamController {
//  TODO: url 테스트 : http://localhost:8000/exam04/object-param?id=forbob&name=kang
//    @ModelAttribute : 객체의 속성명으로 jsp로 각각 전달
//      Member 클래스의 속성명 == url 의 매개변수명 : id , name

    @GetMapping("/object-param")
    public String getObjectParam(
            @ModelAttribute Member member) {
        return "exam04/object_param.jsp";
    }
}
더보기
package com.example.controllerexam.model;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * packageName : com.example.controllerexam.model
 * fileName : Member
 * author : L.DH
 * date : 2023-10-05
 * description : 회원 클래스
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
// TODO : Lombok 라이브러리 : 유용한 @ 모은 라이브러리
//  @Setter : setter 함수를 만들어주는 어노테이션
//  @Getter : getter 함수를 만들어주는 어노테이션
//  @ToString : toString 재정의 함수 자동으로 만들어주는 어노테이션
//  @AllArgsConstructor : 모든 속성을 가진 생성자 자동 정의
@Setter
@Getter
@ToString
@AllArgsConstructor
public class Member {
    //  TODO : 속성, 생성자, 함수(getter/setter)
    String id;      // 회원 id
    String name;    // 회원명
}
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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 : bootstrap 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>
<%-- TODO : 매개변수 받기 --%>
<h2>객체 형태로 매개변수 받기</h2>
<p>${member}</p>
</body>
</html>

 


 

@PathVariable : 파라메터 방식 매개변수 전달하는 어노테이션
더보기
package com.example.controllerexam.controller.exam05;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * packageName : com.example.controllerexam.controller.exam05
 * fileName : PathVariableController
 * author : GGG
 * date : 2023-10-05
 * description : @PathVariable : 파라메터 방식 매개변수 전달하는 어노테이션
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * —————————————————————————————
 * 2023-10-05         GGG          최초 생성
 */
@Controller
@RequestMapping("/exam05")
public class PathVariableController {
// TODO: url 테스트 : http://localhost:8000/exam05/path-variable/KangTaeGyung
//      => 파라메터 방식 : @GetMapping("/path-variable/{웹매개변수명}")
//      => 웹브라우저 주소창 사용 : url/값
// TODO: 쿼리스트링 : http://localhost:8000/exam05/path-variable?name=KangTaeGyung
    @GetMapping("/path-variable/{name}")
    public String getPathVariable(
            @PathVariable String name,
            Model model) {
        model.addAttribute("name", name);
        return "exam05/path_variable.jsp";
    }

//    TODO: 연습 1) 아래와 같이 URL 이 정의되어 있다. 컨트롤러 함수를 작성하세요.
//    URL 테스트 : http://localhost:8000/exam05/example01/10
//    url : /example01/{num}
//    jsp : exam05/example01.jsp
//    결과 :
//    전달받은 값은 10입니다.

    @GetMapping("/example01/{num}")
    public String getexample01(
            @PathVariable int num,
            Model model) {
        model.addAttribute("num", num);
        return "exam05/example01.jsp";
    }
}
더보기
<!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>
</head>
<body>
<p>${name}</p>
</body>
</html>
더보기
<%-- TODO : webapp.Web-INF.views.exam01 fileName : hello--%>
<%-- 아래 page 지시자가 있어야 함 --%>
<%@ 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>
</head>
<body>
<p>전달받은 값은 ${num}입니다.</p>
</body>
</html>

 


 

2개 이상 @PathVariable 사용 예제
더보기
package com.example.controllerexam.controller.exam06;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;


/**
 * packageName : com.example.controllerexam.controller.exam06
 * fileName : MultiPathVariableController
 * author : L.DH
 * date : 2023-10-05
 * description : 2개 이상 @PathVariable 사용 예제
 * 요약 :
 * <p>
 * ===========================================================
 * DATE            AUTHOR             NOTE
 * ———————————————————————————————
 * 2023-10-05         L.DH         최초 생성
 */
@Controller
@RequestMapping("/exam06")
public class MultiPathVariableController {
//  TODO: 예제 : id, name 2개 매개변수 전달해서 jsp 출력
//   url 테스트 : http://localhost:8000/exam06/multi-path/id/hong/name/honggildong
    @GetMapping("/multi-path/id/{id}/name/{name}")
    public String getMultiVar(
            @PathVariable String id,
            @PathVariable String name,
            Model model
    ) {
        model.addAttribute("id", id);
        model.addAttribute("name", name);
        return "exam06/multi_path.jsp";
    }


// TODO: 아래 url 를 보고 함수를 작성하세요
//   jsp 에 전달시 list 배열에 담아 부트스트랩 테이블로 출력하세요
//   url : /example01/dno/{dno}/dName/{dName}/loc/{loc}
//   jsp : exam06/example01.jsp
//   URL 테스트:  http://localhost:8000/exam06/example01/dno/10/dname/Sales/loc/Pusan
    @GetMapping("/example01/dno/{dno}/dname/{dname}/loc/{loc}")
    public String getExample01(
            @PathVariable int dno,
            @PathVariable String dname,
            @PathVariable String loc,
            Model model
    ) {
        List<String> list = new ArrayList<>();
        list.add(String.valueOf(dno));
        list.add(dname);
        list.add(loc);

        model.addAttribute("list", list);

        return "exam06/example01.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>
</head>
<body>
<p>${dno}</p>
<p>${dName}</p>
</body>
</html>
더보기
<%@ 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 : bootstrap 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>
<p>${list}</p>

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