1.修改配置文件servlet,添加thymleaf解析器html
<!-- thymeleaf的視圖解析器 --> <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-INF/html/" /> <property name="suffix" value=".html" /> <property name="templateMode" value="HTML5" /> </bean> <bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /> </bean> <bean id="viewResolverThymeleaf" class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine" /> <property name="characterEncoding" value="UTF-8"/> <property name="order" value="0"/> </bean>
2.jsp頁面相關內容轉爲html可識別代碼,如java
<c:forEach items="${list}" var="user" varStatus="s"> <tr> <td><a href="delete?userId=${user.userId}">${user.userId}</a></td> <td>${user.userName}</td> <td><a href="delete?userId=${user.userId}">Delete</a></td> </tr> </c:forEach>
轉爲spring
<div th:each="user,s:${list}"> <table> <tr> <td><a th:href="@{delete(userId=${user.userId})}"><span th:text="${user.userId}"></span></a></td> <td><span th:text="${user.userName}"></span></td> <td><span th:text="${user.userPassword}"></span></td> <td><a th:href="@{delete(userId=${user.userId})}">delete</a></td> </tr> </table> </div>
3.將thymleaf相關包導入(thymeleaf-2.1.4.RELEASE, thymeleaf-spring4-2.1.4.RELEASE. unbescape-1.1.0.RELEASE)sql
注意: html中的EL表達式沒法識別,須要經過th:方法數據庫
<meta charset="UTF-8"/> <!-- 後面的結束符號 -->
4.經過網絡鏈接他人的數據庫網絡
新建sql用戶(name隨便,Hostname-IP地址)jsp
更改工程中數據庫鏈接的相關代碼ide
5.html頁面的頂部爲(第二句爲thymleaf的相關代碼)this
<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-spring4-4.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
六、關於thymleaf解析器的配置的補充spa
對於返回的字符串,咱們會先對經過配置的thymeleaf來先判斷是否能夠解析爲一個HTML頁面,而後不能夠的時候就拋出錯誤,可是在咱們的項目中,咱們並無拋出異常,由於咱們在第一次解析中加入咱們自定義的一個類在cn.agriculture.common.component這個包中,這個類的代碼以下:
public class ThymeleafViewResolverEx extends ThymeleafViewResolver { @Override public View resolveViewName(String viewName, Locale locale) throws Exception { ServletContextTemplateResolver servletContextTemplateResolver = (ServletContextTemplateResolver)this.getWebApplicationContext().getBean("templateResolver"); servletContextTemplateResolver.initialize(); String prefix = servletContextTemplateResolver.getPrefix().substring(1); String suffix = servletContextTemplateResolver.getSuffix(); //String str = getClass().getResource("/").toString().replace("file:/", "") .replace("/WEB-INF/classes/", ""); //log.info("*****************************" + str); log.info("-----------------------------" + this.getServletContext().getRealPath("/")); File file = new File(this.getServletContext().getRealPath("/") + prefix + viewName + suffix); if (!file.exists()){ return null; } return super.resolveViewName(viewName, locale); }}
在這個類的做用下,咱們能夠先對controller返回的一個字符串作HTML頁面的解析,在沒有相應的HTML頁面再進行Jsp的解析,即調用SpringMVC的內部視圖解析器。若咱們不須要這樣的幫助時,咱們能夠將第一段代碼中的最後一個bean的class屬性值選擇爲ThymeleafViewResolver的包名。
當咱們由於類找不到時,咱們能夠經過複製類,而後按住 ctrl+shfit+t 來快捷提示對應的類的位置,而後將對應的包找到複製到咱們工程WebContent的WEB-INF文件夾下的lib中,這樣咱們能夠實現HTML的解析。