Springmvc 访问页面出现404错误

配置springmvc时出错:
我在web.xml中添加
<!-- springMvc配置 -->
  <servlet>
   <servlet-name>springMvc</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- springMvc-XML配置文件 -->
   <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
   </init-param>
   
   <!-- 执行顺序 -->
   <load-on-startup>0</load-on-startup>
  </servlet>
 
  <servlet-mapping>
   <servlet-name>springMvc</servlet-name>
   <url-pattern>/*</url-pattern>
  </servlet-mapping>

配置springmvc项目,
1.启动tomcat没有报错,通过Controller的方法访问到页面中,总是提示404错误。提示路径为:项目名/xxx.jsp(页面都在WebRoot根目录下) 发现路径也没有错。
2.访问index.jsp还是提示404错误。
3.在Controller中的方法中断点,Debug可以进来,所以springmvc中会扫描Controller类。
5.MyEclipse控制台没有报错,当访问页面时控制台会输出:警告: No mapping found for HTTP request with URI [/springEcharts001/radio1.jsp] in DispatcherServlet with name 'springMvc'
当看到No mapping后,觉得会不会是web.xml中  <servlet-mapping>的错误,于是将
<servlet-mapping>
   <servlet-name>springMvc</servlet-name>
   <url-pattern>/*</url-pattern>
  </servlet-mapping>

改成
<servlet-mapping>
   <servlet-name>springMvc</servlet-name>
   <url-pattern>/</url-pattern>
  </servlet-mapping>
,重启服务器,再访问页面后发现真的成功了。

到这里,就引发了/和/*的区别。

解答地址:
http://m.blog.csdn.net/blog/liuxiao723846/43733287
/和/*的区别:
< url-pattern > / </ url-pattern >   不会匹配到*.jsp,即:*.jsp不会进入spring的 DispatcherServlet类 。
< url-pattern > /* </ url-pattern > 会匹配*.jsp, 会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。 

总之,关于web.xml的url映射的小知识:
<url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)


http://www.iteye.com/problems/95145

1、在tomcat\conf\web.xml中定义了 

Java代码   收藏代码
    1.  <servlet>  
    2.      <servlet-name>default</servlet-name>  
    3.      <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>  
    4.      <init-param>  
    5.          <param-name>debug</param-name>  
    6.          <param-value>0</param-value>  
    7.      </init-param>  
    8.      <init-param>  
    9.          <param-name>listings</param-name>  
    10.          <param-value>false</param-value>  
    11.      </init-param>  
    12.      <load-on-startup>1</load-on-startup>  
    13.  </servlet>  

    <!-- The mapping for the default servlet --> 
    <servlet-mapping> 
        <servlet-name>default</servlet-name> 
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 

即默认的,作用是如果,其主要作用就是如果过来的请求是如html/css/js等静态资源时 读取流返回。 

另外还一个类似的拦截所有*.jsp的 
Java代码   收藏代码
    1.  <servlet>  
    2.        <servlet-name>jsp</servlet-name>  
    3.        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
    4.        <init-param>  
    5.            <param-name>fork</param-name>  
    6.            <param-value>false</param-value>  
    7.        </init-param>  
    8.        <init-param>  
    9.            <param-name>xpoweredBy</param-name>  
    10.            <param-value>false</param-value>  
    11.        </init-param>  
    12.        <load-on-startup>3</load-on-startup>  
    13.    </servlet>  

   <!-- The mapping for the JSP servlet --> 
    <servlet-mapping> 
        <servlet-name>jsp</servlet-name> 
        <url-pattern>*.jsp</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
        <servlet-name>jsp</servlet-name> 
        <url-pattern>*.jspx</url-pattern> 
    </servlet-mapping> 


如果springmvc拦截的是/ 即替换掉了默认的,那么这个时候我们可以使用如 
<mvc:default-servlet-handler/>   ---->委托给那个default 
<!-- 静态资源映射 -->  
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" />  
see  http://jinnianshilongnian.iteye.com/blog/1423971  

进行静态资源的随意映射了。 

http://blog.sina.com.cn/s/blog_534f69a00101332u.html

No mapping found for HTTP request with URI

出现这个问题的原因是在web.xml中配置错了,如:

 <servlet>
 <servlet-name>springMVCDispatcherServlet</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <init-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>/WEB-INF/springMVC-servlet.xml</param-value>
 </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
 <servlet-name>springMVCDispatcherServlet</servlet-name>
 <url-pattern>/*</url-pattern>
 </servlet-mapping>

当你在control中返回一个路径的时候,它又把路径(/view/index.jsp)当作一个请求被dispatcherServlet所拦截。所以会抛出异常,解决的办法有两个:

第一即使让dispatcherServlet的拦截加上后缀如:*.do;

这样以jsp后缀的就不会别拦截了。

第二个方法是在spring-servlet.xml中加入:

<mvc:default-servlet-handler/>


还是有疑问,谁能不能补充下?

### 回答1: 如果在使用Spring MVC访问controller时遇到404错误,通常是因为controller没有正确映射到请求路径。确保使用了@RequestMapping或@GetMapping注解来映射请求路径,并且路径是正确的。还要检查是否在Spring配置文件中正确配置了路径映射。 ### 回答2: Spring MVC框架是一种基于MVC设计模式的Java Web应用框架,可以快速开发Web应用程序。在使用Spring MVC框架开发Web应用过程中,有时候会发现在访问Controller的时候会出现404的错误。 出现这种问题的原因一般有以下几个方面: 1. URL映射错误:在Spring MVC框架中,Controller的URL映射是根据@RequestMapping注解来完成的。如果URL映射设置错误或者Controller没有正确的映射,就会出现404错误。 2. Controller没有在Spring MVC配置文件中进行配置:当我们创建一个Controller类的时候,需要将该类注册到Spring MVC框架中。如果没有在Spring MVC配置文件中进行配置,就会出现404错误。 3. 没有编写视图页面:当Controller找到了相应的处理方法并经过处理之后,需要将结果返回给浏览器。这个结果一般是一个视图页面。如果没有编写相应的视图页面,就会出现404错误。 解决上述问题的方法如下: 1. 检查URL映射是否正确:需要检查Controller的@RequestMapping注解设置是否正确,并且需要注意大小写。如果发现设置有误,需要进行修改。 2. 将Controller注册到Spring MVC框架:需要在Spring MVC配置文件中将Controller进行配置,例如可以使用@ComponentScan注解进行扫描并注册。 3. 编写相应的视图页面:需要对于每一个Controller的处理方法都编写相应的视图页面,并且可以根据业务逻辑进行模板化编写,提高代码的复用性。 总之,出现Spring MVC访问Controller 404错误的原因一般有很多种,需要根据具体情况进行排查,找到问题的根源,并采取相应的解决措施。只有理解了错误的原因,才能够顺利地解决问题。 ### 回答3: Spring MVC框架是一种开源的、基于MVC(Model-View-Controller)模型的Web框架,它在Java EE平台上提供了一种优雅而灵活的方式,帮助我们构建Web应用程序。在使用Spring MVC框架时,我们希望访问的处理器(Controller)可以被正确的映射,并正确的处理请求。但有时候会遇到Spring MVC访问Controller出现404错误的情况,接下来我们来分析一下Spring MVC访问Controller404的解决办法。 1.配置错误:我们在Spring MVC的配置文件中,可能会出现一些配置错误,如Controller类路径或方法名错误、请求路径配置错误等导致404错误。这时候我们需要仔细查看配置文件,确认配置是否正确,如在RequestMapping注解中路径拼写错误等。 2.包名与访问路径不匹配:在Spring MVC中,只有请求地址正确与Controller类的包名匹配时,才能访问到正确的Controller。如果Controller类的包名与请求地址不匹配,就会出现404错误。解决方法可以在Controller类上使用RequestMapping注解,指定正确的请求路径。 3.缺少必要的组件:当我们在执行Spring MVC项目时,需要一些必要的组件来支持此框架的运行,如JSP/HTML,Tomcat等,如果这些组件缺失或者配置错误,就会出现404错误。 4.访问路径有误:我们在访问Controller时,可能会出现访问路径出错的情况,要检查访问的URL地址是否正确,是否携带了必要的参数等。 总之,在解决Spring MVC访问Controller 404错误时,需要先仔细检查代码、配置等问题,逐一排查,找到具体原因,然后进行针对性的修复。同时也需要对错误有一个良好的分析能力,找到根源。只有这样,才能顺利的运行一个Spring MVC框架项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值