错误:没有找到带有 URI spring mvc 且没有 xml 的 HTTP 请求的映射

Posted

技术标签:

【中文标题】错误:没有找到带有 URI spring mvc 且没有 xml 的 HTTP 请求的映射【英文标题】:Error : No mapping found for HTTP request with URI spring mvc without xml 【发布时间】:2020-04-12 23:10:25 【问题描述】:

从控制器返回 html 页面时出现此错误

org.springframework.web.servlet.PageNotFound noHandlerFound 警告:在名称为“dispatcher”的 DispatcherServlet 中找不到带有 URI [/SpringMVCDemo/WEB-INF/response.html] 的 HTTP 请求的映射

response.html 应该放在哪里?

这是我的代码

Controller class
-----------------
@Controller
public class LoginController 

    @RequestMapping("/login")
    public ModelAndView login(@RequestParam(name = "username") String username,
                             @RequestParam(name = "password") String password)

        String str = "Welcome " + username;
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("response");
        modelAndView.addObject("response",str);

        return modelAndView;
    

Config file
------------
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.skuba.*")
public class MvcConfig extends WebMvcConfigurerAdapter

    @Bean
    public ViewResolver viewResolver() 
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setViewClass(JstlView.class);
        viewResolver.setPrefix("/WEB-INF/");
        viewResolver.setSuffix(".html");

        return viewResolver;
    

This is dispatcher controller
------------------------------
public class FrontController extends AbstractAnnotationConfigDispatcherServletInitializer 

    @Override
    protected Class<?>[] getRootConfigClasses() 
        return new Class[] MvcConfig.class;
    

    @Override
    protected Class<?>[] getServletConfigClasses() 
        return new Class[0];
    

    @Override
    protected String[] getServletMappings() 
        return new String[] "/";
    

【问题讨论】:

【参考方案1】:

假设视图文件位于正确的目录中(即“/WEB-INF/”)尝试将以下内容添加到MvcConfig 类中。

// Use the DefaultServletHandlerConfigurer @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) configurer.enable();

【讨论】:

谢谢。它正在工作。但是即使我在 JSP 中有 "isELIgnored="false"" 但它仍然显示结果:$response 这是我的结果 jsp 代码 结果:$response ` 是否意味着表达式 $response 被评估并打印在页面上?而且您不希望它被评估和打印? 是的,我正在使用键“响应”从我的 LoginController(如上面的代码)传递值。我想在 html 页面而不是 $response 中显示。已经尝试过 isELIgnored="false" "isELIgnored="false" 实际上就足够了。我无法重现您的问题。您能告诉我您使用的是哪个版本的 Spring。 春季版:4.3.3.RELEASE

以上是关于错误:没有找到带有 URI spring mvc 且没有 xml 的 HTTP 请求的映射的主要内容,如果未能解决你的问题,请参考以下文章

Spring:没有为带有 URI 的 HTTP 请求找到映射

Spring 4 MVC,警告:在 DispatcherServlet 中找不到带有 URI 的 HTTP 请求的映射,名称为 [...] 和 HTTP 404 错误

Spring MVC 控制器问题:找不到带有 URI 的 HTTP 请求的映射

如何将 Spring MVC 控制器映射到带有和不带有斜杠的 uri?

获取此 org.springframework.web.servlet.DispatcherServlet noHandlerFound 错误和警告:在 Spring MVC 中未找到 HTTP 请求

使用java的spring3.05 mvc注解后出现错误:No mapping found for HTTP request with URI