본문 바로가기

비트교육센터[전문가반]

Spring MVC [비트교육센터] _ 복습01

* RequestMapping 사용법

 

1) 하나의 url 맵핑하기

ex. url: "/main"

 

@ResponseBody

@RequestMapping("/main")

public String main() {

             return "MainController:main()";

}

 

2) 두개의 url 맵핑하기

ex. url: "" "/main"

 

@ResponseBody

@RequestMapping({"", "/main"})

public String main() {

             return "MainController:main()";

}

 

3) url redierct 하기

 

public String join(UserVo vo) {

             System.out.println(vo);

             return "redirect:/main"; //== return "redierct:/"

}

 

* Client 요청에 대한 param view 전달하는 방법

 

1) 기본형 : /hello url 요청이 왔을때, /WEB-INF/views/hello.jsp view 페이지를 응답해준다.

 

@RequestMapping("/hello")

public String hello() {

             return "/WEB-INF/views/hello.jsp";

}

 

2) Client 요청에 param 있는 경우 콘솔창에 param 값을 찍어내기

ex ../hello2?name=kabsung

 

@RequestMapping("/hello2")

public void hello2(String name){

             System.out.println(name);

            

}

 

3) param 있는 Client 요청을 ModelAndView 객체를 이용해서 view 페이지에 전달하기

ex ../hello2?name=kabsung

 

@RequestMapping("/hello3")

public ModelAndVieww hello3(String name){

             ModelAndView mav = new ModelAndView();

             mav.setViewName("/WEB-INF/views/hello.jsp");

             mav.addObject("name", name);

            

             return mav;

}

 

[hello.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

             <h1>Hello ${name }</h1>

</body>

</html>

 

4) 매개변수 Model 이용하여 param 값을 view 페이지로 전달하기

@RequestMapping("/hello4")

public String hello4(String name, Model model){

             model.addAttribute("name", name);

             return "/WEB-INF/views/hello.jsp";

 

}

 

5) RequestMapping url param 표현하기

  (RequestMapping url param 명과 @PathVariable() 변수명이 같아야한다.

             => 여기서는 no 으로 통일시켰다.)

            

@ResponseBody

@RequestMapping("/board/view/{no}")

public String view2(@PathVariable("no") int boardNo){

             return "param으로 넘어온 번호: " + boardNo

            

}

 

6) UserVo 객체의 필드를 post 받은경우 UserVo 클래스의 필드 get/set 존재하면 Spring post

   넘어온 값을 UserVo 필드에 알아서 set해준다.

 

(ex. joinform.jsp 에서 User 이름, 이메일, 패스워드를 입력받아 post 경우

<form id="join-form" name="joinForm" method="post" action="${pageContext.request.contextPath }/user/join">

          ...

</form>

)

 

@RequestMapping("/join")

public String join(UserVo vo) {

             System.out.println(vo);

             return "redirect:/";

}

 

 

* @ResponseBody 설정을 통한 문자열 출력하기

 

1) 기본형

 

@ResponseBody

@RequestMapping("/hello5")

public String hello5(){

             return "Hello";

}

 

2) Client 부터 넘어온 param 문자열 출력하기

 

@ResponseBody

@RequestMapping("/hello5")

public String hello5(String name){

             return "Hello " + name;

}

 

 

* 클래스명 위에 RequestMapping() 설정하여 메소드 명으로 컨트롤러 접근하기

(아래의 예제에서는 /guestbook/메소드명 으로 접근가능

 ex. ../guestbook/delete )

 

@Controller

@RequestMapping("/guestbook/*")

public class GuestbookController {

            

             @ResponseBody

             @RequestMapping()

             public String list() {

                           return "GuestbookController:list()";

             }

 

             @ResponseBody

             @RequestMapping()

             public String delete() {

                           return "GuestbookController:delete()";

             }

            

}

 

 

* @RequestMapping Optional 속성

 

1) value 속성: Client 부터 전달되는 url

 

@ResponseBody

@RequestMapping(value="/update")

public String update(@RequestParam("n") String name){

             /**

              * 만일 n이라는 이름으로 파라미터가 전달된지 않으면 400 bad request 오류 발생

              */

             System.out.println(name);

             return "UserController:update(...)";

}

 

2) method 속성: Client 부터 전달되는 url GET 또는 POST 방식일때만 해당 컨트롤러를 지정

 

2-1) /join GET방식일때만 해당 컨트롤러를 맵핑하기

 

@RequestMapping(value="/join", method=RequestMethod.GET)

public String join(){

 

             return "/WEB-INF/views/join.jsp";

}

 

2-2) /join POST방식일때만 해당 컨트롤러를 맵핑하기

 

@RequestMapping(value="/join", method=REquestMethod.POST)

public String(UserVo vo){

             System.out.println(vo);

            

             return "redierct:/";

}

 

 

* @RequestParam Optional 속성

 

1. defultValue 속성: 파라미터로 전달되는 값이 전달되지 않았을때 디폴트 설정

2. name 속성: 파라미터로 넘어오는 값을 name으로 지정

3. require 속성: require="false" 하면 "p로부터 전달되는 값이 반드시 넘어오지 않아도 된다."라는 의미

(default true이다.)

4. value 속성: name 같은 역할한다.(, 둘다 같이 쓰면 안된다.)

 

@ResponseBody

@RequestMapping(value="/update2")

public String update2(

                           @RequestParam(value="name", required=true, defaultValue="") String name,

                           @RequestParam(value="a", required=true, defaultValue="0") int age) {

             System.out.println("----" + name + "----" + age);

             return "UserController:update(...)";

}

'비트교육센터[전문가반]' 카테고리의 다른 글

Spring MVC [비트교육센터] _ 복습03  (0) 2021.04.22
Spring MVC [비트교육센터] _ 복습02  (0) 2021.04.21
JavaScript 복습02  (0) 2021.03.23
JavaScript 복습01  (0) 2021.03.22
2021.03.12 수업 내용 정리  (0) 2021.03.14