springmvc前台访问404,不能进入controller,后台不报错问题解决方案心得

      这是我第一次写博客,目的很明确,为了帮助像我一样的springmvc初学者解决一些问题,还有就时对自己返的错误的一个总结。

      从文章标题不难看出,是使用springmvc时出现了404错误,这里对具体的环境做一个描述。

      环境:

      1、项目开发环境为linux,开发工具eclipse。

      2、项目使用maven构建的web工程,框架搭建为spring+springmvc+mybatis。

      问题具体描述:

      从标题不难看出,框架搭建号后,编译部署并启动项目一切正常,并没有报任何的错误,但是从页面访问controller时缺报404[Not Found]的错误。

      解决方案:

      1、在这需要说明的是,由于后台从始至终没有报任何的错误,故我的文章里不会有出错的贴图,有人就会说了,为什么不把自己的配置文件贴给大家看呢,我认为没有必要,  因为接下来我会给大家讲解排错方法,并且贴上已经访问成功的完整代码贴图。其实刚开始一遇见这样的错误,自己也排查了一边没有任何的发现,于是就网上百度各种搜索,其中也搜到一些结果,按照提示操作一通都没有成功。这里我总结一下网上各种帖子的解决方案:

            1、大量文章都是千篇一律的说处理器映射器和处理器适配器以及视图解析器没有配置好,于是教你怎么去配置处理器映射器,这里我总结一个处理器映射器和适配器以及视图解析器的配置

                  1.1、非注解的处理器映射器和适配器配置,注意:在这里处理器映射器的配置必须和处理器适配器的配置是成对的,还有必须在配置文件里声明注入你的controller,并且这个controller必须实现Controller接口。非注解的配置访问是根据声明注入的bean name来进行映射处理的,必须有name,而且name的值必须有根符号(“/”)。

                  

                 1.2、注解的处理器映射器和适配器配置。注解的controller类必须使用@Controller进行注解,类中的方法使用@RequestMapping("")进行注解。注解的配置方式还有一种,即<mvc:annotation-driven/>注解驱动配置,这样更方便,实际项目也是这样使用的。

                 1.3、视图解析器的配置。

            

                 至此,springmvc的controller需要的处理器映射器和处理器适配器以及视图解析器的配置已经完成,当然实际要运行的时候还必须要有Controller包扫描,不然你的程序在实例化完sqlSessionFactory后会一直卡在那里,不做任何操作,页面也不会有任何的反映。

      2、这网上的第二种解决方法说的最多的就是我上面说的Controller的包扫描没有加或者包扫描的配置是错误的,这如果说其他配置都OK的话,如果没有加包扫描,那么他不回报任何的错误,但是会输出日志,创建SqlSessionFactory的日志是有的,不会什么信息都没有。有的人将Controller的包扫描加成这样

<context:component-scan base-package="com.springmvc.ssm.controller.*"/>也是什么都没有的。正确的包扫描是这样的:

      3、当然也有说jar包没有,这也有可能是有的,没有jar包报404很正常的。这里要说的是如果出现404,你的判断是jar包没有,那你就得去你的项目发布路径下的WEB-INF下的lib文件夹去找jar包,而不是你的eclipse里看有没有。更需要注意的是,有人在tomcat运行设置过发布路径,那就必须在你设置的发布路径下找,我的设置为tomcat的安装目录下的webapps下了。

      4、其实忘了一个最多的说法,那就是说你的请求地址是错误的,这个只能说自己认真排查,一般人在出现404的时候第一反应就是请求地址的核对,所以这个我也不说了。但是在这里我强调一个现象,就是你的请求地址是正确的,但是你的目录里没有Controller里的方法返回的页面,这样也会出现404,但是这个404和之前的404是不一样的。比如我在我的testController的items映射的方法里返回的itemsLists,实际我的jsp下的JSP文件没有一个itemsLists.jsp,那么页面的错误就会是这样的:

            

      5、还有一种解决办法说web.xml配置DispatcherServlet的时候servlet的映射关系<url-pattern>配置不正确,应该将<url-pattern>/*</url-pattern>改为<url-pattern>/*</url-pattern>,去掉根号后面的星号,当然如果确实这样写了,那这也是一种解决办法。

      以上就是网上所说的解决这一问题的办法,其实也是我遇到这样的问题,在网上一通乱搜,挨个试了个遍。那么网上这么多的解决方法,我们到底应该去按哪个方法执行,像我一样挨个试一遍?就跟我一样,全部试完也不见得能解决你的问题,因为每个人的问题发生的原因都不一样,但是结果都一样,访问Controller失败,返回404。这也就是我写这篇文章的真正原因,我在这里不会贴出我解决该问题的代码,没有用对你,也许你的问题按照我的方法解决不了。那么我在这里将这个问题的解决思路抽取出来,这样大家就不用在网上搜各种解决方案还不一定适合你,只要按着这个思路找问题的根源,就不会有多大的问题。

      解决方案思路:

      1、分析问题原因

            我们既然知道是404,那就肯定是路径的问题,至少在现有的开发环境中大多数404都是各种路径的问题,不管是没有对应的文件还是

评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值