티스토리 뷰
스프링 MVC 애플리케이션의 계층적 구조
웹 애플리케이션의 계층적 구조
계층적 구조
계층적 구조의 구현 과정
도서 쇼핑몰의 계층적 공통 모듈 만들기
도서 쇼핑몰 애플리케이션의 계층적 구조
BookController.java 생성[Controller package 안에 생성]
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
public class BookController {
@Autowired
private BookService bookService;
@RequestMapping(value="/book", method=RequestMethod.GET)
public String requestBookList(Model model)
{
List<Book> list = bookService.getAllBookList();
model.addAttribute("bookList", list);
return "books";
}
}
servlet-context.xml
<!-- Controller, Service, REquestMapping 등 객체를 여기서 다 관리하기 때문에 *(아스트릭 사용) -->
<context:component-scan base-package="com.springmvc.*" />
views>books.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<link href="<c:url value="/resources/css/bootstrap.min.css"/>" rel="stylesheet">
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<nav class="navbar navbar-expand navbar-dark bg-dark">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="./home">Home</a>
</div>
</div>
</nav>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">도서 목록</h1>
</div>
</div>
<div class="container">
<div class="row" align="center">
<c:forEach items="${bookList}" var="book">
<div class="col-md-4">
<h3>${book.name}</h3>
<p>${book.author}
<br>${book.publisher} | ${book.releaseDate}
<p align=left>${fn:substring(book.description,0,100)}...
<p>${book.unitPrice}원
</div>
</c:forEach>
</div>
</div>
<hr>
<footer>
<p>© BookMarket</p>
</footer>
</body>
</html>
컨트롤러 구현
컨트롤러
컨트롤러
컨트롤러 구현 과정
컨트롤러 정의
@Controller를 이용한 컨트롤러 정의
<context:component-scan> 요소로 컨트롤러 등록
package com.springmvc.chap05;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class Example01Controller {
@RequestMapping(value="/exam01", method=RequestMethod.GET)
public void requestMethod()
{
System.out.println("@Controller 예제입니다.");
}
}
package com.springmvc.chap05;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class Example02Controller {
@RequestMapping(value="/exam02", method=RequestMethod.GET)
public void requestMethod()
{
System.out.println("exam2입니다.");
}
}
@RequestMapping을 이용한 요청 매핑 경로 설정
컨트롤러에 @RequestMapping 적용
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 com.springmvc.domain.Book;
import com.springmvc.service.BookService;
@Controller
@RequestMapping("books") //추가
public class BookController {
//autowired 자동으로 변수에 대입을 해준다. 라고 생각
@Autowired
private BookService bookService;
//매핑에서 value값을 찾아서 반환해준다.
@RequestMapping //수정
public String requestBookList(Model model)
{
List<Book> list = bookService.getAllBookList();
model.addAttribute("bookList", list);
return "books";
}
@RequestMapping("/all") //수정
public String requestAllBooks(Model model)
{
List<Book> list = bookService.getAllBookList();
model.addAttribute("bookList", list);
return "books";
}
}
메서드 수준의 @RequestMapping 단순화
porm.xml 에서 버전을 변경 후
BookControler.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 com.springmvc.domain.Book;
import com.springmvc.service.BookService;
@Controller
@RequestMapping("books") //추가
public class BookController {
//autowired 자동으로 변수에 대입을 해준다. 라고 생각
@Autowired
private BookService bookService;
//매핑에서 value값을 찾아서 반환해준다.
@GetMapping //수정
public String requestBookList(Model model)
{
List<Book> list = bookService.getAllBookList();
model.addAttribute("bookList", list);
return "books";
}
@GetMapping("/all") //수정
public String requestAllBooks(Model model)
{
List<Book> list = bookService.getAllBookList();
model.addAttribute("bookList", list);
return "books";
}
}
'정리 노트 > Spring' 카테고리의 다른 글
Spring Chapter7 [15-5] (0) | 2024.01.19 |
---|---|
Spring Chapter5~Chapter6 [15-4] (0) | 2024.01.18 |
Spring Chapter3 [15-2] (0) | 2024.01.16 |
Spring Chapter1~Chapter2 & 개발 환경 설정[15-1] (0) | 2024.01.15 |
Spring 환경 구축[14-5] (0) | 2024.01.12 |