解决方法,加入下面代码到 dispatcher-servlet.xml 文件中
<mvc:annotation-driven />
dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="cn.netkiller.controller" /> <mvc:annotation-driven /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
pom.xml 文件中加入依赖包
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <!-- <property name="suffix" value=".jsp" /> --> <property name="viewNames" value="*.jsp" /> </bean> <bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> <property name="prefix" value="/WEB-INF/templates/" /> <!-- <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 class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine" /> <property name="viewNames" value="*.html" /> </bean>
@RequestMapping("/thymeleaf") public String thymeleafView(){ return "thymeleaf.html"; } @RequestMapping("/jsp") public String jspView(){ return "jstl.jsp"; }
<property name="viewNames" value="*thymeleaf/*" /> @RequestMapping(value="/test") public ModelAndView dboxPrint(Model model){ ModelAndView modelAndView = new ModelAndView("thymeleaf/test"); return modelAndView; }
方法一,排除静态内容如 images, css, js 等等
<servlet> <servlet-name>springframework</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/images/*</url-pattern> <url-pattern>*.css</url-pattern> <url-pattern>/js/*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>springframework</servlet-name> <url-pattern>/welcome.jsp</url-pattern> <url-pattern>/welcome.html</url-pattern> <url-pattern>*.html</url-pattern> </servlet-mapping>
方法二
<mvc:resources location="/images/" mapping="/images/**" /> <mvc:resources location="/css/" mapping="/css/**" /> <mvc:resources location="/js/" mapping="/js/**" />
配置 url-pattern 增加需要传递给Spring的扩展名
<servlet> <servlet-name>springframework</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springframework</servlet-name> <url-pattern>/welcome.jsp</url-pattern> <url-pattern>/welcome.html</url-pattern> <url-pattern>*.json</url-pattern> <url-pattern>*.xml</url-pattern> <url-pattern>*.html</url-pattern> </servlet-mapping>
背景描述:Springboot 入口文件 Application.java 的包是 package api; 为了让 domain,pojo 共用,于是将 domain 放到Maven module下命令为 common。启动后出现这个故障。
解决方案增加 @EntityScan("common.domain") 即可。
package api; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication @EnableScheduling @EnableEurekaClient @EntityScan("common.domain") public class Application { public static void main(String[] args) { System.out.println( "Service Api Starting..." ); SpringApplication.run(Application.class, args); } }
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。