spring boot cannot load the css file that uses the thymeleaf, page. The program uses sercurity for login verification.
css file path resources/static/css/bootstrap.min1.css
the load statement in the html file is as follows:
< link th:href= "@ {css/bootstrap.min1.css}" rel= "stylesheet" / >
or < link th:href= "@ {.. / static/css/bootstrap.min1.css}" rel= "stylesheet" / >
the version of 2.0.2.RELEASE used by spring boot
background error report:
Refused to apply style from" http://localhost:8080/login" because its MIME type ("text/html") is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Program Code:
login.html File
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta content="text/html; charset=UTF-8"/>
<title></title>
<!--<link rel="stylesheet" th:href="@{"http://apps.bdimg.com/libs/bootstrap/3.3.4/js/bootstrap.min.js"}"/>-->
<link th:href="@{../static/css/bootstrap.min1.css}" rel="stylesheet" />
<!--<link rel="stylesheet" th:href="@{css/bootstrap.min1.css}"/>-->
<style type="text/css">
body {
padding-top: 50px;
}
.starter-template {
padding: 40px 15px;
text-align: center;
}
.nini{
color: -sharp2e6da4;
}
</style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="-sharp">Spring Security</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a th:href="@{/}"> </a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container">
<div class="starter-template">
<p th:if="${param.logout}" class="bg-warning">
<p th:if="${param.error}" class="bg-danger">
<h2 class="nini"></h2>
<form name="form" th:action="@{/login}" action="/login" method="POST">
<div class="form-group">
<label for="username"></label>
<input type="text" class="form-control" name="username" value="" placeholder=""/>
</div>
<div class="form-group">
<label for="password"></label>
<input type="password" class="form-control" name="password" placeholder=""/>
</div>
<input type="submit" id="login" value="Login" class="btn btn-primary"/>
</form>
</div>
</div>
</body>
</html>
WebMvcConfig.java
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
}
WebSercurityConfig.java
@Configuration
public class WebSercurityConfig extends WebSecurityConfigurerAdapter {
@Bean
UserDetailsService customUserService(){
return new CustomUserService();
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(customUserService()).passwordEncoder(new BCryptPasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.failureUrl("/login?error")
.permitAll()
.and()
.logout().permitAll();
}
}
public class CustomUserService implements UserDetailsService {
@Autowired
SysUserRepository userRepository;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
SysUser user = userRepository.findByUsername(s);
if(user == null){
throw new UsernameNotFoundException("");
}
return user;
}
}
@Controller
public class HomeController {
@RequestMapping("/")
public String index(Model model){
Msg msg = new Msg("","","");
model.addAttribute("msg",msg);
return "home";
}
}