java - spring mvc无法进入controller
PHP中文网
PHP中文网 2017-04-18 09:17:39
0
4
172
web.xml

    <!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <display-name>Archetype Created Web Application</display-name>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/config/spring/spring-ctx.xml</param-value>
    </context-param>

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

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    </web-app>

spring-ctx.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.prs.dps"/>

    </beans>

spring-mvc

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven enable-matrix-variables="true"/>

    <bean      
        class="org.springframework.web.servlet.view.
        InternalResourceViewResolver" p:prefix="/views/" p:suffix=".jsp" />
    </beans>

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讲师

reply all(4)
大家讲道理

There are two containers in this project.
Spring application context and Spring webapplication context. Spring application contextSpring webapplication context
分别对应两个配置文件applicationContext.xml{servletName}-servlet.xml
他们之间并不会共享管理的对象。
通过你的配置文件可以看出只有根容器Spring application进行了扫描, Spring MVC的容器(webapplication context)中没有管理的对象
Spring 根容器(application contextCorresponds to two configuration files applicationContext.xml and {servletName}-servlet.xml. They will not share managed objects between them.


You can see from your configuration file that only the root container Spring application has been scanned, and the container of Spring MVC (webapplication context)

There are no managed objects

. 🎜The Spring root container(application context)🎜does not have the function to handle mapping and cannot handle request mapping🎜. 🎜 🎜 🎜So the configuration should be like this. 🎜
// 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/>
洪涛

Modify spring-mvc.xml as follows:

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <mvc:annotation-driven/>
    
    <context:component-scan base-package="com.prs.dps"/>
    <bean      
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"         p:prefix="/views/" p:suffix=".jsp" />
            <!-- 视图解释类 -->
    
    </beans>
刘奇
<servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/*</url-pattern>
</servlet-mapping>

Try this instead:

<servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
</servlet-mapping>
刘奇

Fallen Angel 008’s solution is right
· DispatcherServlet loads the beans of the Web componentDispatcherServlet加载Web组件的bean
· ContextLoaderListener加载中间层和数据层的bean组件
补充下
· 建议把spring mvc项目中controller和service组件的包分开
· 建议题主在spring-mvc.xml · ContextLoaderListener loads the bean components of the middle layer and data layer

Additional information

· Suggestions Separate the packages of controller and service components in the spring mvc project

· It is recommended that the subject add a static resource processor to spring-mvc.xml🎜 🎜If the problem has not been solved, it is recommended to read the spring mvc helloworld example. The example is relatively concise and clear. You can also download the example project🎜
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template