SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)

开始之前,我们首先要准备一些东西:

以下12个jar文件:
spring-aop-4.3.3.RELEASE.jar
spring-beans-4.3.3.RELEASE.jar
spring-context-4.3.3.RELEASE.jar
spring-core-4.3.3.RELEASE.jar
spring-expression-4.3.3.RELEASE.jar
spring-web-4.3.3.RELEASE.jar
spring-webmvc-4.3.3.RELEASE.jar
thymeleaf-3.0.2.RELEASE.jar
thymeleaf-spring4-3.0.2.RELEASE.jar

attoparser-2.0.1.RELEASE.jar
slf4j-api-1.6.6.jar

commons-logging-1.2.jar

它们来自于spring-framework-4.3.3.RELEASE-dist.zip,thymeleaf-3.0.2.RELEASE-dist.zip,commons-logging-1.2-bin.tar.gz,请从官网下载

spring: http://repo.spring.io/release/org/springframework/spring/

thymeleaf: https://dl.bintray.com/thymeleaf/downloads/thymeleaf/ 

common log: http://commons.apache.org/proper/commons-logging/download_logging.cgi 


1: 把12个jar文件拷贝到WEB-INF的lib目录下,并添加到build path下:

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第1张图片

如果你不晓得WEB-INF在硬盘的路径,可以鼠标右击项目 zoo,下拉菜单->Properties,弹出对话框:

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第2张图片

红框就是你硬盘里的路径。


2: 修改web.xml文件,添加spring的dispatcherServlet;指定spring的配置文件:classpath下的com/xmlconfig/spring-mvc.xml文件;过滤所有以.html结尾的请求。load-on-startup参数设置为1,表示web应用启动的时候就会实例化这个servlet,数值必须是整数,如果是负整数或者没有设置,那么web容器自己会选择它的初始化时机,如果是大于等于0的整数,那么这个servlet会在web应用启动的时候初始化,并且数字越小越先被初始化,对于值相等的servlet,web容器会选择初始化顺序。

添加的代码: 


    springMVC
    org.springframework.web.servlet.DispatcherServlet
   
      contextConfigLocation
      classpath:com/xmlconfig/spring-mvc.xml
   

    1
 


 
    springMVC
    *.html
 

最后web.xml的内容是这样的:

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"   
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  4. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  5.   <display-name>zoodisplay-name>  
  6.   
  7.   <servlet>  
  8.     <servlet-name>springMVCservlet-name>  
  9.     <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>  
  10.     <init-param>  
  11.       <param-name>contextConfigLocationparam-name>  
  12.       <param-value>classpath:com/xmlconfig/spring-mvc.xmlparam-value>  
  13.     init-param>  
  14.     <load-on-startup>1load-on-startup>  
  15.   servlet>  
  16.   
  17.   <servlet-mapping>  
  18.     <servlet-name>springMVCservlet-name>  
  19.     <url-pattern>*.htmlurl-pattern>  
  20.   servlet-mapping>  
  21.     
  22.   <welcome-file-list>  
  23.     <welcome-file>index.htmlwelcome-file>  
  24.     <welcome-file>index.htmwelcome-file>  
  25.     <welcome-file>index.jspwelcome-file>  
  26.     <welcome-file>default.htmlwelcome-file>  
  27.     <welcome-file>default.htmwelcome-file>  
  28.     <welcome-file>default.jspwelcome-file>  
  29.   welcome-file-list>  
  30. web-app>  

3: 在src目录下新建package:com.xmlconfig(其实就是硬盘里的文件夹src/com/config),并在这个package下面新建xml文件:

spring-mvc.xml,内容为:

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  9.         http://www.springframework.org/schema/context  
  10.         http://www.springframework.org/schema/context/spring-context.xsd  
  11.         http://www.springframework.org/schema/mvc  
  12.         http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
  13.     
  14.   
  15.     
  16.   
  17.   <context:component-scan base-package="com.zoo.web.controller"/>  
  18.     
  19.   <mvc:annotation-driven/>  
  20.   
  21.     
  22.   <bean id="templateResolver"  
  23.         class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">  
  24.     <property name="prefix" value="/WEB-INF/pages/" />  
  25.     <property name="suffix" value=".html" />  
  26.     <property name="templateMode" value="HTML" />  
  27.     <property name="cacheable" value="false" />  
  28.   bean>  
  29.       
  30.   <bean id="templateEngine"  
  31.         class="org.thymeleaf.spring4.SpringTemplateEngine">  
  32.     <property name="templateResolver" ref="templateResolver" />  
  33.   bean>  
  34.   
  35.   <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">  
  36.     <property name="templateEngine" ref="templateEngine" />  
  37.   bean>  
  38.   
  39. beans>  

4: 在src目录下添加package:com.zoo.web.controller,并新建类ZooController,其内容是:

[java]  view plain  copy
  1. package com.zoo.web.controller;  
  2.   
  3. import org.springframework.stereotype.Controller;  
  4. import org.springframework.web.bind.annotation.RequestMapping;  
  5. import org.springframework.web.bind.annotation.RequestMethod;  
  6.   
  7. @Controller  
  8. public class ZooController {  
  9.   
  10.     @RequestMapping(path = "/list", method = RequestMethod.GET)  
  11.     public String showZooList(){  
  12.         return "zoolist";  
  13.     }  
  14.       
  15. }  

类上面的注解@Controller表示这个类是控制器类,spring根据这个注解就可以扫描到,在有http请求过来的时候spring会根据url找到匹配的controller并执行对应的方法。

@RequestMapping注解的是方法showZooList(),当浏览器访问http://localhost:8080/zoo/list.html地址时就会调用此函数。函数返回的是个字符串,这个字符串对应的是/WEB-INF/pages/下的文件名,记住是不带扩展名的,这个是在spring-mvc.xml中配置的。其中method=RequestMethod.GET表示只响应get请求,如果同样的url换成post请求就不会触发这个方法。


5: 在WEB-INF下新建文件夹pages,并在pages里新建html文件zoolist.html,内容为:

[html]  view plain  copy
  1. >  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>zoo listtitle>  
  6. head>  
  7. <body>  
  8.     <table border="1">    
  9.       <tr>  
  10.         <th>序号th>  
  11.         <th>动物名称th>    
  12.         <th>数量th>   
  13.         <th>备注th>  
  14.       tr>  
  15.       <tr>  
  16.         <td>1td>  
  17.         <td>大马猴td>  
  18.         <td>10td>  
  19.         <td>机灵古怪,俏皮活泼td>  
  20.       tr>  
  21.       <tr>  
  22.         <td>2td>  
  23.         <td>大熊猫td>  
  24.         <td>80td>  
  25.         <td>体型笨重,喜欢吃竹子td>  
  26.       tr>  
  27.       <tr>  
  28.         <td>3td>  
  29.         <td>澳洲羊驼td>  
  30.         <td>13td>  
  31.         <td>长相奇特,大国人俗称其草泥马td>  
  32.       tr>  
  33.       <tr>  
  34.         <td>4td>  
  35.         <td>峨眉山猴td>  
  36.         <td>90td>  
  37.         <td>不怕人,有时候发贱抢游客面包吃td>  
  38.       tr>  
  39.     table>  
  40. body>  
  41. html>  

歐克,到此为止基本上就全都整好啦,现在我们的项目结构大概是这个样子:

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第3张图片

让我们启动tomcat试一试吧!

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第4张图片

启动完成后看看你的Console是不是一切正常,如果有出错信息,请自行排查。


打开浏览器输入http://localhost:8080/zoo/list.html

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第5张图片

哎呀!怎么都是问号呀!?

别担心,小问题,我们只需在spring-mvc.xml中添加一句话就ok啦拉拉,

加进去,放在哪里呀?请使劲看,自己去找:

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.         http://www.springframework.org/schema/context  
  9.         http://www.springframework.org/schema/context/spring-context.xsd  
  10.         http://www.springframework.org/schema/mvc  
  11.         http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
  12.           
  13.   <context:component-scan base-package="com.zoo.web.controller"/>  
  14.   <mvc:annotation-driven/>  
  15.   
  16.     
  17.   <bean id="templateResolver"  
  18.         class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">  
  19.     <property name="prefix" value="/WEB-INF/pages/" />  
  20.     <property name="suffix" value=".html" />  
  21.     <property name="templateMode" value="HTML" />  
  22.     <property name="cacheable" value="false" />  
  23.   bean>  
  24.       
  25.   <bean id="templateEngine"  
  26.         class="org.thymeleaf.spring4.SpringTemplateEngine">  
  27.     <property name="templateResolver" ref="templateResolver" />  
  28.   bean>  
  29.   
  30.   <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">  
  31.     <property name="templateEngine" ref="templateEngine" />  
  32.       
  33.     <property name="characterEncoding" value="UTF-8"/>  
  34.   bean>  
  35.   
  36. beans>  

完成后记得重新启动tomcat,再用浏览器看一看:

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第6张图片

哇,正常了,终于看到大马猴和草泥马啦拉拉!


等一等,我们是不是忘记了什么?对了,我们再访问一下首页http://localhost:8080/zoo看看

SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)_第7张图片

咿呀呀,搞什么飞机,怎么出错啦,还是404,怎么找不到页面啦,让阿拉想想怎么解决......


好,有了,这个也是小case,同样在spring-mvc.xml中添加一句话就ok,

加进去就能解决了。这句话怎么这么列害!

让我们想一想整个流程,当http://localhost:8080/zoo这个请求来到tomcat server时,实际上请求的是http://localhost:8080/zoo/index.html或者http://localhost:8080/zoo/default.jsp,总之是wellcome-file-list中的某个页面,可实际上在我们的应用中没有哪个类的哪个方法来响应/index.html或者default.jsp等,所以这句话的意思就是在这条路走不通的情况下使用默认servlet来处理,这个标签对应的是

org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 这个handler,它转而调用当前web容器默认的servlet,让当前默认servlet来处里。

最后的内容如下:

[html]  view plain  copy
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:mvc="http://www.springframework.org/schema/mvc"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  7.         http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.         http://www.springframework.org/schema/context  
  9.         http://www.springframework.org/schema/context/spring-context.xsd  
  10.         http://www.springframework.org/schema/mvc  
  11.         http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
  12.           
  13.   <context:component-scan base-package="com.zoo.web.controller"/>  
  14.   <mvc:annotation-driven/>  
  15.     
  16.   <mvc:default-servlet-handler />  
  17.     
  18.     
  19.   <bean id="templateResolver"  
  20.         class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">  
  21.     <property name="prefix" value="/WEB-INF/pages/" />  
  22.     <property name="suffix" value=".html" />  
  23.     <property name="templateMode" value="HTML" />  
  24.     <property name="cacheable" value="false" />  
  25.   bean>  
  26.       
  27.   <bean id="templateEngine"  
  28.         class="org.thymeleaf.spring4.SpringTemplateEngine">  
  29.     <property name="templateResolver" ref="templateResolver" />  
  30.   bean>  
  31.   
  32.   <bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">  
  33.     <property name="templateEngine" ref="templateEngine" />  
  34.       
  35.     <property name="characterEncoding" value="UTF-8"/>  
  36.   bean>  
  37.   
  38. beans>  

END.

你可能感兴趣的:(SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合))