search

Home  >  Q&A  >  body text

java - spring mvc无法进入controller

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中文网2813 days ago175

reply all(4)I'll reply

  • 大家讲道理

    大家讲道理2017-04-18 09:19:39

    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/>

    reply
    0
  • PHP中文网

    PHP中文网2017-04-18 09:19:39

    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>
    

    reply
    0
  • 怪我咯

    怪我咯2017-04-18 09:19:39

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

    reply
    0
  • 怪我咯

    怪我咯2017-04-18 09:19:39

    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🎜

    reply
    0
  • Cancelreply