This question already has answers here:
Why does Spring MVC respond with a 404 and report “No mapping found for HTTP request with URI […] in DispatcherServlet”?
                                
                                    (7个答案)
                                
                        
                                2年前关闭。
            
                    
我配置了应用程序,并将“ DispatcherServlet”编码为viewResolver,如下所示:

@Configuration
@EnableWebMvc
@ComponentScan ({"controllers"})
@EnableAutoConfiguration
@SpringBootApplication
public class Application {

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix(".jsp");
    return viewResolver;
}
public static void main(String[] args){
        SpringApplication.run(Application.class, args);
}
}


用于处理请求的控制器类如下所示:

@Controller
public class HelloControllerImpl {

@RequestMapping(value= "/welcome", method= RequestMethod.GET)
public String getWelcomePage(ModelMap model) {
    model.addAttribute("message", "Spring 3 MVC - Hello World");
    model.addAttribute("name", "vzateychuk");
    return "welcome";
}
}


视图文件:\ WEB-INF \ views \ welcome.jsp

<html>
<body>
    <h1>Hello, : ${name}</h1>
    <h2>Message : ${message}</h2>
</body>
</html>


应用结构:
Welcome application structure

我认为配置文件中缺少某些内容,但看不到。您能否请客做错什么,这是什么意思:“未找到带有URI [/WEB-INF/views/welcome.jsp]的HTTP请求的映射”?
我应该提供诸如dispatcher-servlet.xml之类的xml configuratin吗?
先感谢您。

更新:我猜我的DispatcherServlet无法找到适当的视图。我试图完全删除/ WEB-INF目录,但是没有任何变化。这段代码可能有问题:

    public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    **viewResolver.setPrefix("/WEB-INF/views/");**


....
有人能猜出可能出什么问题吗? (可能是@EnableAutoConfiguration注释不允许定义viewResolver的前缀吗?

最佳答案

我做了与您类似的简单项目。您可以检查我的github

您要做的是:


重命名hello.html为hello.jsp
检查您的pom.xml中是否具有所有依赖项。我没有看到它,所以不确定它是否错误。确保您具有以下两个依赖项:

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <scope>provided</scope>
</dependency>

对于这一点,您将找到解释here
确实,使用IDEA社区版本启动它可能会遇到问题。我也遇到了这个问题。您可以做的是先使用命令行和Maven检查它。执行以下命令:
mvn spring-boot:run

您也可以将IDEA配置为运行该命令。转到运行->编辑配置,单击左侧的绿色加号,然后选择Maven。然后在“命令行”字段中输入“ spring-boot:run”,按确定。
并运行此配置。
(可选)您的Application类上也有一些多余的注释。您可以删除:


@Configuration,因为@SpringBootApplication已经拥有它
@EnableWebMvc,因为Spring Boot在类路径上看到spring-webmvc时会自动添加它
@EnableAutoConfiguration,因为@SpringBootApplication已经拥有它



请注意,由于您的程序包结构,您需要@ComponentScan({“ controllers”})-您的Application类与控制器在不同的程序包中。

关于java - 在名称为'dispatcherServlet'的DispatcherServlet中找不到带有URI [/WEB-INF/views/welcome.jsp]的HTTP请求的映射。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38961157/

10-12 15:56