繁体   English   中英

资源处理程序Spring异常:org.springframework.web.servlet.DispatcherServlet noHandlerFound

[英]resource handler Spring exception: org.springframework.web.servlet.DispatcherServlet noHandlerFound

我一直在搜索,但是找不到我遇到的异常的正确解决方案。 我正在使用Java,Spring MVC,Hibernate和MySQL构建Web应用程序。 我使用过Spring Security,因为只允许授权用户使用Web应用程序。 我正在使用css(bootstrap)使其看起来不错,但是这里是问题,当访问资源时,出现以下异常:

    aug 25, 2016 10:41:38 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/ToolManagementSystem/admin/resources/css/alfen.css] in DispatcherServlet with name 'dispatcher'
aug 25, 2016 10:41:38 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/ToolManagementSystem/admin/resources/img/logo.jpg] in DispatcherServlet with name 'dispatcher'
aug 25, 2016 10:41:38 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/ToolManagementSystem/admin/resources/css/bootstrap.css] in DispatcherServlet with name 'dispatcher'

防止这种情况的唯一方法(到目前为止,我发现)是在我的资源处理程序中显式地编码每个路径

// Grants access to resources
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}

这是我的安全配置

@Override
protected void configure(HttpSecurity http) throws Exception {
  http.authorizeRequests()
    .antMatchers("/css/**", "/js/**", "/images/**").permitAll().anyRequest().authenticated()
    .antMatchers("/resources/**").permitAll().anyRequest().authenticated()
    .antMatchers("/admin/**").access("hasRole('ADMIN')")
    .antMatchers("/db/**").access("hasRole('DBA')")
    .antMatchers("/lead/**").access("hasRole('LEAD')")
    .antMatchers("/responsible/**").access("hasRole('RESPONSIBLE')")
    .and().formLogin().loginPage("/login").successHandler(customSuccessHandler)
    .usernameParameter("ssoId").passwordParameter("password")
    .and().csrf()
    .and().exceptionHandling().accessDeniedPage("/Access_Denied");
}

干杯,伙计们,为我提供帮助/为我指明正确的方向! (如果造成重复的问题,我深表歉意)

我尝试过的解决方案是:

// Grants access to resources
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {      
registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/");
    registry.addResourceHandler("/**/resources/**".addResourceLocations("/resources/)"
    }

以及更改安全配置的几种方法,但是我愿意接受所有想法/建议!

因此,在我的代码中多了一些愚弄后。 我找到了问题的答案,事实证明这很简单。

在我链接到jsp中的资源之前,看起来像这样:

<link href="resources/css/bootstrap.css" rel="stylesheet" media="screen" />
<link href="resources/css/alfen.css" rel="stylesheet" media="screen" />

威奇不是应该的样子。 这就是所有不同之处:

<link href="${pageContext.request.contextPath}/resources/css/bootstrap.css" rel="stylesheet" media="screen" />
<link href="${pageContext.request.contextPath}/resources/css/alfen.css" rel="stylesheet" media="screen" />

现在,它运行良好。 因此,为了完整起见,当您遇到同样的问题时,我想将其发布为可能的解决方案之一!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM