springmvc不进入Controller导致404

一.摘要

emmmm..
对springmvc不太熟练的情况下,如果不出意外的话,项目启动后出现404页面是很烦人。
在这里,我记录一下可能会导致出现这种情况的原因<因为之前的文章结构不算是很清晰,所以这次做一些修改>

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

1.启动项目后,访问项目无法进入主页,从而出现404;

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

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

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

2.项目启动并且成功进入主页后,主页上一些通过controller层跳转的操作无法找到网页,导致404;

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

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

2.2.3. 是否配置了对@Controller标签的支持:<mvc:annotation-driven />

2.2.4. 是否正确配置了对Controller层的扫描:<context:component-scan base-package="controller">

2.2.5. 检查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如下

多说一句:

如果你喜欢在类名上(也就是@Controller下)也添加一个@RequestMapping(),

那么在类里面的子@RequetMapping注解中的路径是不能再有/的。

<我记得我之前试过,如果说的不对,或者是有人没看懂,就当我没说>

③. 前端拦截器:

注意拦截路径: 

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

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


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

顾名思义,略

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

①. 该配置我配置在了springmvc-config.xml文件中,在下面讲解合适的时候我会附上代码截图

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

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

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

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

3.3.4.是否正确配置了对Controller层的扫描:<context:component-scan base-package=" ">

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

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

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

②. 现在,附上springmvc-config的代码截图:

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

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

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

<param-name />标签:contextConfigLocation是固定的;

<param-value />标签:加载spring配置文件(注意路径问题)


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

先解释<servlet />标签中的内容

<servlet>

<servlet-name />:先不说,会在下面(紧挨<init-param />)解释

<servlet-class />:springmvc的核心,可以理解为对spirngmvc的支持,固定非修改

<init-param>:可以理解为对springmvc的初始化,即为springmvc指定需要加载的xml配置

<param-name />:固定非修改

<param-value />:加载springmvc配置文件(具体根据自己的结构目录配置)

<init-param/>

<servlet/>

<servlet-name />:将加载到的springmvc.xml文件起一个别名

<servlet-mapping>

<servlet-name />:

与上面的servlet-name标签保持一致,表示对上面的springmvc.xml做mapping配置

<url-patter />: 配置前端拦截器路径。

拦截器路径的配置方式包括: *.do 、*.action 、/ 

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

<servlet-mapping/>


如果有书写错误的地方,或者是有问题的地方请及时评论或者是私信,只要我看到就一定会回复,

以免误导个别萌新。

虽然,我也是个萌新。


你好,我叫吕小布。









posted @ 2018-09-04 14:13  星朝  阅读(28598)  评论(1编辑  收藏  举报