jsp 연동 - eunja511005/Tutorial GitHub Wiki

0. 참고 싸이트

https://www.baeldung.com/spring-boot-jsp


1. porm.xml파일에서 jasper와jstl 의존성 추가

	<!-- JSP 페이지를 컴파일하고 렌더링할 수 있도록 tomcat-embed-jasper 종속성 포함 -->
	<dependency>
	    <groupId>org.apache.tomcat.embed</groupId>
	    <artifactId>tomcat-embed-jasper</artifactId>
	    <scope>provided</scope>
	</dependency>		
		
	<!-- JSP 페이지에 필요한 JSTL 태그 지원을 위해 종속성 포함 -->
        <dependency> 
           <groupId>javax.servlet</groupId> 
           <artifactId>jstl</artifactId>         
        </dependency>	


2-1. application.properties

     spring.mvc.view.prefix=/WEB-INF/
     spring.mvc.view.suffix=.jsp

we place our JSP files in the ${project.basedir}/main/webapp/WEB-INF/jsp/ directory.

2-2. Application 클래스에서 setupViewResolver클래스 생성 후 Prefix,Suffix 경로 지정해준다음 빈 등록

     @Bean
     public InternalResourceViewResolver setupViewResolver() {
     
            InternalResourceViewResolver resolver = new InternalResourceViewResolver();
     
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".jsp");
            return resolver;
     }

2-3. WebMvcConfigurer는 자동구성된 스프링 MVC 구성에 Formatter, MessageConverter등 일부 기능만 추가 등록할 수 있다.

   WebMvcRegistrations는 RequestMappingHandlerMapping, RequestMappingHandlerAdapter와 ExceptionHandlerExceptionResolver를 재정의할 때 사용한다.
     @Configuration
     public class WebMvcConfig implements WebMvcConfigurer, WebMvcRegistrations {
     }

자동구성된 스프링 MVC 구성을 개발자가 완벽히 제어하는 방법은 다음과 같다.
     @Configuration   
     @EnableWebMvc   
     public class WebMvcConfig {}
--


</code></pre><!--EndFragment-->
</body>
</html>


3. 테스트 페이지 호출을 위한 controller, service, serviceimpl 작업

package com.eun.tutorial.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.eun.tutorial.service.BookService;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

@Slf4j
@RequiredArgsConstructor
@Controller
@RequestMapping("/book")
public class MyWebMvcController {
	
	private static final Logger logger = LoggerFactory.getLogger(MyWebMvcController.class);
	private final BookService bookService;

	@GetMapping("/viewBooks")
    public String viewBooks(Model model) {
        model.addAttribute("books", bookService.getBooks());
        return "view-books";
    }
}
package com.eun.tutorial.service;

import java.util.Collection;

import com.eun.tutorial.dto.Book;

public interface BookService {
    Collection<Book> getBooks();
    Book addBook(Book book);
}
package com.eun.tutorial.service;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.springframework.stereotype.Service;

import com.eun.tutorial.dto.Book;

@Service
public class BookServiceImpl implements BookService {

	@Override
	public Collection<Book> getBooks() {
		List<Book> bookList = new ArrayList<Book>();
		Book book = Book.builder()
				.isbn("isbn1")
				.name("name1")
				.author("author1")
				.build();
		bookList.add(book);
		return bookList;
	}

	@Override
	public Book addBook(Book book) {
		// TODO Auto-generated method stub
		return null;
	}

}


4. 테스트 jsp 만들기

1. 폴더 생성 : /Tutorial/src/main/webapp/WEB-INF
2. jsp 파일 생성 : view-books.jsp
<%@page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
    <head>
        <title>View Books</title>
        <link href="<c:url value="/css/common.css"/>" rel="stylesheet" type="text/css">
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>ISBN</th>
                    <th>Name</th>
                    <th>Author</th>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${books}" var="book">
                    <tr>
                        <td>${book.isbn}</td>
                        <td>${book.name}</td>
                        <td>${book.author}</td>
                    </tr>
                </c:forEach>
            </tbody>
        </table>
    </body>
</html>


5. css 파일 만들기

1. 폴더 생성 : /Tutorial/src/main/resources/static/css
2. css 파일 생성 : common.css
table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
}

td, th {
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}


6. 결과

http://localhost:8080/book/viewBooks

image

⚠️ **GitHub.com Fallback** ⚠️