java - spring mvc无法进入controller
PHP中文网
PHP中文网 2017-04-18 09:17:39
[Java讨论组]
web.xml

    

    
    Archetype Created Web Application

    
        contextConfigLocation
        /WEB-INF/config/spring/spring-ctx.xml
    

    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            /WEB-INF/config/spring/spring-mvc.xml
        
        1
    
    
        springmvc
        /*
    

    
        org.springframework.web.context.ContextLoaderListener
    
    

spring-ctx.xml

    
    

    

    

spring-mvc

    
    

    

    
    

controller

    package com.prs.dps;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    @Controller
    public class Test {
        @RequestMapping(value = "/toindex",method = RequestMethod.GET)
        public String toIndex(){
            return "index";
        }
    }
PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(3)
大家讲道理

这个项目里有两个容器。
Spring application contextSpring webapplication context
分别对应两个配置文件applicationContext.xml{servletName}-servlet.xml
他们之间并不会共享管理的对象。
通过你的配置文件可以看出只有根容器Spring application进行了扫描, Spring MVC的容器(webapplication context)中没有管理的对象
Spring 根容器(application context)不具备处理映射的功能,无法处理请求映射


所以配置应该这样。

// spring-ctx.xml
....
// 根容器不扫描@Controller注解的类。
<context:component-scan base-package="gq.zpf_fly.first">
    <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
...

// spring-mvc.xml
....
// 不是用默认过滤规则(指定包内全部扫描), 手动设置规则,只扫描@Controller注解的类。
<context:component-scan base-package="gq.zpf_fly.first" use-default-filters="false">
    <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

<!--启用 MVC注解(@Controller,@RequestMapping)实现URL映射-->
<mvc:annotation-driven/>
怪我咯
<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>
怪我咯

堕天使008的解决方法是对的
· DispatcherServlet加载Web组件的bean
· ContextLoaderListener加载中间层和数据层的bean组件
补充下
· 建议把spring mvc项目中controller和service组件的包分开
· 建议题主在spring-mvc.xml中加上静态资源处理器

如果还没有解决问题,推荐阅读 spring mvc helloworld example 实例比较简明清楚,也可以下载实例项目

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号