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

时间:2016-08-25 08:55:34

标签: java spring-mvc spring-security resources

我一直在搜索和搜索,但找不到合适的解决方案,因为我得到了例外。我正在使用java,spring mvc,hibernate& amp;构建一个Web应用程序。 MySQL的。我使用过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'

唯一的方法(我发现到目前为止)阻止它显式编码我的resourcehandler中的每个路径

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

这是我的security-config

@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/)"
    }

以及改变安全配置的几种方法,但我对所有想法/建议持开放态度!

1 个答案:

答案 0 :(得分:0)

所以,在我的代码中稍微愚蠢一点之后。我找到了问题的答案,结果很简单。

在我链接到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" />

现在它完美无缺。所以为了完成,我想把它作为可能的解决方案之一发布,当你可能遇到同样的问题时!