{"id":562,"date":"2013-09-30T08:00:21","date_gmt":"2013-09-29T23:00:21","guid":{"rendered":"http:\/\/www.beeete2.com\/blog\/?p=562"},"modified":"2018-02-21T22:49:04","modified_gmt":"2018-02-21T13:49:04","slug":"post-562","status":"publish","type":"post","link":"https:\/\/www.beeete2.com\/blog\/?p=562","title":{"rendered":"Spring MVC\u3067\u30d3\u30e5\u30fc\u306bApache Tiles\u3092\u4f7f\u3046"},"content":{"rendered":"<p>Spring MVC\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d3\u30e5\u30fc\u306fJSP\u307f\u305f\u3044\u3067\u3059\u306d\u3002<br \/>\nJSP\u3067\u3082\u554f\u984c\u306a\u3044\u306e\u3067\u3059\u304c\u3001\u305b\u3063\u304b\u304f\u306a\u306e\u3067Tiles\u3092\u4f7f\u3063\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u50d5\u306e\u5370\u8c61\u3067\u306fTiles\u306f\u3001\u305d\u308c\u81ea\u4f53\u304c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b7\u30b9\u30c6\u30e0\u3068\u3044\u3046\u3088\u308a\u3001\u69cb\u9020\u3092\u7ba1\u7406\u3067\u304d\u308b\u30b7\u30b9\u30c6\u30e0\u3068\u3044\u3046\u5370\u8c61\u3092\u6301\u3063\u3066\u3044\u307e\u3059\u3002<br \/>\n\u306a\u306e\u3067\u3001Tiles\u3067\u5404\u30d3\u30e5\u30fc\u306e\u69cb\u9020\u3092\u7ba1\u7406\u3057\u5b9f\u969b\u306e\u30d3\u30e5\u30fc\u306fJSP\u3067\u66f8\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>\u3067\u306f\u3001\u307e\u305a\u306fpom\u306bTiles\u306e\u4f9d\u5b58\u3092\u8ffd\u52a0\u3057\u3066\u3044\u304d\u307e\u3059\u3002<br \/>\n<!--more--><\/p>\n<h4>pom.xml\u306bTiles\u306e\u4f9d\u5b58\u3092\u8ffd\u52a0<\/h4>\n<p>pom.xml\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002<br \/>\n[xml]<br \/>\n    &lt;!&#8211; Tiles &#8211;&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.apache.tiles&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;tiles-api&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;2.2.2&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.apache.tiles&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;tiles-core&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;2.2.2&lt;\/version&gt;<br \/>\n      &lt;exclusions&gt;<br \/>\n      &lt;exclusion&gt;<br \/>\n      &lt;artifactId&gt;jcl-over-slf4j&lt;\/artifactId&gt;<br \/>\n      &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;<br \/>\n      &lt;\/exclusion&gt;<br \/>\n      &lt;\/exclusions&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.apache.tiles&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;tiles-jsp&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;2.2.2&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.apache.tiles&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;tiles-servlet&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;2.2.2&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.apache.tiles&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;tiles-template&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;2.2.2&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;taglibs&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;standard&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;1.1.2&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<\/p>\n<p>    &lt;!&#8211; slf4j &#8211;&gt;<br \/>\n    &lt;dependency&gt;<br \/>\n      &lt;groupId&gt;org.slf4j&lt;\/groupId&gt;<br \/>\n      &lt;artifactId&gt;slf4j-api&lt;\/artifactId&gt;<br \/>\n      &lt;version&gt;1.7.5&lt;\/version&gt;<br \/>\n    &lt;\/dependency&gt;<br \/>\n[\/xml]<br \/>\nApache Tiles\u304cSLF4j\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u3067\u5408\u308f\u305b\u3066\u8ffd\u52a0\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<h4>Spring\u306e\u8a2d\u5b9a\u3092\u5909\u66f4<\/h4>\n<p>mvc-dispatcher-servlet.xml\u3092\u7de8\u96c6\u3057\u307e\u3059\u3002<br \/>\n[xml highlight=&#8221;4&#8243;]<br \/>\n  &lt;beans:bean class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&gt;<br \/>\n    &lt;beans:property name=&quot;prefix&quot; value=&quot;\/WEB-INF\/views\/&quot; \/&gt;<br \/>\n    &lt;beans:property name=&quot;suffix&quot; value=&quot;.jsp&quot; \/&gt;<br \/>\n    &lt;beans:property name=&quot;order&quot;  value=&quot;1&quot;\/&gt;<br \/>\n  &lt;\/beans:bean&gt;<br \/>\n  &lt;!&#8211; \u4ee5\u4e0b\u8ffd\u52a0 &#8211;&gt;<br \/>\n  &lt;beans:bean id=&quot;tilesConfigurer&quot; class=&quot;org.springframework.web.servlet.view.tiles2.TilesConfigurer&quot;&gt;<br \/>\n      &lt;beans:property name=&quot;definitions&quot;&gt;<br \/>\n          &lt;beans:list&gt;<br \/>\n              &lt;beans:value&gt;\/WEB-INF\/tiles.xml&lt;\/beans:value&gt;<br \/>\n          &lt;\/beans:list&gt;<br \/>\n      &lt;\/beans:property&gt;<br \/>\n  &lt;\/beans:bean&gt; <\/p>\n<p>  &lt;beans:bean id=&quot;tilesViewResolver&quot; class=&quot;org.springframework.web.servlet.view.UrlBasedViewResolver&quot;&gt;<br \/>\n      &lt;beans:property name=&quot;viewClass&quot; value=&quot;org.springframework.web.servlet.view.tiles2.TilesView&quot; \/&gt;<br \/>\n      &lt;beans:property name=&quot;order&quot; value=&quot;0&quot; \/&gt;<br \/>\n  &lt;\/beans:bean&gt;<br \/>\n[\/xml]<br \/>\n\u30cf\u30a4\u30e9\u30a4\u30c8\u3057\u305f\u884c\u306f\u5909\u66f4\u3057\u307e\u3057\u305f\u3002<br \/>\n\u5f8c\u306f\u3001\u8ffd\u52a0\u3057\u3066\u307e\u3059\u3002<br \/>\n\u30c7\u30d5\u30a9\u30eb\u30c8\u306fTiles\u3092\u4f7f\u3063\u3066\u3001\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u5834\u5408\u306fJSP\u3092\u63a2\u3057\u306b\u304f\u3088\u3046\u306a\u8a2d\u5b9a\u3067\u3059\u3002<br \/>\n\uff08tiles\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u5834\u5408\u306e\u52d5\u4f5c\u78ba\u8a8d\u307e\u3067\u306f\u884c\u3048\u3066\u3044\u307e\u305b\u3093\u30fb\u30fb\u30fb\uff09<\/p>\n<h4>Tiles\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210<\/h4>\n<p>\u65b0\u305f\u306b\u3001Tiles\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002\u4e0a\u8a18\u3067\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u307e\u3067\u306e\u30d1\u30b9\u3092\u6307\u5b9a\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u305d\u3053\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n[xml]<br \/>\n&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br \/>\n&lt;!DOCTYPE tiles-definitions PUBLIC<br \/>\n &quot;-\/\/Apache Software Foundation\/\/DTD Tiles Configuration 2.0\/\/EN&quot;<br \/>\n &quot;http:\/\/tiles.apache.org\/dtds\/tiles-config_2_0.dtd&quot;&gt;<br \/>\n&lt;tiles-definitions&gt;<br \/>\n &lt;!&#8211; \u30d9\u30fc\u30b9\u306e\u30ec\u30a4\u30a2\u30a6\u30c8 &#8211;&gt;<br \/>\n &lt;definition name=&quot;baseLayout&quot; template=&quot;\/WEB-INF\/tiles\/common\/layout.jsp&quot;&gt;<br \/>\n &lt;\/definition&gt;<br \/>\n &lt;definition name=&quot;index&quot; extends=&quot;baseLayout&quot;&gt;<br \/>\n   &lt;put-attribute name=&quot;titleName&quot; value=&quot;\u30c6\u30b9\u30c8&quot; \/&gt;<br \/>\n   &lt;put-attribute name=&quot;body&quot;      value=&quot;\/WEB-INF\/tiles\/index.jsp&quot; \/&gt;<br \/>\n &lt;\/definition&gt;<br \/>\n&lt;\/tiles-definitions&gt;<br \/>\n[\/xml]<br \/>\n\u30d9\u30fc\u30b9\u3068\u306a\u308b\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u6e96\u5099\u3057\u3066\u30da\u30fc\u30b8\u3067\u306f\u5909\u66f4\u90e8\u5206\u3060\u3051\u5dee\u3057\u66ff\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n<h4>\u30d9\u30fc\u30b9\u30ec\u30a4\u30a2\u30a6\u30c8\u7528\u306ejsp\u3092\u4f5c\u6210<\/h4>\n<p>\u30d9\u30fc\u30b9\u30ec\u30a4\u30a2\u30a6\u30c8\u7528\u306eJSP\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002tiles.xml\u306b\u8a18\u8ff0\u3057\u305f\u30d1\u30b9\u306b\u306a\u308b\u3088\u3046\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n[html highlight=&#8221;18&#8243;]<br \/>\n&lt;%@ page language=&quot;java&quot; pageEncoding=&quot;utf-8&quot;%&gt;<br \/>\n&lt;!DOCTYPE html PUBLIC &quot;-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN&quot;<br \/>\n &quot;http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd&quot;&gt;<br \/>\n&lt;html xmlns=&quot;http:\/\/www.w3.org\/1999\/xhtml&quot;&gt;<br \/>\n &lt;c:set var=&quot;titleName&quot;&gt;&lt;tiles:getAsString name=&#8217;titleName&#8217; \/&gt;&lt;\/c:set&gt;<br \/>\n&lt;head&gt;<br \/>\n &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text\/html; charset=utf-8&quot; \/&gt;<br \/>\n &lt;title&gt;${titleName}&lt;\/title&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;div&gt;<\/p>\n<p> &lt;div class=&quot;body&quot;&gt;<br \/>\n  &lt;div class=&quot;body-header&quot;&gt;<br \/>\n   ${titleName}<br \/>\n  &lt;\/div&gt;<br \/>\n  &lt;div class=&quot;body-content&quot;&gt;<br \/>\n   &lt;tiles:insertAttribute name=&quot;body&quot; \/&gt;<br \/>\n  &lt;\/div&gt;<br \/>\n &lt;\/div&gt;<\/p>\n<p>&lt;\/div&gt;<br \/>\n&lt;\/body&gt;<\/p>\n<p>&lt;\/html&gt;<br \/>\n[\/html]<br \/>\n\u30cf\u30a4\u30e9\u30a4\u30c8\u3057\u305f\u884c\u304c\u5404\u30da\u30fc\u30b8\u306e\u5185\u5bb9\u304c\u5dee\u3057\u8fbc\u307e\u308c\u307e\u3059\u3002<\/p>\n<h4>\u30da\u30fc\u30b8\u3092\u4f5c\u6210<\/h4>\n<p>tiles\u7528\u306eindex.jsp\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002tiles.xml\u306b\u8a18\u8ff0\u3057\u305f\u30d1\u30b9\u306b\u306a\u308b\u3088\u3046\u306b\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n\u3068\u308a\u3042\u3048\u305a\u30c6\u30b9\u30c8\u306a\u306e\u3067<br \/>\n[html]<br \/>\nTiles\u3060\u3088<br \/>\n[\/html]<br \/>\n\u3068\u3057\u3066\u304a\u304d\u307e\u3059\u3002<\/p>\n<h4>Controller\u3092\u4f5c\u6210<\/h4>\n<p>\u305b\u3063\u304b\u304f\u306a\u306e\u3067\u65b0\u3057\u304fController\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002<br \/>\n[java]<br \/>\n@Controller<br \/>\n@RequestMapping(&quot;\/&quot;)<br \/>\npublic class IndexController {<br \/>\n\t@RequestMapping(method = RequestMethod.GET)<br \/>\n\tpublic String index(Model model) {<br \/>\n\t\treturn &quot;index&quot;;<br \/>\n\t}<br \/>\n}<br \/>\n[\/java]<br \/>\n\/\u3067\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001\u547c\u3073\u51fa\u3055\u308c\u308b\u3088\u3046\u306b\u8a2d\u5b9a\u3057\u307e\u3057\u305f\u3002<\/p>\n<h4>\u8868\u793a\u3055\u305b\u3066\u307f\u307e\u3059<\/h4>\n<p>Tomcat\u3092\u518d\u8d77\u52d5\u3057\u3066\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u3001<br \/>\n<a href=\"https:\/\/www.beeete2.com\/blog\/wp-content\/uploads\/2013\/09\/tilestest.png\"><img decoding=\"async\" src=\"https:\/\/www.beeete2.com\/blog\/wp-content\/uploads\/2013\/09\/tilestest.png\" alt=\"tilestest\" width=\"171\" height=\"208\" class=\"alignnone size-full wp-image-566\" \/><\/a><br \/>\n\u3068\u8868\u793a\u3055\u308c\u308c\u3070OK\u3067\u3059\u3002<\/p>\n<h4>\u307e\u3068\u3081<\/h4>\n<p>\u6b63\u76f4\u306a\u3068\u3053\u308d\u3001\u3053\u306e\u7a0b\u5ea6\u306e\u3053\u3068\u3067\u3042\u308c\u3070JSP\u306einclude\u3042\u305f\u308a\u3092\u4f7f\u3063\u3066\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\u304c\u3001\u3044\u307e\u3044\u3061\u69cb\u9020\u7ba1\u7406\u3068\u3057\u3066\u306f\u5f31\u3044\u306e\u3067Tiles\u3092\u4f7f\u3063\u3066\u307f\u307e\u3057\u305f\u3002<br \/>\n\u6280\u8853\u8005\u76ee\u7dda\u304b\u3089\u898b\u308b\u3068\u3001\u3042\u308b\u7a0b\u5ea6\u91cd\u8907\u3092\u9664\u5916\u3067\u304d\u3066\u4fbf\u5229\u306a\u3093\u3067\u3059\u3051\u3069\u3001\u6280\u8853\u8005\u3060\u3051\u3067\u4ed5\u4e8b\u3092\u3059\u308b\u308f\u3051\u3058\u3083\u306a\u3044\u3067\u3059\u304b\u3089\u306d\u3002<br \/>\n\u69cb\u9020\u5316\u3059\u308b\u3068\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u52d5\u304b\u3059\u307e\u3067\u30d7\u30ec\u30d3\u30e5\u30fc\u3067\u304d\u306a\u3044\u3068\u3044\u3046\u3053\u3068\u306a\u306e\u3067\u3001\u30c7\u30b6\u30a4\u30f3\u4fee\u6b63\u306a\u3069\u3067\u30c7\u30b6\u30a4\u30ca\u30fc\u306e\u65b9\u306b\u4f5c\u696d\u4f9d\u983c\u3059\u308b\u6642\u30fb\u30fb\u30fb\u3063\u3066\u306a\u308a\u305d\u3046\u306a\u4e88\u611f\u304c\u3057\u307e\u3059\u3002<br \/>\n\u3053\u308c\u3001\u3069\u3046\u3084\u3063\u3066\u9632\u3044\u3067\u308b\u306e\u304b\u306a\u30fc\u3068\u601d\u3044\u307e\u3059\u3002\u753b\u9762\u30c7\u30b6\u30a4\u30f3\u3092\u5b8c\u30d1\u30b1\u3067\u7d0d\u54c1\u3057\u3066\u3082\u304a\u5ba2\u69d8\u306e\u30ec\u30d3\u30e5\u30fc\u6642\u306b\u4fee\u6b63\u3059\u308b\u3053\u3068\u306a\u3093\u3066\u3088\u304f\u3042\u308b\u3057\u3001\u305d\u306e\u305f\u3073\u306b\u30c7\u30b6\u30a4\u30ca\u30fc\u3055\u3093\u304b\u3089\u300c\u30ae\u30e3\u30fc\u300d\u3063\u3066\u8a00\u308f\u308c\u308b\u3088\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\u3002<br \/>\n\u307e\u3041\u3001\u4eca\u56de\u306f\u81ea\u5206\u3057\u304b\u89e6\u3089\u306a\u3044\u306e\u3067Tiles\u3092\u4f7f\u3063\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<h4>\u4eca\u56de\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8<\/h4>\n<p><a href=\"http:\/\/bit.ly\/18b1c7m\" target=\"_blank\">https:\/\/github.com\/beeete2\/springmvc-testwebapp<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spring MVC\u306f\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d3\u30e5\u30fc\u306fJSP\u307f\u305f\u3044\u3067\u3059\u306d\u3002 JSP\u3067\u3082\u554f\u984c\u306a\u3044\u306e\u3067\u3059\u304c\u3001\u305b\u3063\u304b\u304f\u306a\u306e\u3067Tiles\u3092\u4f7f\u3063\u3066\u307f\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002 \u50d5\u306e\u5370\u8c61\u3067\u306fTiles\u306f\u3001\u305d\u308c\u81ea\u4f53\u304c\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30b7\u30b9\u30c6\u30e0 &#8230; <\/p>\n","protected":false},"author":1,"featured_media":611,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[38],"tags":[77],"views":24654,"_links":{"self":[{"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/562"}],"collection":[{"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=562"}],"version-history":[{"count":6,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/562\/revisions"}],"predecessor-version":[{"id":1762,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/562\/revisions\/1762"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/611"}],"wp:attachment":[{"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=562"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=562"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.beeete2.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}