springmvc不进入Controller导致404的问题

 更新时间:2022年02月22日 09:40:01   作者:叫我吕小布  
这篇文章主要介绍了springmvc不进入Controller导致404的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一.摘要

emmmm..

对springmvc不太熟练的情况下,如果不出意外的话,项目启动后出现404页面是很烦人。

在这里,我记录一下可能会导致出现这种情况的原因<因为之前的文章结构不算是很清晰,所以这次做一些修改>

二.出现404的分类以及会导致的原因

1.启动项目后,无法访问主页出现的404

2.1.1.查看项目是否启动成功;

2.1.2.确认项目地址的正确性;

2.1.3.作为项目主页的html页面应该放到工程的WebContent的根目录下;

2.项目启动并且成功进入主页后,访问其他页面出现的404

2.2.1. 相关操作访问路径是否正确;

2.2.2. Controller层是否被注解@Controller标注为组件;

2.2.3. springmvc配置文件中,是否配置了对@Controller标签的支持:<mvc:annotation-driven />;

2.2.4. springmvc配置文件中,是否配置了对Controller层的扫描: <context:component-scan base-package="controller">;

2.2.5. sprinmvc的配置文件中,视图解析器路径是否配置异常;

2.2.6. 检查web.xml中的相关配置是否正确:

1.是否配置了spring的监听,以及正确加载spring相关配置文件

2.是否正确加载springmvc的配置文件

三.分情况详细说明

3.1.先附上并简单介绍一下我的工程结构目录图

简单介绍一下applicationContext-*为什么会有三个:

  • applicationContext-dao:  里面配置了数据源,以及对mybatis的相关支持<注意我的项目是ssm>
  • applicationContext-service:里面配置了事务管理
  • applicationContext-trans:  配置了对Service层的扫描

如果没有对Service层的扫描,就无法使用到@Service标注的组件,从而导致Controller中的出现空指针情况。

emmm,,,稍微考虑了一下,我决定把applicationContext-trans的配置截图附上:

你看把,真的是只配置了对Service层注解的扫描

3.2.启动项目后,无法访问主页出现404

3.2.1. 查看项目是否启动成功;

    略<sorry,没什么可说的>

3.2.2.确认项目地址的正确性;

    略

3.2.3.作为项目主页的html页面应该放到工程的WebContent的根目录下;

   参照上面项目结构

3.3.项目启动并且成功进入主页后,访问其他页面出现404; 3.3.1.相关操作访问路径是否正确;

检查包括:

①. 页面的请求路径

②. Controller层的路径

③. web.xml是否配置了对前端请求的拦截路径<怎么这么多情况....>

截个图,给个案例:

①. index.jsp如下

②. Controller如下

③. 前端拦截器:

注意拦截路径:   /表示拦截一切路径,不能是/* 

(如果你要问为什么,抱歉,人家这么规定我也无能为力)

3.3.2.Controller层是否被@Controller标注为组件

顾名思义,略。(如果这个都不会,你该考虑一下是不是还要把demo给进行下去了)

3.3.3.springmvc配置文件中,是否配置了对@Controller标签的支持:<mvc:annotation-driven />

①. <mvc:annotation-driven />我配置在了springmvc-config.xml文件中,在下面讲解合适的时候我会附上代码截图

<为什么老是截图?因为我愿意...>

②. 什么是<mvc:annotation-driven/>

相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。

简单来说就是: 提供了使用并且能够识别@Controller注解的前提.

3.3.4.springmvc配置文件中,是否配置了对Controller层的扫描:<context:component-scan base-package=" ">

既然上面配置了对@Controller的支持,现在就需要配置对@Controller注解的扫描

值得注意的是(比如在我的demo里),

base-package="controller",而不是bask-package="controller.*";

3.3.5.springmvc配置文件中,是否正确配置了视图解析器的路径

<!-- 配置视图解析器 -->  
<bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <property name="prefix" value="/WEB-INF/jsp/"/>   //value路径配置的是jsp所在的文件夹目录
    <property name="suffix" value=".jsp"/>            //value配置的是页面的后缀
</bean> 

现在,附上springmvc配置文件springmvc-config的代码截图(现在就是合适的时候):

在这里面包括了上述说的1.注解的支持;2.扫描@Controller注解所在包的配置;3.视图解析器的配置

3.3.6.检查web.xml中的相关配置是否正确

注意:我的配置文件在一个资源文件夹下,具体路径还请根据自己的结构目录来配置

①. 是否配置了spring的监听,以及正确加载spring相关配置文件

//配置spring相关配置文件
<context-param>
	<param-name>contextConfigLocation</param-name>  //不可修改
	<param-value>classpath:config/spring/applicationContext-*.xml</param-value>
</context-param>
 
//配置spring监听
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

附上截图,方便查看:

②. 是否正确加载springmvc的配置文件

标签概念及代码如下:

//配置servlet
<servlet>
    <servlet-name>springmvc</servlet-name>   //可以理解为刚给当前servlet起名字,可自定义
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>//springmvc的核心处理器,不可自定义
	<init-param>
		<param-name>contextConfigLocation</param-name> //核心处理器的初始化,不可自定义
		<param-value>classpath:springmvc/springmvc-config.xml</param-value> //springmvc配置文件的目录,根据自己结构目录自定义
	</init-param>
</servlet>
 
//配置servletMapping
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>  //可以理解为指定被Mapping的servlet的名称(代码第二行中的名称相同)
	<url-pattern>/</url-pattern>  //配置拦截路径,/表示全拦截
</servlet-mapping>

<url-pattern/> 拦截器路径的配置方式包括: *.do 、*.action 、/ 

意思是分别:拦截以do、action、任意后缀或者是无后缀的前端请求

附上截图,方便大家更直观的看:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java反射机制的讲解

    Java反射机制的讲解

    今天小编就为大家分享一篇关于Java反射机制的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Java创建随机数的四种方式总结

    Java创建随机数的四种方式总结

    这篇文章主要介绍了java的四种随机数生成方式的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2022-07-07
  • Springboot使用Redis中ZSetOperations实现博客访问量

    Springboot使用Redis中ZSetOperations实现博客访问量

    在日常的网站使用中,经常会碰到页面的访问量,本文主要介绍了Springboot使用Redis中ZSetOperations实现博客访问量,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Spring IOC创建对象的两种方式

    Spring IOC创建对象的两种方式

    这篇文章主要给大家介绍了关于Spring IOC创建对象的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 分享5个Java接口性能提升的通用技巧

    分享5个Java接口性能提升的通用技巧

    作为后端开发人员,我们总是在编写各种API。这些API在服务初期可能表现不错,但随着用户数量的增长,一开始响应很快的API越来越慢,这时候你就需要考虑如何优化你的API性能了。在这篇文章中,我总结了一些行之有效的API性能优化技巧,希望能给有需要的朋友一些帮助
    2023-01-01
  • SpringBoot超详细讲解Thymeleaf模板引擎

    SpringBoot超详细讲解Thymeleaf模板引擎

    这篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,类似于Velocity、FreeMarker等传统引擎,关于其更多相关内容,需要的小伙伴可以参考一下
    2022-07-07
  • Java的AQS基本原理详细分析

    Java的AQS基本原理详细分析

    这篇文章主要介绍了Java的AQS基本原理详细分析,AQS是Abstract Queued Synchronizer的简称,AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架,本文主要讲解分析其基本原理,需要的朋友可以参考下
    2024-01-01
  • @RequestBody,@RequestParam和@Param的区别说明

    @RequestBody,@RequestParam和@Param的区别说明

    这篇文章主要介绍了@RequestBody,@RequestParam和@Param的区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java下载文件时文件名乱码问题解决办法

    Java下载文件时文件名乱码问题解决办法

    我最近在开发时遇到了文件另存为时文件名出现乱码,在火狐上正常的文件名,在IE中又出现乱码问题,然后好不容易在IE下调试好了文件名乱码问题,在火狐下又出现乱码,最后终于感觉这样是能解决了。具体如下:
    2013-04-04
  • Spring Gateway自定义请求参数封装的实现示例

    Spring Gateway自定义请求参数封装的实现示例

    这篇文章主要介绍了Spring Gateway自定义请求参数封装的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论