본문 바로가기

Spring

[Spring] 스프링의 URL기초 총 정리 + 어노테이션 예시 코드

 

 

 

Spring Framework에서 URL은 웹 애플리케이션의 라우팅을 처리하는 중요한 역할을 하고 있는데요?

클라이언트의 요청을 적절한 메서드로 매핑하는 기능을 수행하게 됩니다.

 

 

 

 

개념

1. RequestMapping 어노테이션

-Spring에서는 @RequestMapping 어노테이션을 사용하여

특정 URL 패턴에 대한 HTTP 요청을 Java메서드에 매핑합니다.

 

2. HTTP 메서드 지정

- @ReQuestMapping에서는 HTTP 메서드를 지정하는 속성도 있습니다.(method=RequesyMethod.GET)

하지만 Spring 4.3부터는 보다 명확하게 표현하기 위해 @GetMapping, @PostMapping, @PutMapping등의

어노테이션이 도입되었습니다. 오늘 예시 코드는 4.3이하로 준비했으므로 참고해주세요.

 

3. URL 패턴 매칭

- Spring MVC는 URL 패턴 매칭에 유연성을 제공합니다.

  • Ant스타일: /example/*, /example/**,/example?
  • 정규식: {spring: [a-z]+}
  • 플레이스 홀더: {name}

 

4. Redirect와 Forward

- Redirect: return "redirect:/url"

- Fowarding: return "forward:/url"

 

 

 

위와 같은 방법들로 스프링(Spring)에서는 복잡한 웹 애플리케이션의

요구사항과 유지보수를 잘 처리 할 수 있도록 도와줍니다.

 

 

.

 

 

이 URL를 테스트할 수 있는 프로그램도 있는데요?

바로 포스트맨입니다. 아래 링크 달아 두겠습니다.

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 25 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

 

 

 

 

URL방법

1. @RequestMapping 어노테이션

@Controller
@RequestMapping("/home")
public class HomeController {

    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello Spring MVC");
        return "hello";
    }
 }

- 위 예제는 가장 기본적인 방법으로, "/home/hello" URL로 요청하면 hello메서드가 실행됩니다.

 

@RequestMapping("/request02")
public void request02(HttpServletRequest req) {
    HttpSession session = req.getSession();
}

@RequestMapping("/request03")
public void request03(HttpSession session) {
    //session을 한번에 불러올 수 있다.
}

@RequestMapping 어노테이션를 사용하는 이유

1. request의 데이터를 추출하기 위해서
2. 여기에는 IP 혹은 URL에 대한 정보 또한 담겨있다.
2. session을 가져오기 위해서
3. method의 변수가 깔끔해보인다.

 

2. @PathVariable 어노테이션

- @PathVariable 어노테이션은 URL 경로의 일부를 메서드 파라미터로 캡처하는데 사용되는 어노테이션입니다.

 

▼Controller.java

@RequestMapping("/request06/{id}/{name}")
public String pathVariable02(@PathVariable Long id, @PathVariable(value = "name") String nm) {
   System.out.println("id: " + id);
   System.out.println("name: " + nm);

   return "study/study03";
}

▼study/study03.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Huiyeon 블로그</title>
</head>
<body>
${id} 와 ${name}입니다.
</body>
</html>

- http://localgost:{포트번호}/request06/{id}/{name} URL를 요청하면 study03.jsp(View)가 실행되는 것을

확인하실 수 있습니다.

- @PathVariable 어노테이션을 통해 {id}부분은 Long id파라미터로, {name}부분은 String nm파라미터로 값을 전달하게 됩니다.

 

 

3. @RequestParam 어노테이션

//mapping: /request10?id=1000
@RequestMapping("/request10")
public String requestParam01(@RequestParam Long id) {

   //만약 id의 request값을 없애면 어떻게 될 것인가?
   //requestParam변수를 사용시, 변수값이 존재하지 않으면 400 error가 발생된다.
   System.out.println("id: " + id);
   return "study/study03";
}


@RequestMapping("/request11")
public String requestParam02(@RequestParam(required = false) String name) {

   //requestParam의 null을 허용하기 위해서는 required를 false로 정의하면 된다.
   //required는 생략이 가능하다
   //required가 생략이 될 경우, true로 설정이 된다.

   System.out.println("name" + name);
   return "study/study03";
}

- @RequestParam 어노테이션은 쿼리 파라미터를 메서드 파라미터로 바인딩하는데 사용됩니다.

- 만약 "/request10" URL에 "id" 쿼리 파라미터가 없다면 400에러가 발생합니다. 

- 하지만 "/request11" URL에 "id" 쿼리 파라미터가 없더고 400에러가 발생하지 않고 false값으로 대체됩니다.

 

 

 

 

감사합니다🐇

 

반응형