连初级都算不上的代码小白 2023-11-04 19:13 采纳率: 52.4%
浏览 2

mvc设置前缀路径访问不到


public class init extends AbstractDispatcherServletInitializer {

    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();
        ctx.register(MvcConfig.class);
        return ctx;
    }
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/cont1/*"};
    }

    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

mvc 的初始化类、
为什么设置路径时访问/cont1/c1(/cont开头的所有路径)这个路径访问不到

img

还有当设置路径为return new String[]{"/cont1/**"};或return new String[]{"/cont1/"};时没有上面图片的WARNING

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-05 06:17
    关注

    【以下回答由 GPT 生成】

    问题分析:

    根据问题描述,您希望通过访问/cont1/c1这个路径来获取相应的资源。根据代码的设置,您将/cont1/*映射到了DispatcherServlet,但是无法正常访问到资源。可能的问题是您的MvcConfig配置中缺少了相应的路径映射。

    解决方案:

    1. 首先,检查您的MvcConfig配置文件,确保已经正确配置了RequestMappingHandlerMappingRequestMappingHandlerAdapter这两个bean。
    @Configuration
    @EnableWebMvc
    public class MvcConfig implements WebMvcConfigurer {
    
        @Override
        public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
            configurer.enable();
        }
    
        @Override
        public void configurePathMatch(PathMatchConfigurer configurer) {
            configurer.setUseSuffixPatternMatch(false);
        }
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/resources/**")
                    .addResourceLocations("/resources/");
        }
    
        // 添加其他相关配置
    }
    
    1. 检查是否缺少相应的Controller类来处理/cont1/c1路径的请求。请确保您在MvcConfig配置中注册了该Controller类。
    @Controller
    @RequestMapping(value = "/cont1")
    public class MyController {
    
        @RequestMapping(value = "/c1", method = RequestMethod.GET)
        public String handleC1() {
            return "c1";
        }
    
        // 添加其他相关请求处理方法
    }
    
    1. 检查您的视图解析器配置,确保已经正确配置了返回视图的路径。例如,使用Thymeleaf视图解析器:
    @Configuration
    public class MvcConfig implements WebMvcConfigurer {
    
        // 其他配置
    
        @Bean
        public ViewResolver viewResolver() {
            ThymeleafViewResolver resolver = new ThymeleafViewResolver();
            resolver.setTemplateEngine(templateEngine());
            resolver.setCharacterEncoding("UTF-8");
            return resolver;
        }
    
        @Bean
        public TemplateEngine templateEngine() {
            SpringTemplateEngine engine = new SpringTemplateEngine();
            engine.setEnableSpringELCompiler(true);
            engine.setTemplateResolver(templateResolver());
            return engine;
        }
    
        @Bean
        public ServletContextTemplateResolver templateResolver() {
            ServletContextTemplateResolver resolver = new ServletContextTemplateResolver();
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".html");
            return resolver;
        }
    }
    

    请尝试以上解决方案,并确保按照指示正确配置您的代码。如果还有问题,请提供完整的MvcConfig配置和相关的Controller代码,以便我能够更好地帮助您解决问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 11月4日