H all,
I am trying to make a simple mvc spring boot application and I have it in my code to return index.html when the controller receives as request for "/".
I am not sure but this does not work.
SpringDataWebApplication.java
package com.demo.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@SpringBootApplication
@EnableAutoConfiguration
@EnableJpaRepositories("com.demo.repositories.*")
@EntityScan("com.demo.entities.*")
@ComponentScan(basePackages = {"com.demo.controller.*","com.demo.service.*"})
public class SpringDataWebApplication {
//TODO : Logging
public static void main(String[] args) {
SpringApplication.run(SpringDataWebApplication.class, args);
}
}
HealthCHeckController.java
package com.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HealthCheckController {
@RequestMapping("/")
public String getSystemHealth() {
return "index";
}
}
UserRepository.java
package com.demo.repositories;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.demo.entities.UserEntity;
@Repository
public interface UserRepository extends CrudRepository<UserEntity, String> {
}
index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="ISO-8859-1">
<title>BlogPost URL check</title>
</head>
<body>
<h1>HealthCHeck Working as desired</h1>
</body>
</html>
Index.html is inside /templates directory as per thymeleaf
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.demo</groupId>
<artifactId>Example1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>0.7.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
UserEntity.java : this is not yet required, since I am going step by step and i am expecting just a response for the request "/" but I am not able to get the response.
package com.demo.entities;
import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
@Entity
@Table(name="user")
public class UserEntity implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String Id;
private String firstName;
private String lastName;
private String address1;
private String address2;
private String city;
private String state;
private String zipcode;
private Calendar birthDate;
private String gender;
private String email;
private String verifyEmail;
private String password;
private String verifyPassword;
private String createdBy;
private String modifiedBy;
private Calendar createdAt;
private Calendar modifiedAt;
public UserEntity() {
}
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@NotNull
public String getId() {
return Id;
}
public void setId(String id) {
Id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAddress1() {
return address1;
}
public void setAddress1(String address1) {
this.address1 = address1;
}
public String getAddress2() {
return address2;
}
public void setAddress2(String address2) {
this.address2 = address2;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public Calendar getBirthDate() {
return birthDate;
}
public void setBirthDate(Calendar birthDate) {
this.birthDate = birthDate;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@javax.persistence.Id
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getVerifyEmail() {
return verifyEmail;
}
public void setVerifyEmail(String verifyEmail) {
this.verifyEmail = verifyEmail;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getVerifyPassword() {
return verifyPassword;
}
public void setVerifyPassword(String verifyPassword) {
this.verifyPassword = verifyPassword;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getModifiedBy() {
return modifiedBy;
}
public void setModifiedBy(String modifiedBy) {
this.modifiedBy = modifiedBy;
}
public Calendar getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Calendar createdAt) {
this.createdAt = createdAt;
}
public Calendar getModifiedAt() {
return modifiedAt;
}
public void setModifiedAt(Calendar modifiedAt) {
this.modifiedAt = modifiedAt;
}
}
答案 0 :(得分:1)
你一定要读这个:
您正在尝试点击一个实际上是静态内容的简单HTML页面。 从Spring Boot文档:
默认情况下,Spring Boot将从类路径中的/ static(或/ public或/ resources或/ META-INF / resources)目录或ServletContext的根目录中提供静态内容。
<强>第一下, 这意味着您需要确保index.html页面位于静态文件夹下,Spring引导中的静态文件夹位于src / main / resources下。
<强>第二下, 当您尝试在春季启动时提供静态内容时,您需要并希望破坏缓存,这意味着您的浏览器正在缓存您的旧请求,并且为了看到您的更改正在发生,我需要将其添加到 application.properties 文件中:
spring.resources.chain.strategy.content.enabled=true
spring.resources.chain.strategy.content.paths=/**
看看这里: