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 = false) String 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 = false) long 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 = false) String 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 처럼 그냥 ?=없이 그냥 쓰면된다.
'풀스택 > Spring' 카테고리의 다른 글
Spring, Srping boot 차이 (0) | 2019.04.18 |
---|---|
3. spring 에서 주로 사용하는 @설명 (0) | 2019.03.22 |
2. Dnamic web project 생성후 maven project로 변경 및 설정 (0) | 2019.03.22 |
1. spring 설명 (0) | 2019.03.22 |
form validation 유효성검사 예제 (0) | 2019.03.03 |
댓글