基础SpringBoot与maven项目
- 项目说明:
- 项目基于jdk1.7或者以上
- 项目使用maven
- 项目使用tomcat
- 项目使用SpringBoot
- 项目使用Eclipse
- 项目地址:
- 项目结构:
根目录
│ .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(项目前缀)
- artifact id(项目名称)
- version(项目版本)
- packaging(打包方式)
- 其他(暂时不需要)
- 点击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>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<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>
</properties>
<dependencies>
<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>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<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
*/
/**
* @SpringBootConfiguration
* 承自@Configuration,标注当前类是配置类
* 会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名
*/
/**
* @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中输入随意名称
- 在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问题,参考如下:
- SpringBoot问题,参考如下: