* 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 |