쌍용교육(JAVA)/SpringBoot

쌍용교육 -JSP수업 87일차 ch13SpringTiles(1)

구 승 2024. 6. 24. 14:40

ch12에서 사용한 application.yml을 src/main/resources에 복붙

 

kr.spring.config=> AppConfig

package kr.spring.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesView;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;

@Configuration
public class AppConfig implements WebMvcConfigurer{
	
	@Bean
	public TilesConfigurer tilesConfigurer() {
		final TilesConfigurer configurer = new TilesConfigurer();
		
		//해당 경로에 tiles.xml 파일을 넣음(타일스 설정파일을 넣기 위해서 경로를 지정)
		configurer.setDefinitions(new String[] {"/WEB-INF/tiles-def/tilesdef.xml"});
		configurer.setCheckRefresh(true);
		return configurer;
	}
	@Bean
	public TilesViewResolver tilesViewResolver() {
		final TilesViewResolver tilesViewResolver = new TilesViewResolver();
		tilesViewResolver.setViewClass(TilesView.class);
		return tilesViewResolver;
	}
}

WEB-INF=>tiles-def =>

tilesdef.xml
0.00MB

 

 

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">

<tiles-definitions>
	<definition name="main" template="WEB-INF/views/template/layout.jsp">
		<put-attribute name="title" value="Spring Tiles Example"/>
		<put-attribute name="header" value="/WEB-INF/views/template/header.jsp"/>
		<put-attribute name="menu" value="/WEB-INF/views/template/menu.jsp"/>
		<put-attribute name="body" value="/WEB-INF/views/main_view.jsp"/>
		<put-attribute name="footer" value="/WEB-INF/views/template/footer.jsp"/>
		
	</definition>
</tiles-definitions>

 

WEB-INF=>views=>template=>header.jsp,menu.jsp,footer.jsp

 

footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<div align="center" style="background:yellow;">
	&copy; Spring Tiles Example
</div>

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<h2 align="center">Spring Tiles Example!</h2>

menu.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<ul>
	<li><a href="main.do">main</a></li>
	<li><a href="company.do">회사소개</a></li>
	<li><a href="product.do">제품소개</a></li>
</ul>

views/template=> layout.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><tiles:getAsString name="title"/></title>
</head>
<body>
<table style="width:100%">
	<tr height="100" valign="middle" bgcolor="#FFFFFF">
		<td colspan="2"><tiles:insertAttribute name="header"/></td>
	</tr>
	<tr height="500">
		<td width="15%" valign="top">
			<tiles:insertAttribute name="menu"/>
		</td>
		<td width="85%" align="center">
			<tiles:insertAttribute name="body"/>
		</td>
	</tr>
	<tr>
		<td colspan="2"><tiles:insertAttribute name="footer"/></td>
	</tr>
</table>
</body>
</html>

views=>main_view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<b>Main page Body</b>

src/main/java=>kr.spring.tiles.controller => TilesController

package kr.spring.tiles.controller;

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

@Controller
public class TilesController {
	@RequestMapping("/")
	public String init() {
		return "redirect:/main.do";
	}
	@RequestMapping("/main.do")
	public String viewMain() {
		return "main"; //Tiles 식별자
	}
}

TileController.java의 return "main"; 

tilesdef.xml의 <definition name="main" ~~~>

과 같은 main으로 일치해야된다.

맨위 header, 왼쪽 menu, 가운데 main,아래 footer

TilesController 내용추가

@RequestMapping("/company.do")
	public String viewCompany() {
		return "company"; //Tiles 식별자
	}

tilesdef.xml 내용추가

<definition name="company" extends="main"> <!-- main을 상속받는다. -->
		<put-attribute name="title" value="회사소개"></put-attribute>
		<put-attribute name="body" value="/WEB-INF/views/company_view.jsp"/>
	</definition>

views=>company_view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
회사소개 내용

회사소개를 누르면 main이 바뀐다.

TilesController 내용추가

@RequestMapping("/product.do")
	public String viewProduct() {
		return "product"; //Tiles 식별자 
	}

tilesdef.xml 내용추가

<definition name="product" extends="main"> <!-- main을 상속받는다. -->
		<put-attribute name="title" value="제품소개"/>
		<put-attribute name="body" value="/WEB-INF/views/product_view.jsp"/>
	</definition>

views=>product_view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
제품소개 내용