快速创建一个基于SpringBoot与Maven的项目

基础SpringBoot与maven项目

  • 项目说明:
    • 项目基于jdk1.7或者以上
    • 项目使用maven
    • 项目使用tomcat
    • 项目使用SpringBoot
    • 项目使用Eclipse
  • 项目地址:
    • https://gitee.com/iamzwhui/base_maven_springboot.git
  • 项目结构:
根目录
│  .classpath.project
│  pom.xml
│  README.md
│
├─src
│  ├─main
│  │  ├─java
│  │  │  └─com
│  │  │      └─iamzwhui
│  │  │          └─springboottest
│  │  │              │  GateSpringBootApplication.java
│  │  │              │
│  │  │              └─test
│  │  │                  ├─controller
│  │  │                  │      TestController.java
│  │  │                  │      TestRestController.java
│  │  │                  │
│  │  │                  └─service
│  │  ├─resources
│  │  │      application.properties
│  │  │
│  │  └─webapp
│  │      │  test.html
│  │      │
│  │      └─WEB-INF
│  │          ├─js
│  │          └─jsp
│  │                  test.jsp

一、创建

1、先创建maven项目

选择项目类型

  • Ctrl+n唤出创建窗口
  • 搜索maven
  • 选择maven project
  • 点击next

选择项目模板

  • 勾选create a simple project
  • 勾选use default workspace location(不要修改)
  • 点击next

完善项目信息

  • group id(项目前缀)
    • 例如com.iamzwhui
  • artifact id(项目名称)
    • 例如SpringBootTest
  • version(项目版本)
    • 例如0.0.1-SNAPSHOT
  • packaging(打包方式)
    • 例如war
  • 其他(暂时不需要)
  • 点击finish

若没有报错,则maven项目创建完成

2、往maven添加SpringBoot

添加pom信息

  • 找到当前maven项目的pom.xml文件
  • 添加SpringBoot
<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.0modelVersion>

    
    <groupId>com.iamzwhuigroupId>
    <artifactId>SpringBootTestartifactId>
    <version>0.0.1-SNAPSHOTversion>

    
    <packaging>warpackaging>

    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>1.4.0.RELEASEversion>
    parent>

    
    <properties>
        <java.version>1.7java.version>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
        <maven.compiler.source>${java.version}maven.compiler.source>
        <maven.compiler.target>${java.version}maven.compiler.target>
        
    properties>

    
    <dependencies>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>springloadedartifactId>
            <version>1.2.5.RELEASEversion>
        dependency>
        
        <dependency> 
            <groupId>org.springframework.bootgroupId> 
            <artifactId>spring-boot-starter-tomcatartifactId> 
            <scope>providedscope> 
        dependency> 
        
        <dependency> 
            <groupId>org.apache.tomcat.embedgroupId> 
            <artifactId>tomcat-embed-jasperartifactId> 
            <scope>providedscope> 
        dependency>
        <dependency>
          <groupId>javax.servletgroupId>
          <artifactId>jstlartifactId>
        dependency>
        
        <dependency>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-devtoolsartifactId>
        dependency>
        
        <dependency>
          <groupId>org.springframework.bootgroupId>
          <artifactId>spring-boot-starter-testartifactId>
          <scope>testscope>
        dependency>
    dependencies>

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

project>

若没有报错,则SpringBoot添加完成

  • jdk建议1.7或者以上,使用SprintBoot会少很多麻烦

二、设置

1、创建SpringBoot的入口

创建GateSpringBootApplication.java

  • 位置为src/main/java/com/iamzwhui/springboottest/GateSpringBootApplication.java
  • 添加注解@SpringBootApplication
    • 它是一个复合注解,包括以下功能
      • @ComponentScan
        • 包扫描,扫描当前路径下所有的@Controller、@Service等
      • @SpringBootConfiguration
        • 设置当前类是配置类
        • 会将当前类内以@Bean标记的方法的添加到spring容器中
        • 简单来说就是可以在这里加key:value,例如map.put(“username”,”iamzwhui”)

          @Bean
          public Map config() {
          Map map = new HashMap();
          map.put("username", "iamzwhui");
          return map;
          }
        • 在其他类可以通过ConfigurableApplicationContext对象获取到username
      • @EnableAutoConfiguration
        • SpringBoot自动配置,想知道详情可以自行百度,这里不详解

实现EmbeddedServletContainerCustomizer

  • 可以自定义容器,非必须,想知道详情可以自行百度,这里不详解

继承SpringBootServletInitializer

  • 是spring对servlet初始化组件,想知道详情可以自行百度,这里不详解

具体代码如下:

package com.iamzwhui.springboottest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.stereotype.Controller;

//******************************
//******************************
/**
 * Spring入口类
 * @author iamzwhui
 * @since 20180825
 */
//******************************
//******************************
/**
 * @RestController
 * 是一个复合注解,直接返回json,包括以下功能
 * @ResponseBody
 * @Controller
 * 如果需要返回jsp、html等,请使用@Controller
 */
//@RestController
/**
 * @SpringBootConfiguration
 * 承自@Configuration,标注当前类是配置类
 * 会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名
 */
//@SpringBootConfiguration
/**
 * @SpringBootApplication
 * 是一个复合注解,包括以下功能
 * @ComponentScan
 * @SpringBootConfiguration
 * @EnableAutoConfiguration
 */
@SpringBootApplication
public class GateSpringBootApplication extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {

    /**
     * 标注了@SpringBootApplication
     * 表示这个是Spring应用的入口
     * 是Spring应用的配置起点,可以配置Spring上下文
     * 需要在这个Spring应用的入口类中添加一个main()方法
     * 在main()方法中调用Spring Boot的SpringApplication类的run()方法,以启动该Spring应用
     */
    public static void main(String[] args) {
        SpringApplication.run(GateSpringBootApplication.class, args);
    }

    /**
     * EmbeddedServletContainerCustomizer
     * web容器的实例化,比如tomcat
     * 在这里可以设置服务器的配置,比如端口
     */
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(8080);
    }

    /**
     * SpringBootServletInitializer
     * 若要展示jsp页面
     * 则必须继承SpringBootServletInitializer类重写里面的方法
     */
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(GateSpringBootApplication.class);
    }
}

2、创建controller

注解说明

/**
 * class前面设置注解
 * 配置@EnableAutoConfiguration,根据添加的jar依赖自动配置Spring
 * 配置@Controller,则return test,其实返回的是/WEB-INF/jsp/test.jsp
 *      前提是需要配置文件内容(src/main/source/application.properties)
 *      spring.mvc.view.prefix=/WEB-INF/jsp/
 *      spring.mvc.view.suffix=.jsp
 * 配置@RestController,则返回的直接是test字符串
 */

基于@Controller创建TestController

package com.iamzwhui.springboottest.test.controller;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

//@RestController
@Controller
//@EnableAutoConfiguration
public class TestController {

    @RequestMapping("/testController")
    public String test(){
        return "test";
    }
}

基于@RestController创建TestRestController

package com.iamzwhui.springboottest.test.controller;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
//@Controller
//@EnableAutoConfiguration
public class TestRestController {

    @RequestMapping("/testRestController")
    public String test(){
        return "test";
    }
}

创建前端文件

  • jsp文件
    • 路径:src/main/webapp/WEB-INF/jsp/test.jsp
    • 内容:

      <%@ page
      language="java"
      contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>



      http-equiv="Content-Type"
      content="text/html; charset=UTF-8">
      jsp


      this is jsp


  • html文件
    • 路径:src/main/webapp/test.html
    • 内容:





      html


      this is html


创建配置文件

  • 位置:src/main/source/application.properties
  • 内容:
################# 项目  #####################
#访问的根目录
#server.context-path=/

################# 服务器  #####################
#端口
#server.port=8080
#session超时
#server.session-timeout=30
#编码格式
#server.tomcat.uri-encoding=utf-8

################# jsp  #####################
#这里添加了之后,在controller里面return jsp页面的名称即可,这里会默认添加前后缀
#例如return test,其实返回的是/WEB-INF/jsp/test.jsp
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
#关闭默认模板引擎
#spring.thymeleaf.cache=false
#spring.thymeleaf.enabled=false
#server.servlet.jsp.init-parameters.development=true

三、运行

1、运行项目

  • 项目右键
  • 选择debug as
  • 选择第一个maven build
  • 如果之前没有运行过,需要输入运行指令
    • 第一次,会弹出界面
    • 在name中输入随意名称
      • 例如clean and run
    • 在goals中输入指令
      • clean package spring-boot:run(意思是打包运行项目)
    • 点击debug确定即可
    • 项目启动完成
      • console打印:Tomcat started on port(s): 8080 (http)
      • console打印:FrameworkServlet ‘dispatcherServlet’: initialization completed in 34 ms
  • 若要修改指令
    • 项目右键
    • 选择debug as
    • 选择底部的debug configuration
    • 左边看板找到你起的名称
    • 右边找到goals修改指令

2、请求项目

测试如下:

请求testRestController

- http://localhost:8080/testRestController
- 返回test字符串

请求testController

- http://localhost:8080/testController
- 返回/WEB-INF/jsp/test.jsp页面

请求html

- http://localhost:8080/test.html
- 返回/webapp/test.html页面

四、问题

  • maven问题,参考如下:
    • https://blog.csdn.net/u013632854/article/details/82086344
  • SpringBoot问题,参考如下:
    • https://blog.csdn.net/u013632854/article/details/82086405

你可能感兴趣的:(web)