springmvc不进入Controller导致404的问题

目录
  • 一.摘要
  • 二.出现404的分类以及会导致的原因
    • 1.启动项目后,无法访问主页出现的404
    • 2.项目启动并且成功进入主页后,访问其他页面出现的404
  • 三.分情况详细说明
    • 3.1.先附上并简单介绍一下我的工程结构目录图
    • 3.2.启动项目后,无法访问主页出现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、任意后缀或者是无后缀的前端请求

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

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

(0)

相关推荐

  • SpringMVC对自定义controller入参预处理方式

    目录 Spring Mvc对自定义controller入参预处理 HandlerMethodArgumentResolver接口说明 初学者一般喜欢类似下面的代码 我们需要定义如下的一个参数分解器 注册自定义分解器 SpringMVC技巧之通用Controller 1. 前言 2. 问题 3. 解决方案 4. 使用 5. 特殊需求 6. 完善 Spring Mvc对自定义controller入参预处理 在初学springmvc框架时,我就一直有一个疑问,为什么controller方法上竟然可以放

  • Springmvc工程跳转controller无效的解决

    目录 Springmvc跳转controller无效 1.springmvc-servlet.xml 2.web.xml,在改配置文件中将 springmvc无法进入controller.后台也不报错 1.检查是否配置 2.是否配置 3.controller类是否加上 4.视图解析器 5.web.xml文件是否配置 Springmvc跳转controller无效 在实际搭建Springmvc工程,通过controller进行业务处理和逻辑跳转,经常发现接口URL拼写正确但是访问不到控制层,这里

  • springMVC不扫描controller中的方法问题

    目录 springMVC不扫描controller 下面是正确的spring-mvc.xml文件 那我遇到这个问题的原因是什么呢? springMVC包扫描问题 为什么@COntroller要放在springMVC中? springMVC不扫描controller 最近把之前的一个Maven项目在一个新的电脑环境上导入Eclipse,启动时却发现不扫描 controller 中的方法 下面是正确的 spring-mvc.xml 文件 <?xml version="1.0" enc

  • 关于SpringMVC在Controller层方法的参数解析详解

    目录 自定义参数解析器 实现效果 实现和配置 Spring提供解析器 一些使用Tricky 总结 使用版本: spring-boot: 2.1.6.RELEASE sping: 5.1.8.RELEASE java: openjdk 11.0.13 自定义参数解析器 为了能够实现自定义参数解析器,只需要实现 HandlerMethodArgumentResolver 并将添加到 WebMvcConfigurer#addArgumentResolvers 即可. 实现效果 下面以添加一个获取请求头

  • SpringMVC项目访问controller时候报404的解决

    目录 SpringMVC访问controller时候报404 在网上搜各种方法都没有解决 终于解决 SpringMVC 无法访问到controller的可能原因 从网上查的资料 SpringMVC访问controller时候报404 自己写的SpringMVC项目,突然发现访问controller路径的时候页面显示404,看控制台也没有报严重错误,只是说该路径找不到,并且单独访问jsp也能正常访问. 控制台报这种错误 No mapping found for HTTP request with

  • SpringMVC中@controllerAdvice注解的详细解释

    目录 1.全局异常处理 2.全局数据绑定 3.全局数据预处理 总结 这是一个增强的 Controller.使用这个 Controller ,可以实现三个方面的功能: 1.全局异常处理: 2.全局数据绑定 3.全局数据预处理 1.全局异常处理 使用 @ControllerAdvice 实现全局异常处理,只需要定义类,添加该注解即可定义方式如下: @ControllerAdvice public class MyGlobalExceptionHandler { @ExceptionHandler(E

  • SpringMVC实现Controller的三种方式总结

    目录 实现Controller的三种方式 1.实现Controller接口 2.实现HttpRequestHandler接口 3.全注解 关于SpringMVC的控制器(Controller) 控制器Controller 实现Controller的三种方式 1.实现Controller接口 实现Controller接口,重写handleRequest方法,ModelAndView对象是一个模型视图对象,既可以添加数据,又可以保存页面信息,并且处理请求的方式是转发.这个对象要拆成两部分来看 mod

  • springmvc不进入Controller导致404的问题

    目录 一.摘要 二.出现404的分类以及会导致的原因 1.启动项目后,无法访问主页出现的404 2.项目启动并且成功进入主页后,访问其他页面出现的404 三.分情况详细说明 3.1.先附上并简单介绍一下我的工程结构目录图 3.2.启动项目后,无法访问主页出现404 ​ 一.摘要 emmmm.. 对springmvc不太熟练的情况下,如果不出意外的话,项目启动后出现404页面是很烦人. 在这里,我记录一下可能会导致出现这种情况的原因<因为之前的文章结构不算是很清晰,所以这次做一些修改> 二.出现

  • SpringMVC编程使用Controller接口实现控制器实例代码

    Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1.收集.验证请求参数并绑定到命令对象: 2.将命令对象交给业务对象,由业务对象处理并返回模型数据: 3.返回ModelAndView(Model部分是业务对象返回的模型数据,视图部分为逻辑视图名). DispatcherServlet,主要负责整体的控制流程的调度部分: 1.负责将请求委托给控制器进行处理: 2.根据控制器返回的逻辑视图名选择具体的视图进行渲染(并把

  • 解决Spring Boot 正常启动后访问Controller提示404问题

    问题描述 今天重新在搭建Spring Boot项目的时候遇到访问Controller报404错误,之前在搭建的时候没怎么注意这块.新创建项目成功后,作为项目启动类的Application在com.blog.start包下面,然后我写了一个Controller,然后包的路径是com.blog.ty.controller用的@RestController 注解去配置的controller,然后路径也搭好了,但是浏览器一直报404.最后找到原因是Spring Boot只会扫描启动类当前包和以下的包 ,

  • springMVC如何将controller中Model数据传递到jsp页面

    在action中存放数据,代码如下: @Controller // 加入到IOC容器 //@RequestMapping(value="/topic") public class TopicAction { @Resource(name = "topicServiceImpl") private TopicService topicService; /** * 首页显示 */ @RequestMapping(value="/index") pub

  • Vue实现远程获取路由与页面刷新导致404错误的解决

    一.背景 先简单介绍一下现在项目情况:前后端分离,后端服务是Java写的,前端是Vue+ElementUI. 最近的一个需求是:通过后端Api去获取前端路由表,原因是每个登录角色对应的前端路由表可能是不一样的(权限问题) 二.遇到的问题 因为前端Vue+ElementUI项目是单页应用--即只有一个index.html页面,如果路由从远程获取的话,每次F5或点击刷新按钮刷新页面的时候,就会找不到对应的路径而报404错误 三.解决方案 1.通过api远程获取路由,然后在前端生成对应路由 /* 将

  • 解决IDEA误删out目录下的文件导致404无法访问的问题

    前言 有时候IDEA下写Web项目时可能会遇到如下问题: 误删out目录下的文件导致开启服务器后无法访问页面的问题 新增加一个页面或添加一张图片,在项目编译运行后,未能自动更新到out\artifacts\目录下,从而导致页面无法访问,或者图片未能加载 解决方案 只需要把out目录整个删除掉,然后再重新开启服务器,build整个项目,就会重新生成out目录 补充:idea 删除target无法访问,文件夹提示无权限,项目无法启动打包 很尴尬,我在使用idea的时候,我手动的选中项目中的某个包,移

  • springMVC如何将controller中数据传递到jsp页面

    1> 将方法的返回值该为ModelAndView在返回时,将数据存储在ModelAndView对象中如: newModelAndView("/WEBINF/jsp/showData.jsp","message",message) 其中第一个参数为url,第二个参数为要传递的数据的key,第三个参数为数据对象. 在这里要注意的是 数据是默认被存放在request中的. 示例: @RequestMapping(value="/mad/showData_1

随机推荐