【问题标题】:is there a reason for RequestMappingHandlerMapping not mapping in here?RequestMappingHandlerMapping 没有在这里映射的原因吗?
【发布时间】:2017-02-22 01:56:16
【问题描述】:

我是一名学习的学生,尤其是java spring框架(现在)。

我正在对我使用 mybatis 学到的东西进行复习(连同给出的练习)。

我很难赶上这个(老师,太快了)

我正在尝试制作一个带有简单图表的页面,该页面将在图表中获取公司员工列表。

但是当我尝试运行并单击一个链接(用于执行实际工作)时,我得到了这个:

WARN PageNotFound - 找不到带有 URI 的 HTTP 请求的映射 DispatcherServlet 中的 [/spring_mvc13_batisTest/list] 名称 'dispatcherServlet'

页面上出现 404 错误的错误消息。

这是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.springframework.samples.service.service</groupId>
    <artifactId>spring_mvc13_batisTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>

        <!-- Generic properties -->
        <java.version>1.6</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Web -->
        <jsp.version>2.2</jsp.version>
        <jstl.version>1.2</jstl.version>
        <servlet.version>2.5</servlet.version>


        <!-- Spring -->
        <spring-framework.version>4.1.3.RELEASE</spring-framework.version>

        <!-- Hibernate / JPA -->
        <hibernate.version>4.2.1.Final</hibernate.version>

        <!-- Logging -->
        <logback.version>1.0.13</logback.version>
        <slf4j.version>1.7.5</slf4j.version>

        <!-- Test -->
        <junit.version>4.11</junit.version>

    </properties>

    <dependencies>

        <!-- Spring MVC -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

        <!-- Other Web dependencies -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>

        <!-- Spring and Transactions -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring-framework.version}</version>
        </dependency>

        <!-- Logging with SLF4J & LogBack -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
        </dependency>

        <!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>${hibernate.version}</version>
        </dependency>


        <!-- Test Artifacts -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- mariadb jdbc -->
        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>1.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>1.4.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.3.RELEASE</version>
        </dependency>

        <!-- //10.7-2-0 added -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>



    <!-- MYBATIS -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.1</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.0</version>
    </dependency>


    </dependencies>
</project>

我的mvc-config.xml

<context:component-scan base-package="pack.controller"/>

<mvc:annotation-driven />


<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
</bean>

和应该读取的java文件:

package pack.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import pack.model.SawonDto;
import pack.model.SawonInter;
@Component
@ComponentScan("pack.model")
public class ListController {

@Autowired
private SawonInter inter;

@RequestMapping(value="list", method= RequestMethod.GET)
public Model processSelect(Model model){
    model.addAttribute("lists", inter.selectList());
    return model;

}
}

Github link on my work 以 batisTest 结尾的文件夹是我正在做的,另一个是我在上课时写的。我已经拿着这个一整天了,一点运气都没有:(

哪位好心人解释一下?我试图在这里和那里搜索,但我就是不明白......

【问题讨论】:

    标签: java spring maven model-view-controller


    【解决方案1】:

    因为您的 ListController 类还不是 Spring MVC 控制器。您需要在控制器中添加 spring @Controller 注解。

    例如。

    import org.springframework.stereotype.Controller;
    
    @Component
    @ComponentScan("pack.model")
    @Controller
    public class ListController {
    

    另外我会推荐很棒的 Spring MVC 网站供您参考。希望它的帮助。

    https://www.mkyong.com/tutorials/spring-mvc-tutorials/

    【讨论】:

    • 我的天哪,我是个白痴:(看起来我一直把组件误读为控制器:S 工作正常。哇……我整天都在为此苦苦挣扎,现在我觉得很傻。
    • 非常感谢。否则我可能整天都在这样做,没有任何进展,直到有人指出这一点。
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多