java - 通过使用<img th:src = “@{/images/anabada.jpeg}”无法加载thyemleaf中的图像

标签 java eclipse spring-boot gradle thymeleaf

我正在使用带有gradle build和thymeleaf的SpringBoot。我想将图像插入到html文件中。我想插入一张图片(/images/anabada.jpeg)我想我已经为百里香做了正确的这是我的看法

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
  <title>WS Product Management System</title>
  <link rel="icon" th:href="@{/images/anabada.jpeg}">
  <link rel="stylesheet" type="text/css" th:href="@{/css/login.css}" />
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
  <form th:action="@{/registration}" method="get">
    <button class="btn btn-md btn-warning btn-block" type="submit">Go To Registration Page</button>
  </form>

  <div class="container">
    <img th:src="@{/images/anabada.jpeg}" class="img-responsive center-block" width="300" height="300" alt="Logo" />
        <form th:action="@{/login}" method="POST" class="form-signin" id="login_form" name="login_form">
      <h3 class="form-signin-heading">Anabada</h3>
      <br/>

      <input type="text" id="loginId" name="loginId"  th:placeholder="LoginId" class="form-control" /> <br/>
      <input type="password" th:placeholder="Password" id="password" name="password" class="form-control" /> <br />

            <div align="center" th:if="${param.error}">
                <p style="font-size: 20; color: #FF1C19;">아이디 패스워드가 올바르지 않거나 비활성화된 회원입니다.</p>
            </div>

            <div align="center" th:if="${param.authError}">
                <p style="font-size: 20; color: #FF1C19;">만료된 토큰이거나 토큰값을 갱신하여 주시길 바랍니다.</p>
            </div>

      <button class="btn btn-lg btn-primary btn-block" name="Submit" value="Login" type="Submit" th:text="Login"></button>
    </form>
  </div>
</body>
</html>
上面是我的html代码,下面是用于插入图片的代码,这是上述完整代码的一部分。
 <img th:src="@{/images/anabada.jpeg}" class="img-responsive center-block" width="300" height="300" alt="Logo" />
我的项目文件夹路径。
below is my project resources
这是build.gradle
plugins {
    id 'org.springframework.boot' version '2.1.1.RELEASE'
    id 'java'
    id 'war'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.anabada'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-aop'
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'
    implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
    compile("org.springframework.boot:spring-boot-starter-security")
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'mysql:mysql-connector-java'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
这是我的WebConfig
package com.anabada.anabada.configuration;

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc 
public class WebConfig implements WebMvcConfigurer { 
    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
        registry.addResourceHandler("/css/**").addResourceLocations("/css/"); 
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/images/**").addResourceLocations("/images/");
        }
    
    @Bean 
    public BCryptPasswordEncoder passwordEncoder() { 
        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
    return bCryptPasswordEncoder; 
        }
}

我的securityConfiguration

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;

import com.anabada.anabada.Member.service.UserService; 

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 
    
        @Autowired 
        private BCryptPasswordEncoder bCryptPasswordEncoder; 
        @Autowired 
        private UserService userService;
        
        @Bean
        public DaoAuthenticationProvider authenticationProvider(UserService userService) { 
            DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider(); 
            authenticationProvider.setUserDetailsService(userService); 
            authenticationProvider.setPasswordEncoder(bCryptPasswordEncoder); 
        return authenticationProvider; }
        
        @Override 
        protected void configure(AuthenticationManagerBuilder auth) {
            auth.authenticationProvider(authenticationProvider(userService)); 
            } 
        
        @Override 
        protected void configure(HttpSecurity http) throws Exception {
            http 
                .authorizeRequests() 
                    .antMatchers("/").permitAll() 
                    .antMatchers("/login").permitAll() 
                    .antMatchers("/registration").permitAll() 
                    .antMatchers("/home").hasAuthority("ADMIN") // ADMIN 권한의 유저만 /home 에 접근가능 
                .anyRequest() 
                    .authenticated()
                    .and().csrf().disable() 
                .formLogin() 
                    .loginPage("/login") 
                    .failureUrl("/login?error=true") 
                    .defaultSuccessUrl("/home") 
                    .usernameParameter("loginId") 
                    .passwordParameter("password") 
                .and() 
                    .logout()
                    .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                .and()
                    .exceptionHandling()
                    .accessDeniedPage("/access-denied"); 
        } 
        
        @Override 
        public void configure(WebSecurity web) {
                web.ignoring().antMatchers("/css/**", "/js/**", "/images/**"); 
        } 
        
}

最佳答案

给定密码编码器后,您似乎已(或希望)启用了安全性:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
@NoArgsConstructor @Log4j2
public class WebSecurityConfigurerImpl extends WebSecurityConfigurerAdapter {
    @Autowired private UserDetailsService userDetailsService;
    @Autowired private PasswordEncoder passwordEncoder;

    @Override
    public void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService)
            .passwordEncoder(passwordEncoder);
    }

    @Override
    public void configure(WebSecurity web) {
        web.ignoring()
            .antMatchers("/css/**", "/js/**", "/images/**",
                         "/webjars/**", "/webjarsjs");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests().anyRequest().permitAll()
            .and().formLogin().loginPage("/login").permitAll()
            .and().logout().permitAll();
    }
}

关于java - 通过使用<img th:src = “@{/images/anabada.jpeg}”无法加载thyemleaf中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62799739/

相关文章:

java - 如何使用一些预定义值初始化数组列表?

java - 如果我通过 tortoise svn checkout 该项目,如何解释 eclipse 中的 svn 项目?

java - 滚动时出现惰性列表适配器问题

java - Spring 启动 2x。休息 API。将失败的字符串转换为日期

java - 检查 URL 是 HTTPS 还是 HTTP 协议(protocol)?

java - 通过 POST 从 Angular 向 Springboot 发送数据

java - 如何在 Spring Boot 2 oauth2 中获取 token ?

java - 没有找到给定的测试包括 : JUNIT

Java Check 工作簿包含特定电子表格或不使用 Apache POI

java - 如何读取 Android Assets 中的文件