본문 바로가기
풀스택/Spring

4. spring @Controller , @RequestMapping 기본 활용 예제

by woohyun22 2019. 3. 24.

https://github.com/jeongwoohyunn/hellospring


예제는 hellospring 예제 활용 


2번의 maven 프로젝트로 설정, 라이브러리와 webapp을 맞춰준뒤 진행하기


hellosrping/webapp/WEB-INF/spring-servlet 에서 베이스 패키지를 지정후에 local에서 주소 검색후 들어갈 수 있다.


1. 메서드 단독 매핑 


1
2
3
4
5
6
7
8
9
10
@Controller
public class MainController {
 
    @ResponseBody
    //request mapping : 메서드에만
    //메서드 단독 매핑
    @RequestMapping({"/main/",""})
    public String main() {
        return "MainController : main()";
    }
cs


http://localhost:8080/hellospring/main 이나, http://localhost:8080/hellospring

으로 매핑되어 들어가진다. RequestMapping의 ""은 아무것도 없을때를 나타냄

여러개 동시 매핑가능


2. 타입과 메서드 같이 매핑


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping(value = "/join", method = RequestMethod.GET)      
    public String join() {
        return "/WEB-INF/views/join.jsp";
    }
    
    //ModelAttribute - 
    //post 방식으로는 못들어온다.(접근 불가)
    @ResponseBody
    @RequestMapping(value = "/join",method=RequestMethod.POST)
    public String join(@ModelAttribute UserVo userVo) {
        System.out.println(userVo);
        return "UserController : join()";
    }
cs


/user/join 시 위의 조인은 join.jsp Get방식으로 넘어간다.

밑의 조인은 @ModelAttribute로 UserVo에 값을 가지고 간다. 


3. @RequestParam -  파라미터 매핑, @PathVariable - URL 패스기반 파라미터 매핑


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package com.douzone.hellospring.controller;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
 
@Controller
@RequestMapping("/board")
public class BoardController {
 
    @ResponseBody
    @RequestMapping("/write")
    public String write(@RequestParam(value = "name", required = falseString name) {
//    public String write(@RequestParam("name")String name) { 하나만 넣을땐 value생략가능, required는 param값을 아무것도 안넘겨줘도 오류가 안뜨게해줌
        // name이라는 이름으로 값이들어오면 값을 넣어준다.
        System.out.println(name);
        return "BoardController : write()";
    }
 
    @ResponseBody
    @RequestMapping("/delete")
    public String delete(@RequestParam(value = "no", required = falselong no) {// 직접 타입을 받을수 있다.
//    public String delete(@RequestParam(value = "no",required=false) Long no) {long타입으로 받으면 default일때 어떤값을 넣어줘야될지 모르니 객체를 넣어서 null값을 받아준다.
        System.out.println(no);
        return "BoardController : delete()";
    }
 
    // http://localhost:8080/hellospring/board/write?name=woo
    // 이 방법을 추천
    @ResponseBody
    @RequestMapping("/write")
    public String write(@RequestParam("e"String email, @RequestParam(value = "name", required = falseString name,
            @RequestParam String password,
            // 명시적으로 해주는 습관 방식별
            // 밑에 파람을 추천
            @RequestParam(value = "content", required = true, defaultValue = ""String content) {
        System.out.println("e:" + email);
        System.out.println("name:" + name);
        System.out.println("password:" + password);
        System.out.println("content:" + content);
        return "BoardController : delete()";
    }
 
    @ResponseBody
    @RequestMapping("/view")
    public String view(@RequestParam(value = "no", required = true, defaultValue = "0") Long no) {
        System.out.println(no);
        return "BoardController:view()";
    }
    
    //물음표 안쓰고 값
    @ResponseBody
    @RequestMapping("/view2/{no}")
    public String view2(@PathVariable("no") Long no) {
        System.out.println(no);
        return "BoardController:view()";
    }
    
    //http://localhost:8080/hellospring/board/view3/a/10
    @ResponseBody
    @RequestMapping("/view3/{id}/{no}")
    public String view3(
        @PathVariable("no") Long no,
        @PathVariable("id"String id) {
        System.out.println(no);
        System.out.println(id);
        return "BoardController:view()";
    }
}
 
cs


@RequestParam은 http에서 요청한 파라미터를 메소드 파라미터에 넣어주는 어노테이션으로

required : false 면 null값이들어가도 오류가 나지않지만, true일때는 정보를 꼭 넣어 줘야된다.

defaultValue : 값이 null일때 defalult값으로 설정가능


@PathVariable : URL에서 쿼리 스트링대신, 패스형식으로 풀어쓴다.

ex)/board/view?no=10 ----->/board/view/10


@RequestMapping("/view3"/{id}/{no}) 은 

http://localhost:8080/hellospring/board/view3/a/3 처럼 그냥 ?=없이 그냥 쓰면된다.




728x90

댓글