[Spring] Tiles

hyunsooSongยท2022๋…„ 5์›” 30์ผ
0

Spring Boot

๋ชฉ๋ก ๋ณด๊ธฐ
2/3
post-thumbnail

๐Ÿงฉ Tiles

๐Ÿ“œ Tiles๋ž€?

  • Apache Tiles Project์—์„œ ๊ฐœ๋ฐœํ•œ layout templating framework ์ด๋‹ค.
    http://tiles.apache.org/

1. Maven Dependency

  • pom.xml
<dependency>
	<groupId>org.apache.tiles</groupId>
	<artifactId>tiles-jsp</artifactId>
	<version>3.0.8</version>
</dependency>

2. Spring ์„ค์ •

๐Ÿ“œ TilesConfigurer๋ฅผ ์ด์šฉํ•ด์„œ Tiles ์„ค์ • ํŒŒ์ผ ์ง€์ •

๐Ÿงจ View resolving์„ ์œ„ํ•ด TilesViewResolver ์‚ฌ์šฉ
  • JavaConfig
@Configuration
public class TilesConfig {

	@Bean(name="tilesConfigure")
	public TilesConfigurer tilesConfigurer() {
		final TilesConfigurer configurer = new TilesConfigurer();
		configurer.setDefinitions(new String[]{"/WEB-INF/jsp/tiles/template/tilesdef.xml"});
		configurer.setCheckRefresh(true);
		return configurer;
	}

	@Bean(name="viewResolver")
	public TilesViewResolver tilesViewResolver() {
		TilesViewResolver resolver = new TilesViewResolver();
		resolver.setViewClass(TilesView.class);
		resolver.setOrder(0);
		return resolver;
	}
}

  • Xml์„ค์ •
<bean id="tilesConfigurer"
      class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
  	<property name="definitions">
      <list>
        <value>/WEB-INF/jsp/tiles/template/tilesdef.xml</value>
      </list>
  </property>
</bean>
<bean id="tilesViewResolver"
      class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" 
      p:order="1" />

3. Layout Template

๐Ÿ“œ tiles Tag

  • <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
  • <tiles:insertAttribute /> : ์™ธ๋ถ€ content ์‚ฝ์ž… ์œ„์น˜ ์ง€์ •
  • <tiles:getAsString /> : ์™ธ๋ถ€ text ์‚ฝ์ž… ์œ„์น˜ ์ง€์ •

์˜ˆ์‹œ

<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>

<html>
<head>
	<title><tiles:getAsString name="title" /></title>
</head>
<body>
	<tiles:insertAttribute name="header" />
	<tiles:insertAttribute name="menu" />
	<tiles:insertAttribute name="body" />
	<tiles:insertAttribute name="footer" />
</body>
</html>

4. Tiles Definition

๐Ÿ“œ <tiles-definitions> tag๋ฅผ ์ด์šฉํ•˜์—ฌ layout๊ณผ view ์ •์˜

  • <definition> ์†์„ฑ
    1. template : layout template view jsp ์ง€์ •
    2. extends : ๋‹ค๋ฅธ layout ํ™•์žฅํ•˜์—ฌ ์ƒˆ๋กœ์šด layout ์ •์˜

  • <put-attribute> : view content ์ƒ์„ฑํ•  jsp file ์ง€์ •

์˜ˆ์‹œ

  • tilesdef.xml
<tiles-definitions>
	<definition name="base_layout"
		template="/WEB-INF/jsp/tiles/template/layout.jsp"> 
		<put-attribute name="title" value="titleName" type="string"/>
		<put-attribute name="header" value="/WEB-INF/jsp/tiles/header.jsp" />
		<put-attribute name="footer" value="/WEB-INF/jsp/tiles/footer.jsp" />
		<put-attribute name="menu" value="/WEB-INF/jsp/tiles/menu.jsp" />
	</definition>
	
	 <definition name="index" extends="base_layout">
		<put-attribute name="body"
			value="/WEB-INF/jsp/tiles/index.jsp" />
	</definition> 
	
	<definition name="tiles/*/*" extends="base_layout">
		<put-attribute name="body"
			value="/WEB-INF/jsp/tiles/{1}/{2}.jsp" />
	</definition> 
</tiles-definitions>

5. Tiles Controller

๐Ÿ“œ @Controller, @RequestMapping, @GetMapping ์‚ฌ์šฉ


  • index.jsp๋กœ Mapping
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class IndexController {

	@GetMapping(value= {"", "index"})
	public String index() {
		return "index";
	}
}

6. View prefix & suffix ์„ค์ •

๐Ÿ“œ application.properties

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
profile
๐Ÿฅ• ๊ฐœ๋ฐœ ๊ณต๋ถ€ ์ค‘ ๐Ÿฅ•

0๊ฐœ์˜ ๋Œ“๊ธ€