SpringBoot導入thymeleaf模板,運行報錯。

  • 報錯:
    SpringBoot導入thymeleaf模板,運行報錯org.xml.sax.SAXParseException: 元素類型 “link” 必須由匹配的結束標記 終止。

1、新建SpringBoot MAVEN項目後 JAR類型的項目
2、新增pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.xdl</groupId>
  <artifactId>ovls_exam_web</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.4.7.RELEASE</version>
	<relativePath/>
  </parent>
  
  <properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.7</java.version>
  </properties>
  
  <dependencies>
		<!-- bean掃描、自動配置、@bean定義 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<!-- mvc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<!-- jstl -->
		<dependency>
		  <groupId>jstl</groupId>
		  <artifactId>jstl</artifactId>
		  <version>1.2</version>
		</dependency>
		
		<!-- jsp api -->
		<dependency>
		  <groupId>org.apache.tomcat.embed</groupId>
		  <artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<!-- 熱部署 -->
  		<dependency>
		  <groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-devtools</artifactId>
		</dependency>

		<!-- thymeleaf -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

  </dependencies>
  
</project>

3、新增application.properties

#server
server.port=7778

#thymeleaf
spring.thymeleaf.prefix=classpath:/templates/exam/
spring.thymeleaf.suffix=.html #可以去掉 默認就是html

4、主啓動類

package cn.xdl.ovls.exam;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ExamWebBootApplication {
	public static void main(String[] args) {
		SpringApplication.run(ExamWebBootApplication.class, args);
	}
}

5、編寫controller

package cn.xdl.ovls.exam.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class ExamController {

	@RequestMapping("/exam/home")
	public ModelAndView home(){
		System.out.println("abc");
		ModelAndView mav = new ModelAndView();
		mav.setViewName("home");
		return mav;
	}
}

項目路徑如下圖
項目路徑信息

6.瀏覽器輸入URL請求:
http://localhost:7778/exam/home
瀏覽器報錯:500錯誤
本地服務器:後臺錯誤,但是能進Controller,信息如下
報錯org.xml.sax.SAXParseException: 元素類型 “link” 必須由匹配的結束標記 “” 終止。
類似的錯誤還有:
org.xml.sax.SAXParseException: 元素類型 “meta” 必須由匹配的結束標記 “” 終止。
在這裏插入圖片描述

7.錯誤原因:
在這裏插入圖片描述

8.解決辦法:
1、pom.xml文件引入HTML5非強制語法校驗
2、追加application.properties定義

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>cn.xdl</groupId>
  <artifactId>ovls_exam_web</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
   <parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.4.7.RELEASE</version>
	<relativePath/>
  </parent>
  
  <properties>
	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
	<java.version>1.7</java.version>
  </properties>
  
  <dependencies>
		<!-- bean掃描、自動配置、@bean定義 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<!-- mvc -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<!-- jstl -->
		<dependency>
		  <groupId>jstl</groupId>
		  <artifactId>jstl</artifactId>
		  <version>1.2</version>
		</dependency>
		
		<!-- jsp api -->
		<dependency>
		  <groupId>org.apache.tomcat.embed</groupId>
		  <artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		
		<!-- 熱部署 -->
  		<dependency>
		  <groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-devtools</artifactId>
		</dependency>

		<!-- thymeleaf -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<!-- 啓用thymeleaf非嚴格html5檢查 -->
		<dependency> 
			<groupId>net.sourceforge.nekohtml</groupId> 
			<artifactId>nekohtml</artifactId> 
		</dependency> 
  </dependencies>
  
</project>

追加application.properties定義

#server
server.port=7778

#thymeleaf
spring.thymeleaf.prefix=classpath:/templates/exam/
#spring.thymeleaf.suffix=.html
#啓用thymeleaf非嚴格檢查
#spring.thymeleaf.content-type=text/html 
#spring.thymeleaf.cache=false 
spring.thymeleaf.mode =LEGACYHTML5

瀏覽器輸入請求可以正常訪問了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章