{"id":545,"date":"2023-03-23T21:19:42","date_gmt":"2023-03-23T13:19:42","guid":{"rendered":""},"modified":"2023-03-23T21:19:42","modified_gmt":"2023-03-23T13:19:42","slug":"Spring MVC Tiles\u793a\u4f8b","status":"publish","type":"post","link":"https:\/\/bianchenghao6.com\/545.html","title":{"rendered":"Spring MVC Tiles\u793a\u4f8b"},"content":{"rendered":"


\n <\/head>
\n <\/p>\n

\n

Spring MVC Tiles\u793a\u4f8b<\/h1>\n<\/p><\/div>\n
\n Spring\u63d0\u4f9b\u4e86\u4e0eapache tile\u6846\u67b6\u7684\u96c6\u6210\u652f\u6301\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u501f\u52a9Spring Tile\u652f\u6301\u7b80\u5355\u5730\u7ba1\u7406Spring MVC\u5e94\u7528\u7a0b\u5e8f\u7684\u5e03\u5c40\u3002\n <\/div>\n

Spring MVC\u652f\u6301Tiles\u7684\u4f18\u52bf<\/h2>\n
\n \u53ef\u91cd\u7528\u6027: <\/strong>: \u6211\u4eec\u53ef\u4ee5\u5728\u591a\u4e2a\u9875\u9762\u4e2d\u91cd\u590d\u4f7f\u7528\u5355\u4e2a\u7ec4\u4ef6\uff0c\u4f8b\u5982\u9875\u7709\u548c\u9875\u811a\u7ec4\u4ef6\u3002\n <\/div>\n
\n \u96c6\u4e2d\u5f0f\u63a7\u4ef6: <\/strong>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5355\u4e2a\u6a21\u677f\u9875\u9762\u6765\u63a7\u5236\u9875\u9762\u7684\u5e03\u5c40\n <\/div>\n
\n \u6613\u4e8e\u66f4\u6539\u5e03\u5c40: <\/strong>: \u501f\u52a9\u5355\u4e2a\u6a21\u677f\u9875\u9762\uff0c\u6211\u4eec\u53ef\u4ee5\u968f\u65f6\u66f4\u6539\u9875\u9762\u7684\u5e03\u5c40\u3002\u56e0\u6b64\uff0c\u60a8\u7684\u7f51\u7ad9\u53ef\u4ee5\u8f7b\u677e\u91c7\u7528\u65b0\u6280\u672f\uff0c\u4f8b\u5982\u5f15\u5bfc\u7a0b\u5e8f\uff0cjQuery\u7b49\u3002\n <\/div>\n
\n

Spring MVC Tiles\u793a\u4f8b<\/h2>\n

1\u3001\u5c06\u4f9d\u8d56\u9879\u6dfb\u52a0\u5230pom.xml\u6587\u4ef6\u3002<\/h3>\n
\n pom.xml <\/strong>\n <\/div>\n
\n
\r\n <!-- https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-webmvc -->\r\n<dependency>\r\n    <groupId>org.springframework<\/groupId>\r\n    <artifactId>spring-webmvc<\/artifactId>\r\n    <version>5.1.1.RELEASE<\/version>\r\n<\/dependency>\r\n  <!-- https:\/\/mvnrepository.com\/artifact\/javax.servlet\/javax.servlet-api -->\r\n<dependency>  \r\n    <groupId>javax.servlet<\/groupId>  \r\n    <artifactId>servlet-api<\/artifactId>  \r\n    <version>3.0-alpha-1<\/version>  \r\n<\/dependency>\r\n    <!-- https:\/\/mvnrepository.com\/artifact\/javax.servlet\/jstl -->\r\n<dependency>\r\n    <groupId>javax.servlet<\/groupId>\r\n    <artifactId>jstl<\/artifactId>\r\n    <version>1.2<\/version>\r\n<\/dependency>\r\n<!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tomcat\/tomcat-jasper -->\r\n<dependency>\r\n    <groupId>org.apache.tomcat<\/groupId>\r\n    <artifactId>tomcat-jasper<\/artifactId>\r\n    <version>9.0.12<\/version>\r\n<\/dependency>\r\n <!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tiles\/tiles-jsp -->\r\n<dependency>\r\n    <groupId>org.apache.tiles<\/groupId>\r\n    <artifactId>tiles-jsp<\/artifactId>\r\n    <version>3.0.5<\/version>\r\n<\/dependency>\r\n    \r\n    <!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tiles\/tiles-servlet -->\r\n<dependency>\r\n    <groupId>org.apache.tiles<\/groupId>\r\n    <artifactId>tiles-servlet<\/artifactId>\r\n    <version>3.0.5<\/version>\r\n<\/dependency>\r\n    <!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tiles\/tiles-core -->\r\n<dependency>\r\n    <groupId>org.apache.tiles<\/groupId>\r\n    <artifactId>tiles-core<\/artifactId>\r\n    <version>3.0.5<\/version>\r\n<\/dependency>\r\n   <!-- https:\/\/mvnrepository.com\/artifact\/org.apache.tiles\/tiles-el -->\r\n<dependency>\r\n    <groupId>org.apache.tiles<\/groupId>\r\n    <artifactId>tiles-el<\/artifactId>\r\n    <version>3.0.5<\/version>\r\n<\/dependency>\r\n<\/pre>\n

<\/code>\n <\/div>\n

2\u3001\u521b\u5efabean\u7c7b<\/h3>\n
\n Contact.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>com.lidihuo.form;\r\npublic <\/span>class <\/span>Contact {\r\n    private <\/span>String firstname;\r\n    private <\/span>String lastname;\r\n    private <\/span>String email;\r\n    private <\/span>String telephone;\r\n    \r\n    public <\/span>String getEmail() {\r\n        return <\/span>email;\r\n    }\r\n    public <\/span>String getTelephone() {\r\n        return <\/span>telephone;\r\n    }\r\n    public void <\/span>setEmail(String email) {\r\n        this<\/span>.email = email;\r\n    }\r\n    public void <\/span>setTelephone(String telephone) {\r\n        this<\/span>.telephone = telephone;\r\n    }\r\n    public <\/span>String getFirstname() {\r\n        return <\/span>firstname;\r\n    }\r\n    public <\/span>String getLastname() {\r\n        return <\/span>lastname;\r\n    }\r\n    public void <\/span>setFirstname(String firstname) {\r\n        this<\/span>.firstname = firstname;\r\n    }\r\n    public void <\/span>setLastname(String lastname) {\r\n        this<\/span>.lastname = lastname;\r\n    }\r\n    \r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

3\u3001\u521b\u5efa\u63a7\u5236\u5668\u7c7b<\/h3>\n
\n HelloWorldController.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>com.lidihuo.controller;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.ui.Model;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\n@Controller\r\npublic <\/span>class <\/span>HelloWorldController {\r\n    @RequestMapping(\"\/hello\"<\/span>)\r\n    public <\/span>String helloWorld(Model m) {\r\n        String message = \"Hello World, Spring MVC @ lidihuo\"<\/span>;\r\n        m.addAttribute<\/span>(\"message\"<\/span>, message);\r\n        return <\/span>\"hello\"<\/span>; \r\n    }\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n ContactController.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>com.lidihuo.controller;\r\nimport org.springframework.stereotype.Controller;\r\nimport org.springframework.ui.Model;\r\nimport org.springframework.validation.BindingResult;\r\nimport org.springframework.web.bind.annotation.ModelAttribute;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RequestMethod;\r\nimport org.springframework.web.bind.annotation.SessionAttributes;\r\nimport com.lidihuo.form.Contact;\r\n@Controller\r\n@SessionAttributes\r\npublic <\/span>class <\/span>ContactController {\r\n    @RequestMapping(value = \"\/addContact\"<\/span>, method = RequestMethod.POST)\r\n    public <\/span>String addContact(@ModelAttribute(\"contact\"<\/span><\/span>)  Contact contact, BindingResult result) {\r\n        \/\/write the code here to add contact\r\n        return <\/span>\"redirect:contact.html\"<\/span>;\r\n    }\r\n    \r\n    @RequestMapping(\"\/contact\"<\/span>)\r\n    public <\/span>String showContacts(Model m) {\r\n        m.addAttribute<\/span>(\"command\"<\/span>, new <\/span>Contact());\r\n        return <\/span>\"contact\";\r\n    }\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

4\u3001\u5728web.xml\u6587\u4ef6\u4e2d\u63d0\u4f9b\u63a7\u5236\u5668\u7684\u6761\u76ee<\/h3>\n
\n web.xml <\/strong>\n <\/div>\n
\n
\r\n<?xml version=\"1.0\"<\/span> encoding=\"UTF-8\"<\/span>?>\r\n<web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span> xmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\"<\/span> xsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\"<\/span> id=\"WebApp_ID\"<\/span> version=\"2.5\"<\/span>>\r\n  <display-name>SpringTiles<\/display-name>\r\n  <welcome-file-list>\r\n    <welcome-file>index.jsp<\/welcome-file>\r\n  <\/welcome-file-list>\r\n  <servlet>\r\n    <servlet-name>spring<\/servlet-name>\r\n    <servlet-class>\r\n            org.springframework.web.servlet.DispatcherServlet\r\n        <\/servlet-class>\r\n    <load-on-startup>1<\/load-on-startup>\r\n  <\/servlet>\r\n  <servlet-mapping>\r\n    <servlet-name>spring<\/servlet-name>\r\n    <url-pattern>*.html<\/url-pattern>\r\n  <\/servlet-mapping>\r\n<\/web-app>\r\n<\/pre>\n

<\/code>\n <\/div>\n

5\u3001\u5728xml\u6587\u4ef6\u4e2d\u5b9a\u4e49Bean <\/h3>\n
\n spring-servlet.xml <\/strong>\n <\/div>\n
\n
\r\n<beans xmlns=\"http:\/\/www.springframework.org\/schema\/beans\"<\/span>\r\n    xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span>\r\n    xmlns:p=\"http:\/\/www.springframework.org\/schema\/p\"<\/span>\r\n    xmlns:context=\"http:\/\/www.springframework.org\/schema\/context\"<\/span>\r\n    xsi:schemaLocation=\"http:\/\/www.springframework.org\/schema\/beans\r\n        http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\r\n        http:\/\/www.springframework.org\/schema\/context\r\n        http:\/\/www.springframework.org\/schema\/context\/spring-context-3.0.xsd\">\r\n<context:annotation-config \/>\r\n<context:component-scan base-package=\"com.lidihuo.controller\"<\/span> \/>\r\n<bean id=\"viewResolver\"<\/span> class=\"org.springframework.web.servlet.view.tiles3.TilesViewResolver\"<\/span>\/>\r\n<bean id=\"tilesConfigurer\"<\/span> class=\"org.springframework.web.servlet.view.tiles3.TilesConfigurer\"<\/span>>\r\n<property name=\"definitions\"<\/span>>\r\n<list>\r\n<value>\/WEB-INF\/tiles.xml<\/value>\r\n<\/list>\r\n<\/property>\r\n<\/bean>\r\n<\/beans>\r\n<\/pre>\n

<\/code>\n <\/div>\n

6\u3001\u63d0\u4f9btile.xml\u6587\u4ef6<\/h3>\n
\n tiles.xml <\/strong>\n <\/div>\n
\n
\r\n<?xml version=\"1.0\"<\/span> encoding=\"UTF-8\"<\/span> ?>\r\n<!DOCTYPE tiles-definitions PUBLIC\r\n       \"-\/\/Apache Software Foundation\/\/DTD Tiles Configuration 2.0\/\/EN\"<\/span>\r\n       \"http:\/\/tiles.apache.org\/dtds\/tiles-config_2_0.dtd\"<\/span>>\r\n<tiles-definitions>\r\n    <definition name=\"base.definition\"<\/span><\/span><\/span>\r\n        template=\"\/WEB-INF\/jsp\/layout.jsp\"<\/span>>\r\n        <put-attribute name=\"title\"<\/span><\/span><\/span> value=\"\"<\/span><\/span> \/>\r\n        <put-attribute name=\"header\"<\/span> value=\"\/WEB-INF\/jsp\/header.jsp\"<\/span> \/>\r\n        <put-attribute name=\"menu\"<\/span> value=\"\/WEB-INF\/jsp\/menu.jsp\"<\/span> \/>\r\n        <put-attribute name=\"body\"<\/span><\/span><\/span> value=\"\" \/>\r\n        <put-attribute name=\"footer\"<\/span> value=\"\/WEB-INF\/jsp\/footer.jsp\"<\/span> \/>\r\n    <\/definition>\r\n    <definition name=\"contact\"<\/span> extends=\"base.definition\">\r\n        <put-attribute name=\"title\" value=\"Contact Manager\"<\/span> \/>\r\n        <put-attribute name=\"body\" value=\"\/WEB-INF\/jsp\/contact.jsp\"<\/span> \/>\r\n    <\/definition>\r\n    <definition name=\"hello\"<\/span> extends=\"base.definition\">\r\n        <put-attribute name=\"title\" value=\"Hello Spring MVC\"<\/span> \/>\r\n        <put-attribute name=\"body\" value=\"\/WEB-INF\/jsp\/hello.jsp\"<\/span> \/>\r\n    <\/definition>\r\n<\/tiles-definitions>\r\n<\/pre>\n

<\/code>\n <\/div>\n

7\u3001\u521b\u5efa\u8bf7\u6c42\u7684\u9875\u9762<\/h3>\n
\n index.jsp <\/strong>\n <\/div>\n
\n
\r\n<a href=\"hello.html\"<\/span>>Hello Spring<\/a> | \r\n<a href=\"contact.html\"<\/span>>Contact<\/a>\r\n<\/pre>\n

<\/code>\n <\/div>\n

8\u3001\u521b\u5efa\u5176\u4ed6\u89c6\u56fe\u7ec4\u4ef6<\/h3>\n
\n hello.jsp <\/strong>\n <\/div>\n
\n
\r\n<html>  \r\n<head>  \r\n    <title>Spring MVC Example<\/title>  \r\n<\/head>  \r\n<body>  \r\n<h1>Welcome to Spring MVC<\/h1>  \r\n    <p>Message is: ${message}<\/p>  \r\n<\/body>  \r\n<\/html>  \r\n<\/pre>\n

<\/code>\n <\/div>\n

\n contact.jsp <\/strong>\n <\/div>\n
\n
\r\n<%@taglib uri=\"http:\/\/www.springframework.org\/tags\/form\"<\/span> prefix=\"form\"<\/span>%>  \r\n<html>  \r\n<head>  \r\n    <title>Spring Tiles Contact Form<\/title>  \r\n<\/head>  \r\n<body>  \r\n<h2>Contact Manager<\/h2>  \r\n<form:form method=\"post\"<\/span> action=\"addContact.html\"<\/span>>  \r\n  \r\n    <table>  \r\n    <tr>  \r\n        <td><form:label path=\"firstname\"<\/span><\/span>>First Name<\/form:label><\/td>  \r\n        <td><form:input path=\"firstname\" \/><\/td>   \r\n    <\/tr>  \r\n    <tr>  \r\n        <td><form:label path=\"lastname\"<\/span><\/span><\/span><\/span>>Last Name<\/form:label><\/td>  \r\n        <td><form:input path=\"lastname\" \/><\/td>  \r\n    <\/tr>  \r\n    <tr>  \r\n        <td><form:label path=\"lastname\">Email<\/form:label><\/td>  \r\n        <td><form:input path=\"email\"<\/span> \/><\/td>  \r\n    <\/tr>  \r\n    <tr>  \r\n        <td><form:label path=\"lastname\">Telephone<\/form:label><\/td>  \r\n        <td><form:input path=\"telephone\"<\/span> \/><\/td>  \r\n    <\/tr>  \r\n    <tr>  \r\n        <td colspan=\"2\"<\/span>>  \r\n            <input type=\"submit\"<\/span> value=\"Add Contact\"<\/span>\/>  \r\n        <\/td>  \r\n    <\/tr>  \r\n<\/table>    \r\n      \r\n<\/form:form>  \r\n<\/body>  \r\n<\/html>\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n header.jsp <\/strong>\n <\/div>\n
\n
\r\n<h2>Header<\/h2>  \r\n<hr\/>  \r\n<\/pre>\n

<\/code>\n <\/div>\n

\n footer.jsp <\/strong>\n <\/div>\n
\n
\r\n<hr\/>  \r\n<p>Copyright  2010-2014 lidihuo.com.<\/p>  \r\n<\/pre>\n

<\/code>\n <\/div>\n

\n menu.jsp <\/strong>\n <\/div>\n
\n
\r\n<p>Menu 1<\/p>  \r\n<p>Menu 2<\/p>  \r\n<\/pre>\n

<\/code>\n <\/div>\n

\n layout.jsp <\/strong>\n <\/div>\n
\n
\r\n<%@ taglib uri=\"http:\/\/tiles.apache.org\/tags-tiles\"<\/span> prefix=\"tiles\"<\/span>%>  \r\n<!DOCTYPE HTML public <\/span>\"-\/\/W3C\/\/DTD HTML 4.01 Transitional\/\/EN\"<\/span>  \r\n\"http:\/\/www.w3.org\/TR\/html4\/loose.dtd\"<\/span>>  \r\n<html>  \r\n<head>  \r\n<meta http-equiv=\"Content-Type\"<\/span> content=\"text\/html; charset=UTF-8\"<\/span>>  \r\n<title><tiles:insertAttribute name=\"title\"<\/span> ignore=\"true\"<\/span> \/><\/title>  \r\n<\/head>  \r\n<body>  \r\n        <div><tiles:insertAttribute name=\"header\"<\/span> \/><\/div>  \r\n        <div style=\"float<\/span>:left;padding:10px;width:15%;\"<\/span>><tiles:insertAttribute name=\"menu\"<\/span> \/><\/div>  \r\n        <div style=\"float<\/span>:left;padding:10px;width:80%;border-left:1px solid pink;\"<\/span>>  \r\n        <tiles:insertAttribute name=\"body\"<\/span> \/><\/div>  \r\n        <div style=\"clear:both\"<\/span>><tiles:insertAttribute name=\"footer\"<\/span> \/><\/div>  \r\n  \r\n<\/body>  \r\n<\/html>  \r\n<\/pre>\n

<\/code>\n <\/div>\n

<\/body>
\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"Spring MVC Tiles\u793a\u4f8bzh-cn","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-545","post","type-post","status-publish","format-standard","hentry","category-bc_spring_jc"],"_links":{"self":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/545"}],"collection":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/comments?post=545"}],"version-history":[{"count":0,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/545\/revisions"}],"wp:attachment":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/media?parent=545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/categories?post=545"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/tags?post=545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}