반응형
💡 @RequestParam
쿼리스트링 방식으로 변수에 값을 저장해서 다른 페이지로 전달하는 Annotation 입니다.
- 파라미터 이름으로 바인딩
- name 속성이 파라미터 이름으로 사용
사용법 : 함수명(Model model, @RequestParam 자료형 변수명) {}
url?변수명=값 (웹 브라우저 주소창 입력)
📌 코드작성해보기
📂 ParamController.java
@Controller
public class ParamController {
@GetMapping("/exam02/hello-name")
public String HelloName(Model model
,@RequestParam(defaultValue = "") String name) {
model.addAttribute("greeting", "안녕하세요 " + name);
return "exam02/hello.jsp";
}
}
여기서
@RequestParam(defaultValue = "") String name)
defaultValue 부분은 생략이 가능합니다.
만약 defaultValue 부분을 생략하고 주소창에 값을 넘겨주지 않을 경우 오류가 발생하게 됩니다.
즉, 옵션을 생략할 경우 반드시 값을 넘겨줘야합니다!
- 위의 코드는 HelloName 메서드에 @RequestParam 어노테이션을 사용하여 name 값이 전달이 안될 경우 빈문자열로 기본값을 설정하였습니다.
📂 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>
<%-- 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>매개변수(파라메터) 전달받아 출력하기</h2>
<%-- TODO : el(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
📌 실행결과
✅ URL 매개변수를 2개를 각각 키이름으로 전달하기
위의 예제는 매개변수를 1개를 전달하는 방법이였습니다. 이번에는 매개변수 2개를 전달하는 방법에 대해 알아보겠습니다.
📂 MultiParamController.java
@Controller
@RequestMapping("/exam03")
public class MultiParamController {
// TODO : 예제 1) URL 매개변수 2개를 각각 키이름으로 전달
// URL TEST ) http://localhost:8000/exam03/hello-name-id?name=junyeok&id=junyeoke
@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";
}
- setHelloNameId 메서드에 @RequestParam 어노테이션이 두 개 사용된 것을 알 수 있습니다.
📂 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>
<%-- 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>URL 매개변수를 각각 키이름으로 전달</h2>
<p>${dno}</p>
<p>${dname}</p>
<p>${loc}</p>
</div>
</body>
</html>
📌 실행결과
- URL TEST 주소는 http://localhost:8000/exam03/hello-name-id?name=junyeok&id=junyeoke 이며 매개변수가 2개 이상일 경우 &을 사용하여 입력합니다.
💡 @RequestMapping
요청(Request) URL을 어떤 method가 처리할지 mapping 해주는 Annotation 입니다.
즉, 자주쓰는 공통 URL를 생략할수 있게 해주는 어노테이션이라 생각하시면 됩니다.
@RequestMapping("/공통url") : 공통 url을 함수의 url과 합쳐져서 사용됨
예) @RequestMapping("/exam02") + @GetMapping("/hello-name")
=> url : /exam02/hello-name
컨트롤러 클래스 위에 @RequestMapping 어노테이션을 사용합니다.
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;
@Controller
@RequestMapping("/exam02")
public class ParamController {
@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
📂 ParamController.java
@GetMapping("/exam02/hello-dname")
public String HelloDname(Model model, @RequestParam(defaultValue = "") String dname) {
model.addAttribute("greeting", "부서명 : " + dname);
return "exam02/example01.jsp";
}
📂 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>
<%-- 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>dname(Sales)의 값을 url 쿼리스트링으로 전달해서 출력하기</h2>
<%-- TODO : el(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
📌 실행결과
// TODO: 연습 2) 숫자로 url 매개변수를 전달해서 화면에 출력해 보세요.
// url : /exam02/hello-no
// jsp : exam02/example02.jsp
// 결과 : 20
📂 ParamController.java
@GetMapping("/exam02/hello-no")
public String HelloNo(Model model, @RequestParam(defaultValue = "0") int no) {
model.addAttribute("greeting", + no);
return "exam02/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>숫자로 url 매개변수를 전달해서 화면에 출력하기</h2>
<%-- TODO : el(Experssion language) 표현식 : ${변수명} --%>
<p>${greeting}</p>
</div>
</body>
</html>
📌 실행결과
TODO: 연습 1) URL 매개변수로 dno=10, dName=Accounting 받았다. 아래 결과를 화면에 출력하세요.
url : /example01
jsp : exam03/example01.jsp
<결과>
부서번호 : 10
부서명 : Accounting
위치 : NewYork
url 테스트 : http://localhost:8000/exam03/example01?dno=10&dname=Accounting&loc=NewYork
📂 MultiParamController.java
@GetMapping("/example01")
public String setDnoDname (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";
}
📂 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>
<%-- 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번 문제</h2>
<p>${dno}</p>
<p>${dname}</p>
<p>${loc}</p>
</div>
</body>
</html>
📌 실행결과
반응형
'Spring Boot > 스프링부트 예제' 카테고리의 다른 글
객체 형태로 변환하는 어노테이션 (0) | 2023.10.05 |
---|---|
JSP의 조건문 (1) | 2023.10.05 |
URL 매개변수를 ArrayList 형태로 View에 전달 (0) | 2023.10.05 |
Model (0) | 2023.10.04 |
Hello SpringBoot! (0) | 2023.10.04 |