这是因为 Tomcat 版本,把 Tomcat10 换成 Tomcat9 就可以解决这个问题了。下面是我正在做的一个 Spring MVC 入门案例,因为 Tomcat 10,DispatcherServlet 不能拦截请求,访问一个路径时页面直接显示 404。

<web-app>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

springmvc-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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"> <bean name="/fc" class="controller.FirstController"/> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> </beans>

FirstController.java:

public class FirstController implements Controller {

  @Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("msg", "这是我的第一个 MVC 程序");
mav.setViewName("/WEB-INF/jsp/first.jsp");
return mav;
} }

把 Idea 的服务器换成 Tomcat9。记得也把 Classes 修改了,用 Tomcat9 的 lib:

还需要给项目 javax 前缀开头的 servlet 依赖:

<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>

总结:这类开发软件最好不要要用最新的,但也不需要用最老的,可以低于最一个版本,新版本改了很多东西,就容易发生各种问题。

最新文章

  1. Ubuntu系统下lnmp环境搭建和Nginx多站点配置
  2. C#--字符、字符串学习
  3. Repeater的Item项绑定DropDownList
  4. C#动手实践:Kinect V2 开发(1):初步了解及环境搭建
  5. easyui datagrid 点击表头的事件
  6. websocket和swoole
  7. Linux操作系统学习笔记
  8. HTTP的GET/POST细节
  9. [自娱自乐] 3、超声波测距模块DIY笔记(三)
  10. 我在用的mac软件(3)-效率篇
  11. c语言数据结构:递归的替代-------回溯算法
  12. openSUSE13.1无法打开Yast的安装/移除软件管理软件的解决办法&#183;(未解决,临时方法) 收获:有问题,读日志
  13. c#WebBrowser进阶
  14. nullptr和NULL 区别
  15. bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊 動態樹
  16. webserver/CGI
  17. ecshop加广告出现广告位的宽度值必须在1到1024之间的解决方法
  18. easelJS - Cache_vday
  19. Spring Boot实战笔记(二)-- Spring常用配置(Scope、Spring EL和资源调用)
  20. jquery只获取自身文本节点,不获取子元素的

热门文章

  1. 【Shell案例】【!~//、grep反向查找、sed流编辑器】13、去掉所有包含this的句子
  2. 【Day02】Spring Cloud组件的使用--Nacos配置中心、sentinel流量控制、服务网关Gateway、RocketMQ、服务调用链路(Sleuth、zipkin)
  3. 【每日一题】【树的dfs递归,返回多次,注意都遍历完后才最终返回】2022年1月6日-112. 路径总和
  4. Cookie添加方法
  5. UIAutomator测试框架介绍
  6. A_A01_001 KEIL4-KEIL5软件安装
  7. Jmeter 之连接数据库
  8. 为什么NoSQL数据库这么受欢迎?
  9. 手写Pinia存储的数据持久化插件
  10. 体验一个前端视图层的mvvm的框架Knockoutjs(双向绑定,模板..)..解放您的双手,不再处理那么多的dom操作..快速实现视图层数据与UI的交互处理