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

基础SpringBoot与maven项目

根目录
│  .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.0</modelVersion>

    <!--此项目基本信息 -->
    <groupId>com.iamzwhui</groupId>
    <artifactId>SpringBootTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!--打包格式:SpringBoot使用JSP时需打包为war类型 -->
    <packaging>war</packaging>

    <!--继承SpringBoot默认的父工程-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.0.RELEASE</version>
    </parent>

    <!--配置信息 ,jdk建议1.7或者以上,使用SprintBoot会少很多麻烦-->
    <properties>
        <java.version>1.7</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <!--<tomcat.version>7.0.52</tomcat.version> --><!-- 如果jdk1.6,需要放开这个版本的tomcat来适配1.6 -->
    </properties>

    <!--依赖管理 -->
    <dependencies>
        <!-- SpringBoot的web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 热更新 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
            <version>1.2.5.RELEASE</version><!--$NO-MVN-MAN-VER$-->
        </dependency>
        <!-- tomcat 的支持.-->
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-tomcat</artifactId> 
            <scope>provided</scope> 
        </dependency> 
        <!-- jsp 的支持.-->
        <dependency> 
            <groupId>org.apache.tomcat.embed</groupId> 
            <artifactId>tomcat-embed-jasper</artifactId> 
            <scope>provided</scope> 
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jstl</artifactId>
        </dependency>
        <!-- 工具 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <!-- 测试模块 -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
        </dependency>
    </dependencies>

    <!--构建插件 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </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"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      <meta
      http-equiv="Content-Type"
      content="text/html; charset=UTF-8">
      <title>jsp</title>
      </head>
      <body>
      this is jsp
      </body>
      </html>
  • html文件
    • 路径:src/main/webapp/test.html
    • 内容:

      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title>html</title>
      </head>
      <body>
      this is html
      </body>
      </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页面

四、问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值