java7找不到uri_Spring Boot,Java Config – 在DispatcherServlet中找不到带有URI [/ …]的HTTP请求的映射,名称为“dispatcherSer...

这在stackOverflow中是一个非常常见的问题,但同一问题的主题都没有解决我的问题.

我们有一个使用xml配置的模板配置,但现在我们正试图摆脱它并开始使用Java配置.

所以我有一个使用Java配置和Spring Boot的新项目.我们也使用JSP和Tiles 3.

问题是:它无法呈现我们的管理员登录页面.

这是代码:

主配置类:

@SpringBootApplication

@EnableScheduling

@Import(OnAdminBeans.class)

public class AppConfig extends SpringBootServletInitializer {

public static void main(String[] args) {

SpringApplication.run(AppConfig.class, args);

}

@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {

return application.sources(AppConfig.class);

}

}

AppConfig.class是主包.通过@SpringBootApplication带来的@ComponentScan,它会扫描mainpackage.config上的其他配置,因此它会导入视图配置类:

@Configuration

@EnableWebMvc

public class ViewConfig extends WebMvcConfigurerAdapter {

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

registry.addResourceHandler("/adm/static/**").addResourceLocations("/adm/static/");

}

// @Override

// public void addViewControllers(ViewControllerRegistry registry) {

// registry.addViewController("/adm/login").setViewName("login-template-tiles");

// }

@Override

public void configureViewResolvers(ViewResolverRegistry registry) {

registry.viewResolver(viewResolver());

registry.viewResolver(jspViewResolver());

registry.viewResolver(tilesViewResolver());

}

@Bean

public LocaleResolver localeResolver() {

CookieLocaleResolver localeResolver = new CookieLocaleResolver();

localeResolver.setCookieName("locale");

localeResolver.setCookieMaxAge(30);

localeResolver.setDefaultLocale(new Locale("pt", "BR"));

return localeResolver;

}

@Bean

public MultipleViewResolver viewResolver() {

Map viewsResolvers = new HashMap();

viewsResolvers.put(MultipleViewResolver.ViewType.JSP.getKey(), jspViewResolver());

viewsResolvers.put(MultipleViewResolver.ViewType.TILES.getKey(), tilesViewResolver());

MultipleViewResolver viewResolver = new MultipleViewResolver();

viewResolver.setViewsResolvers(viewsResolvers);

viewResolver.setOrder(1);

return viewResolver;

}

@Bean

public InternalResourceViewResolver jspViewResolver() {

InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();

viewResolver.setPrefix("/WEB-INF/jsp/");

viewResolver.setSuffix(".jsp");

viewResolver.setViewClass(JstlView.class);

viewResolver.setOrder(2);

return viewResolver;

}

@Bean

public UrlBasedViewResolver tilesViewResolver() {

UrlBasedViewResolver viewResolver = new UrlBasedViewResolver();

viewResolver.setViewClass(TilesView.class);

viewResolver.setOrder(3);

return viewResolver;

}

@Bean

public TilesConfigurer tilesConfigurer() {

TilesConfigurer configurer = new TilesConfigurer();

configurer.setDefinitions("/WEB-INF/tile-defs/tiles-definitions.xml");

return configurer;

}

}

LoginController.class定义为:

@Controller

@RequestMapping(value = "/adm")

public class LoginController {

@RequestMapping(value = "/login")

public ModelAndView login() {

return new ModelAndView("login-template-tiles");

}

}

在tiles-definitions.xml中,我对login-template-tiles有以下定义:

请注意,两个文件都存在.

鉴于我尝试访问/ adm / login时调用LoginController.login()的所有内容.但它无法找到合适的jsp文件,显然.

它返回404.启用TRACE后,我得到以下日志:

DispatcherServlet with name 'dispatcherServlet' processing GET request for [/WEB-INF/jsp/adm/templates/login-template.jsp]

Testing handler map [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@2118c09a] in DispatcherServlet with name 'dispatcherServlet'

Looking up handler method for path /WEB-INF/jsp/adm/templates/login-template.jsp

Did not find handler method for [/WEB-INF/jsp/adm/templates/login-template.jsp]

Testing handler map [org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping@2c148974] in DispatcherServlet with name 'dispatcherServlet'

No handler mapping found for [/WEB-INF/jsp/adm/templates/login-template.jsp]

Testing handler map [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping@784c3547] in DispatcherServlet with name 'dispatcherServlet'

No handler mapping found for [/WEB-INF/jsp/adm/templates/login-template.jsp]

Testing handler map [org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping@533e0604] in DispatcherServlet with name 'dispatcherServlet'

Testing handler map [org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport$EmptyHandlerMapping@cfd1b4e] in DispatcherServlet with name 'dispatcherServlet'

No mapping found for HTTP request with URI [/WEB-INF/jsp/adm/templates/login-template.jsp] in DispatcherServlet with name 'dispatcherServlet'

任何建议表示赞赏!

编辑:

好.通过调试,我发现它与嵌入式Tomcat有关.除此之外,我不知道发生了什么.

编辑2:

发现问题出在org.springframework.web.servlet.DispatcherServlet #getHandler中.它根本找不到该请求的HandlerMapping.我必须注册吗?

解决方法:

好!发现了问题.

更具体地说这个配置:

@Override

public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

configurer.enable();

}

通过设置默认处理程序,我将不再获得白页,而是将JSP代码改为html,这清楚地告诉我JSP正在被找到但未被渲染.

我错过了tomcat-embed-jasper工件.

标签:spring-java-config,java,spring,spring-boot,spring-mvc

来源: https://codeday.me/bug/20191001/1840498.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值