问题:No Spring WebApplicationInitializer types detected on classpath

来源:7-2 项目作业

Jerry_Zheng24

2022-11-23 13:43:54

0. 分析

1、使用技术点:SpringMVC ,FreeMarker

2、创建实体类,测试类

Tips:在.ftl文件中,使用list进行遍历输出,参考在线手册

3、在页面展示效果图对应数据


1.Spring MVC整合FreeMarker的三个步骤

1.在工程的配置文件pom.xml中引入依赖 freemarker:

手动加载刷新下

 <?xml version="1.0" encoding="UTF-8"?>
 <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>com.imooc</groupId>
     <artifactId>smh01</artifactId>
     <version>1.0-SNAPSHOT</version>
 
     <repositories>
         <repository>
             <id>aliyun</id>
             <name>aliyun</name>
             <url>https://maven.aliyun.com/repository/public</url>
         </repository>
     </repositories>
 
 
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
             <version>5.1.9.RELEASE</version>
         </dependency>
 
         <dependency>
             <groupId>org.freemarker</groupId>
             <artifactId>freemarker</artifactId>
             <version>2.3.28</version>
         </dependency>
 
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-context-support</artifactId>
             <version>5.1.9.RELEASE</version>
         </dependency>
     </dependencies>
 
 </project>

2./3.

在Spring 的配置文件applicationContext.xml中:

  • 通知Spring MVC,启用的视图解析器的模板引擎是FreeMarker;

  • 配置FreeMarker本身的参数



 <?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" xmlns:mv="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context.xsd
             http://www.springframework.org/schema/mvc
             http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
     <context:component-scan base-package="com.imooc.springmvc"/>
 
 
     <!--启用Spring MVC的注解开发模式-->
     <mvc:annotation-driven>
         <mvc:message-converters>
             <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                 <property name="supportedMediaTypes">
                     <list>
                         <value>text/html;charset=utf-8</value>
                     </list>
                 </property>
             </bean>
         </mvc:message-converters>
 
     </mvc:annotation-driven>
 
     <mvc:default-servlet-handler/>
 
     <bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
         <property name="contentType" value="rext/html;charset=utf-8"/>
         <property name="suffix" value=".ftl"/>
     </bean>
     
     <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
         <property name="templateLoaderPath" value="/WEB-INF/ftl"/>
         <property name="freemarkerSettings">
             <props>
                 <prop key="defaultEncoding">UTF-8</prop>
             </props>
         </property>
     </bean>
     
 </beans>




2.业务编码

新建实体类:

 package com.imooc.springmvc.entity;
 
 
 
 public class Goods {
     private String number;
     private String name;
     private Integer price;
     private String date;
 
     public Goods() {
     }
 
     public String getNumber() {
         return number;
     }
 
     public void setNumber(String number) {
         this.number = number;
     }
 
     public String getName() {
         return name;
     }
 
     public void setName(String name) {
         this.name = name;
     }
 
     public Integer getPrice() {
         return price;
     }
 
     public void setPrice(Integer price) {
         this.price = price;
     }
 
 
     public String getDate() {
         return date;
     }
 
     public void setDate(String date) {
         this.date = date;
     }
 }


在controller控制层的GoodsFreemarkerController类中:

 package com.imooc.springmvc.controller;
 import com.imooc.springmvc.entity.Goods;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.servlet.ModelAndView;
 import java.util.ArrayList;
 import java.util.List;
 
 
 @Controller
 public class GoodsFreemarkerController {
 
     @GetMapping("/test")
     public ModelAndView showTest(){
         ModelAndView mav = new ModelAndView("/goods");
 
         List<Goods> list = new ArrayList();
 
         Goods goods1 = new Goods();
         goods1.setNumber("1001");
         goods1.setName("O字黄金链");
         goods1.setPrice(123000);
         goods1.setDate("2021-01-01");
 
         Goods goods2 = new Goods();
         goods2.setNumber("1001");
         goods2.setName("镶宝链");
         goods2.setPrice(223105);
         goods2.setDate("2021-02-11");
 
         list.add(goods1);
         list.add(goods2);
 
         mav.addObject("list", list);
         return mav;
     }
 
 
 }
 




在目录WEB-INF|ftl中,新建模板文件test.ftl

在.ftl文件中,使用list进行遍历输出

 <table class="table table-hover table-bordered" border="1">
 
     <thead>
         <tr style="color: darkslateblue;font-size: 20px">
             <th>编号</th>
             <th>商品名称</th>
             <th>商品价格</th>
             <th>上新时间</th>
         </tr>
     </thead>
 
     <tbody>
         <#list list as item>
             <tr style="font-size: 15px">
                 <td>${item.number}</td>
                 <td>${item.name}</td>
                 <td>${item.price}</td>
                 <td>${item.date}</td>
             </tr>
         </#list>
     </tbody>
 
 </table>



3. 结果


Tomcat启动:

浏览器:

23.1113


莫名其妙弹出:


23.1115


请问:老师问题出在哪里?


日志文件:

23-Nov-2022 13:37:19.452 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log No Spring WebApplicationInitializer types detected on classpath
23-Nov-2022 13:37:19.736 淇℃伅 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Initializing Spring DispatcherServlet 'springmvc'

文件目录:

https://img.mukewang.com/climg/637db2eb090b5bc012480803.jpg

写回答

1回答

好帮手慕小蓝

2022-11-23

同学你好,在同学提供的代码中,applicationContext.xml的ViewResolver的value中存在拼写错误,开头应当是“text”而不是“rext”。

祝学习愉快~

0
herry_Zheng24
hp>谢谢老师!

已改正,并成功运行,得到如下结果:

https://img.mukewang.com/climg/637de8a1092e7f5307360523.jpg

h022-11-23
共1条回复

0 学习 · 9886 问题

查看课程