본문 바로가기

SPRING

SPRING

요청 처리시 사용된 컴포넌트

org.springframework.web.servlet.ModelAndView

  • ModelAndView는 Controller의 처리 결과를 보여줄 view와 view에서 사용할 값을 전달하는 클래스이다.

 

@Configuration

자바컨피그파일이구나 하면서 알려줌 

 

annotation-driven

-> 해당 어노테이션을 인식하라는 설

-> bean 등록 

-> ex )

<tx:annotation-driven transaction-manager="transactionManager" /> 

 

@Controller

이 클래스가 Controller인지 알려줌.

맵핑을 위해 @RequestMapping 어노테이션을 클래스나 메소드 위에 사용.

요청이 들어왔을때 어떤  URL로 들어온 요청인지를 알아내서

실제로 controller가 처리해야할 내용이 무엇인지 그 컨트롤러에서 구현하고있는메소드가 무엇인지 알아내야함 

 

HTTP요청과 이를 다루기 위한 Controller의 메서드를 연결하는 어노테이션 

 

@RequestMapping("url")

클라이언트 요청(url)에 맞는 클래스 or 메서드를 연결 시켜주는 어노테이션

@RequestMapping("/meber") : ("/member") 라는 url로 POST 방식으로 요청이 들어왔다 

                                        실제 URL

 

[위치에 따른 해석]

- 클래스 레벨 : 공통 주소(프론트 컨트롤러 패턴 지정)

- 메서드 레벨 : 공통 주소 외 나머지 주소

 

 단, 클래스레벨에 @RequestMapping이 존재하지 않는다면

- 메서드 레벨 : 단독 요청 처리 주소

 

 

 [작성법에 따른 해석]

 

1)  @RequestMapping("url")

    -> 요청 방식(GET/POST) 관계 없이 url이 일치하는 요청 처리

 

 

 2)  @RequestMapping(value = "url", method = RequestMethod.GET | POST)

-> 요청 방식에 따라 요청 처리

 

 

 ** 메서드 레벨에서 GET/POST 방식을 구분하여 매핑할 경우 **

 

  @GetMapping("url")  /  @PostMapping("url")  사용하는 것이 일반적

  (메스드 레벨만 작성 가능!)

 

 

@RequestParam

@RequestParam("name속성값") 자료형 변수명

- 클라이언트 요청 시 같이 전달된 파라미터를 변수에 저장

-> 어떤 파라미터를 변수에 저장할지는 "name속성값"을 이용해 지정

 

[속성]

 value : input 태그의 name 속성값  (속성을 하나도 적지 않은 경우의 기본값)

 @RequestParam("inputEmail") == @RequestParam(value="inputEmail") 

 

required : 입력된 name 속성값이 필수적으로 파라미터에 포함되어야 되는지를 지정

required=true / required=false  (기본값 true)

required = flase일 때 파라미터가 없으면 null

 

defaultValue : required가 false인 상태에서 파라미터가 존재하지 않을 경우의 값을 지정

 

 

** @RequestParam을 생략하지만 파라미터를 얻어오는 방법 **

-> name 속성 값과 

   파라미터를 저장할 변수 이름을 동일하게 작성!

 

 

 

 

1
2
3
4
5
6
7
8
9
10
    @PostMapping(path = "/plus")
    public String plus(@RequestParam(name = "value1", required = trueint value1,
// URL 주소가 "/plus" 인 곳에서 파라미터 name이 value1 인 값을 int value1 변수에 넣어줄거다.
            @RequestParam(name = "value2", required = trueint value2, ModelMap modelMap)
//파라미터 name이 value2 인 값을 int value2 변수에 넣어줄거다.



{
        int result = value1 + value2;
 
        modelMap.addAttribute("value1", value1);
        modelMap.addAttribute("value2", value2);
        modelMap.addAttribute("result", result);
        return "plusResult";
cs

 

 

 

ModelMap

ex ) Model  등 여러가지 객체가 있다 

데이터를 맵 형식(K:V) 형태로 담아 전달하는 용도의 객체

request, session을 대체하는 객체

== req.setAttribute("loginMember", loginMember);

 

 

@ModelAttribute

@ModelAttribute VO타입 변수명

-> 파라미터 중 name 속성 값이 VO의 필드와 일치하면

  해당 VO 객체의 필드에 값을 세팅

 

 *** @ModelAttribute 를 이용해서 객체에 값을 직접 담는 경우에 대한 주의사항 ***

 반드시 필요한 내용!

 - VO 기본 생성자

- VO 필드에 대한 Setter   

 

Getter는 JSP - EL 사용 시 반드시 필요!

 

@PathVariable("value")

URL 경로에 포함되어 있는 값을 변수로 사용할 수 있게하는 역할

-> 자동으로 request scope에 등록됨 -> jsp에서 ${value} EL 작성 가능

요청 자원을 식별하는 경우 사용

  • @RequestMapping의 path에 변수명을 입력받기 위한 place holder가 필요함
  • place holder의 이름과 PathVariable의 name 값과 같으면 mapping 됨
  • required 속성은 default true 임

 

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Controller
public class GoodsController {
    @GetMapping("/goods/{id}")

    public String getGoodsById(@PathVariable(name="id"int id,
//id라는 name으로 넘어온 값을 int id변수에 받겠다
                               @RequestHeader(value="User-Agent", defaultValue="myBrowser"String userAgent,
                              HttpServletRequest request,
                              ModelMap model
                              ) {
 
 
        String path = request.getServletPath();
        
        System.out.println("id : " + id);
        System.out.println("user_agent : " + userAgent);
        System.out.println("path : " + path);
cs

 

 

 

 

 

 

 

 

 

'SPRING' 카테고리의 다른 글

Spring legacy project 생성 및 설정  (0) 2023.05.19
SPRING  (0) 2023.05.12
SPRING  (0) 2023.05.11
SPRING  (0) 2023.05.11
SPRING  (0) 2023.05.11