exam02
ParamController
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 : GGG
* date : 2023-10-05
* description : @RequestMapping, @RequestParam
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-10-05 GGG 최초 생성
*/
@Controller
// TODO: @RequestMapping("/공통url") : 공통url 함수의 url 과 합쳐져서 사용됨
// 예) @RequestMapping("/exam02") + @GetMapping("/hello-name")
// => url : /exam02/hello-name
@RequestMapping("/exam02")
public class ParamController {
// TODO: 쿼리스트링 방식 : url?변수명=값 => 다른 jsp 페이지로 값을 전달할 수 있음
// (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(Sales)의 값을 url 쿼리스트링으로 전달해서
// example01.jsp 에 출력해 보세요
// 결과 : 부서명 : Sales
// url 테스트 : http://localhost:8000/exam02/hello-dname?dname=Sales
@GetMapping("/hello-dname")
public String HelloName2(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 HelloName3(Model model,
@RequestParam(defaultValue = "0") int no){
model.addAttribute("greeting", no);
return "exam02/example02.jsp";
}
}
hello.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>
<%-- 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(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
결과
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>
<%-- 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>dname(Sales)의 값을 url 쿼리스트링으로 전달해서 출력하기</h2>
<%-- TODO: el(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
결과
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>
<%-- 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>숫자로 url 매개변수를 전달해서 화면에 출력해 보세요.</h2>
<%-- TODO: el(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
결과
exam03
MultiParamController
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 : GGG
* date : 2023-10-05
* description : @RequestMapping, @RequestParam 2개 이상 사용 예제
* 요약 :
* <p>
* ===========================================================
* DATE AUTHOR NOTE
* —————————————————————————————
* 2023-10-05 GGG 최초 생성
*/
@Controller
// TODO: @RequestMapping("/공통url")
@RequestMapping("/exam03")
public class MultiParamController {
// TODO: 예제1 : URL 매개변수 2개를 각각 키이름으로 전달
// URL 테스트 : http://localhost:8000/exam03/hello-name-id?name=kang&id=forbob
@GetMapping("/hello-name-id")
public String setHelloNameId(Model model,
@RequestParam(defaultValue = "") String name,
@RequestParam(defaultValue = "") String id
) {
model.addAttribute("attrName", "이름:" +name);
model.addAttribute("attrId", "이름:" +id);
return "exam03/hello_name_id.jsp";
}
// 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: 예제 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: 연습 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 = "0") 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: 연습 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 setExample02(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";
}
// 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: 아래의 결과를 출력하세요, 조건문 이용해서 아래 출력
// 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";
}
}
hello_name_id.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>
<%-- 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(Experssion language) 표현식 : ${변수명} --%>
<p>${attrName}</p>
<p>${attrId}</p>
</div>
</body>
</html>
결과
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>
<%-- 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) </h2>
<%-- TODO: el(Experssion language) 표현식 : ${변수명} --%>
<p>${dno}</p>
<p>${dname}</p>
<p>${loc}</p>
</div>
</body>
</html>
결과
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>
<%-- 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(Experssion language) 표현식 : ${변수명} --%>
<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>
결과
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>
<%-- 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 </h2>
<%-- TODO: el(Experssion language) 표현식 : ${변수명} --%>
<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 표현식 --%>
<%-- <c:forEach var="일반변수" items="${배열}"> --%>
<c:forEach var="data" items="${list}">
<td>${data}</td>
</c:forEach>
</tr>
</tbody>
</table>
</div>
</body>
</html>
결과
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>
<%-- 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(Experssion language) 표현식 : ${변수명} --%>
<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>
<script>
<%-- jsp + js 같이 쓰기 --%>
let list = "${list}";
console.log(list);
</script>
</body>
</html>
결과
condition.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>
<%-- 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>매개변수(파라메터) 배열 전달받아 출력하기</h2>
<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> --%>
<%-- (if, else if): <c:when test="조건문">실행문</c:when> --%>
<%-- (else): <c:otherwise>실행문</c:otherwise> --%>
<%-- </c:choose> --%>
<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>
결과
example04.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>
<%-- 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: 연습 4 --%>
<h2>연습 4</h2>
<p>${title}</p>
<p>${color}</p>
<p>${kind}</p>
<%-- TODO: if 조건문으로 출력하기 : jstl 표현식, else 없음 --%>
<%-- 사용법 : <c:if test="${조건식}">실행문</c:if> --%>
<c:if test="${title == '아반떼'}">
<p>아반떼가 맞습니다.</p>
</c:if>
<%-- TODO: choose 조건문으로 출력하기 , else 있음 --%>
<%-- 사용법 <c:choose> --%>
<%-- (if, else if): <c:when test="조건문">실행문</c:when> --%>
<%-- (else): <c:otherwise>실행문</c:otherwise> --%>
<%-- </c:choose> --%>
<c:choose>
<c:when test="${color == 'grey'}">
회색입니다.
</c:when>
<c:when test="${color == 'yellow'}">
노란색입니다.
</c:when>
<c:otherwise>
다른색입니다.
</c:otherwise>
</c:choose>
</div>
</body>
</html>
결과
'Spring Boot' 카테고리의 다른 글
[Spring Boot]JPAExam (1) | 2023.10.16 |
---|---|
[Spring Boot] CRUD (create, read, update, delete) (0) | 2023.10.10 |
[Spring boot]스프링 부트 프로젝트 (1) | 2023.10.04 |