字符数:5959

导读

本文介绍的内容:
(1)用maven构建web工程,并解决一些编译的错误
(2)引入spring boot的依赖,免web.xml用app的方式启动web应用
(3)在main类中定义controller接口快速提供访问url

环境:eclipse Version: Oxygen.3a Release (4.7.3a) Build id: 20180405-1200/ m2e-wtp - Maven Integration for WTP 1.3.3.20170823-1905

1、创建maven project

步骤是,右击package explorer区-> new -> other ->搜索maven -> 选择maven project -> 勾选create a simple project -> 填写几个主要信息,下拉选war -> 完成创建

检查以下几项内容:build path中的jdk/compiler jdk/project facet jdk

在这个版本中maven会检查Web.xml是否存在,在pom.xml中添加以下配置避免:

  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>

如果一直报错:Dynamic Web Module 3.1 requires Java 1.7 or newer,在pom.xml中添加以下内容即可 :

  <build>  
       <plugins>       
             <plugin>             
                    <groupId>org.apache.maven.plugins</groupId>             
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>                 
                          <source>1.8</source>                    
                          <target>1.8</target>          
                    </configuration>       
             </plugin>  
       </plugins>
  </build>

2、添加spring boot的相关配置

添加parent依赖,这样在添加子依赖时不需要再指定版本:

<parent>  
     <groupId>org.springframework.boot</groupId>  
     <artifactId>spring-boot-starter-parent</artifactId>  
     <version>1.5.3.RELEASE</version>  
     <relativePath />
  </parent>

再添加boot的编译,这样可以直接用app的方式启动web应用:

<build>
    <plugins>
        <plugin>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-maven-plugin </artifactId>  
         </plugin>
       </plugins>
  </build>

添加web的功能,这样可以开发controller接口:

<dependencies>  
      <dependency>  
          <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-web</artifactId>  
       </dependency>  
  </dependencies>

完整的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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.tao</groupId>
  <artifactId>seaever</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <parent>  
     <groupId>org.springframework.boot</groupId>  
     <artifactId>spring-boot-starter-parent</artifactId>  
     <version>1.5.3.RELEASE</version>  
     <relativePath />
  </parent>
    
  <properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>
     
  <dependencies>  
      <dependency>  
          <groupId>org.springframework.boot</groupId>  
           <artifactId>spring-boot-starter-web</artifactId>  
       </dependency>  
  </dependencies>
  
  <build>  
       <plugins>       
             <plugin>             
                    <groupId>org.apache.maven.plugins</groupId>             
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>                 
                          <source>1.8</source>                    
                          <target>1.8</target>          
                    </configuration>       
             </plugin>  
             <plugin>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-maven-plugin </artifactId>  
         </plugin>
       </plugins>
  </build>
</project>

3、创建启动类文件

使用windows的tree /f命令显示的目录结构如下:

├─src
│  ├─main
│  │  ├─java
│  │  │  └─de
│  │  │      └─tao
│  │  │          └─seaever
│  │  │              │  ExampleSpringBoot.java
│  │  │              │
│  │  │              └─po
│  │  │                      User.java
│  │  │
│  │  ├─resources
│  │  └─webapp
│  └─test
│      ├─java
│      └─resources

ExampleSpringBoot.java的内容如下:

package de.tao.seaever;
import org.springframework.boot.SpringApplication;
import  org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import de.tao.seaever.po.User;
@RestController
@SpringBootApplication
public class ExampleSpringBoot {
      
      @RequestMapping("/home")
      String home() {
        return "Hello World!";
    }
      
      @RequestMapping("/user")
      User getUser() {
           User u = new User();
           u.setName("tao");
        return u;
    }
      
    public static void main(String[] args) {
        SpringApplication.run(ExampleSpringBoot.class, args);  
    }
}

User.java的内容如下:

package de.tao.seaever.po;
public class User {
      String name;
      public String getName() {
           return name;
      }
      public void setName(String name) {
           this.name = name;
      }
}

4、 看效果

运行Main类ExampleSpringBoot,访问http://localhost:8080/user ,可以看到内容: {"name":"tao"}

参考自:https://blog.csdn.net/a78270528/article/details/77573818

5、热加载

相关新增文件:

C:\DEV\ECLIPSE-WORKSPACE\SEAEVER\SRC\MAIN\RESOURCES
│  application.properties
│
├─static #约定此目录下的资源可以直接访问
│  ├─html
│  │      index.html #可以直接访问
│  │
│  └─img
│          baby1.jpg #可以直接访问
│
└─templates
        index.html #不能直接访问,可能配置`@Controller`注解,在接口上`@RequestMapping("/home")`,然后`return "index";`

注意@Controller不能和@RestController同时用,后者可返回JSON字符串

有时在开发阶段,改了class的代码,想让spring boot自动加载生效,办法在pom.xml中添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

如果静态资源排除在外,不加载,可以设置resources/application.properties:

spring.devtools.restart.enabled=true
spring.devtools.restart.exclude=static/**,templates/**

如果想映射templates里的资源,需要添加依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

它是一个页面模板框架,支持对html以及其标签的解析。

参考自:https://blog.csdn.net/qq_36481052/article/details/79075214 和 https://blog.csdn.net/long290046464/article/details/76216372