IoT 빅데이터 응용 교육 과정_하계

[IoT 빅데이터 응용 교육 과정] 웹 애플리케이션 (23.06.26_2)

연지양갱 2023. 6. 26. 15:52
728x90
반응형
SMALL

교재

https://thebook.io/080266/0157/

 

스프링 코딩 공작소: 5.3 @RequestMapping을 이용한 요청 매핑 경로 설정

더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.

thebook.io

 

5장

 

 

 

 

 

@Requestmapping

속성 타입 설명
value String 기본 매핑 경로 이름
method RequestMethod 매핑할 HTTP 요청 방식(GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE)
headers String 매핑된 요청의 헤더
name String 해당 매핑에 이름 지정
params String 매핑된 요청 매개변수
path String 서블릿 환경에서만 경로 매핑 URL
consumes String 매핑된 요청의 소비 가능한 미디어 유형
produces String 매핑된 요청의 생산 가능한 미디어 유형

 

 

ReqeustMapping 

URL에 매핑되어 있는 것을 처리하기 위해  Method를 사용함

@RequestMapping(value="/exam02", method=RequestMethod.GET)

 

example02Controller.java

=> controller Mapping 예제 코드

package com.springmvc.chap05;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="/exam02", method=RequestMethod.GET)
//@RequestMapping("/exam02")도 가능
public class example02Controller {

	@RequestMapping
	public void requestMethod() {
		System.out.println("RequestMapping 예제임");
		System.out.println("웹 요청 URL은 /exam02 입니다.");
	}
}

원래 했던 내용과 동일함을 보여줌

 

bookController.java

package com.springmvc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.springmvc.domain.Book;
import com.springmvc.service.BookService;

@Controller //클라이언트에서 요청이 오면 처리역할을 담당
@RequestMapping("/books")
public class BookController {
	@Autowired // setter를 하지 않아도 외부 컴포넌트를 불러올 수 있음
	private BookService bookservice; // 저장소 객체인 BookRepository로 직접 접근하지 않고 서비스 객체로 저장소에 접근 -> 데이터베이스와 직접 연결 X
	
	@RequestMapping
	public String requestBookList(Model model) {
		List<Book> list= bookservice.getAllBookList(); // getAllBookList()를 가지고 옴
		model.addAttribute("bookList", list); // 모델에 booklist라는 키에 booklist를 저장
		return "books"; // view 이름, books.jsp
	}
	
}

 

 

reqeustmethod.GET : 기본으로 적용되어 있으니까 생략 가능

 

GET : 조회, 데이터를 받기 위해서 사용

POST : 데이터를 처리, 요청 기능이 추가됨

 

GET이 기본으로 되어 있기 때문에 POST일 때에만 추가됨

 

 

5.3.5. 메소드 수준의 @Reqeustmapping 단순화

애너테이션 설명 method 속성 사용
@GetMapping 매핑할 HTTP 요청 방식이 GET인 경우 method = RequestMethod.GET
@PostMapping 매핑할 HTTP 요청 방식이 POST인 경우 method = RequestMethod.POST
@PutMapping 매핑할 HTTP 요청 방식이 PUT인 경우 method = RequestMethod.PUT
@DeleteMapping 매핑할 HTTP 요청 방식이 DELETE인 경우 method = RequestMethod.DELETE
@PatchMapping 매핑할 HTTP 요청 방식이 PATCH인 경우 method = RequestMethod.PATCH

 

GetMapping

package com.springmvc.chap05;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

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

    @GetMapping("/exam04")
    public void requestMethod() {
        System.out.println("@RequestMapping 예제입니다.");
        System.out.println("웹 요청 URL은 /home/exam04 입니다.");
    }
}

 

 

 

 

 

요청 처리 메소드와 모델 유형

 

@RequestMapping(...)
public String 메서드 이름() {
    // 모델(객체)에 응답 데이터 저장
    return "뷰 이름";
}

모델 : 사용자의 웹 요청을 처리한 결과 데이터를 관리하고 전달

뷰 : 처리된 결과 데이터를 웹 브라우저에 출력하는 웹페이지 역할

모델(&뷰) 클래스 설명
Model 데이터(또는 객체) 정보를 저장하는 데 사용합니다.
ModelMap 데이터(또는 객체) 정보를 저장하는 데 사용합니다.
ModelAndView 모델 정보 및 뷰 정보를 저장하는 데 사용합니다.

** ModelAndView : 모델이랑 뷰랑 같이 씀

 

 

 

모델 인터페이스를 이용한 메소드 작성

Model addAttribute(String attributeName, Object attributeValue)

• 역할: 제공된 이름으로 제공된 속성을 등록합니다.
• 매개변수:
  - attributeName: 모델 속성 이름(null이 될 수 없음)
  - attributeValue: 모델 속성 값(null이 될 수 있음)

 

>> 컨트롤러가 /home/exam05라는 url로 들어가면

>> webpage05.jsp를 불러옴

 

 

 

 

ModelMap 클래스를 이용한 메소드 작성

model객체에 addAttribute()메소드에 담아 전달

 

ModelMap addAttribute(String attributeName, Object attributeValue)

• 역할: 지정된 이름(attributeName)과 속성(attributeValue)을 등록합니다.
• 매개변수:
  - attributeName: 모델 속성의 이름(null이 될 수 없음)
  - attributeValue: 모델 속성의 값(null이 될 수 있음)

attributeName

attributeValue

를 이용하여 값을 보냄

 

 

 

modelandview

setViewName() 메소드로 뷰 이름을 설정함

ModelAndView addObject(String attributeName, Object attributeValue)

• 역할: 지정된 이름(attributeName)으로 제공된 속성(attributeValue)을 등록합니다.
• 매개변수:
  - attributeName: 모델 속성의 이름(null이 될 수 없음)
  - attributeValue: 모델 속성의 값(null이 될 수 있음)
void setViewName(String viewName)

• 역할: ModelAndView를 위한 뷰 이름을 설정합니다.
• 매개변수:
  - viewName: 뷰 이름

 

 

 

 

bookMarket 프로젝트 

Bookcontroller.java

package com.springmvc.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.springmvc.domain.Book;
import com.springmvc.service.BookService;

@Controller //클라이언트에서 요청이 오면 처리역할을 담당
@RequestMapping("/books")
public class BookController {
	@Autowired // setter를 하지 않아도 외부 컴포넌트를 불러올 수 있음
	private BookService bookService; // 저장소 객체인 BookRepository로 직접 접근하지 않고 서비스 객체로 저장소에 접근 -> 데이터베이스와 직접 연결 X
	
//	@GetMapping("/all")
//	public String requestBookList(Model model) {
//		List<Book> list= bookservice.getAllBookList(); // getAllBookList()를 가지고 옴
//		model.addAttribute("bookList", list); // 모델에 booklist라는 키에 booklist를 저장
//		return "books"; // view 이름, books.jsp
//	}
	
	
//    @GetMapping
//    public String requestBookList(Model model) {
//        List<Book> list = bookService.getAllBookList();
//        model.addAttribute("bookList", list);
//        return "books"; 
//    }
	
	@GetMapping("/all") // URL => books/all
	public ModelAndView reqeustMethod(Model model) { // modelandview로 바꾸기
		List<Book> list= bookService.getAllBookList();
		ModelAndView mav = new ModelAndView(); // modelandview 객체 생성
		mav.addObject("bookList", list); // modelandview객체의 bookList 라는 객체를 생성하고 list 데이터를 추가
		mav.setViewName("books"); // 보여주는 view(jsp파일)의 이름이 books
		return mav; // return
	}
	
	
}

 

 

 

 

 

 

 

 

 

반응형