spring boot:简化新Spring应用的初始搭建以及开发

spring boo

Spring Boot 是由 Pivotal 团队提供的全新框架,专注于Spring平台和第三方开发库,简化了基于Spring的产品开发,开发时只需少量的Spring配置就可以完成项目结构的初始搭建。

Spring Boot使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Spring Boot主要有如下核心功能:

1.独立运行的Spring项目

Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。非常方便。

2.内嵌Servlet容器

Spring Boot可以内嵌Tomcat、Jetty和Undertow,这样我们无需以war包的形式部署项目。

3.提供starter简化Maven配置

使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。

4.自动配置Spring

5.准生产的应用监控

提供产品级特性,比如指标测量、健康检查、外部配置等。

6.无代码生成和xml配置

Spring Boot 系统要求

Spring Boot 2.0.0.RELEASE需要Java 8或9以及 Spring Framework 5.0.4.RELEASE或更高版本。为Maven 3.2+和Gradle 4提供了明确的构建支持。

spring boot搭建web项目

下面正式开始单间一个web项目,使用的工具是eclipse来进行搭建,创建一个maven工程。下面开启贴图模式,这前面的过程都是非常的简单,网上也有大量的参考资料,这里为了保证一个完整性,开始贴图。

首先就是很简单,右击-->new-->project 选择maven project

然后选择一个默认的配置即可,一般包含的文件都会在里面。

这里填写好group id其实就是包名,后面也可以更改的,还有artifiact id就是工程名称,然后单击完成,就创建一个简单的maven工程。

具体的工程目录如下所示

按照上面的流程建好了工程之后,可以查看到具体的工程目录如下,这里作为一个web项目还缺少如下相关目录用来存放web文件和配置文件。

[html]view plaincopy

src/main/resources //这个文件夹中存放的是配置文件例如application.properties 配置文件 src/main/webapp //这个文件夹中存放的是前端的文件html,jsp、css

这些文件夹手动添加即可,添加完成之后,具体得到的如下图所示:

要想把这个项目跑起来,需要做一下几个步骤:

1. 首先需要配置一下pom.xml文件,引入spring-boot的相关依赖文件 ,这个是最基本的包,里面包含了运行的相关组件,例如tomcat,以及其他的jar包

[html]view plaincopy

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

[html]view plaincopy

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

这样就能启动一个spring-boot的web项目,其中内嵌了相关的tomcat服务器,接下里是至关重要的,因为如果不引入下面的jar包,在调整jsp的页面的时候直接看到的是变成了下载的模式,笔者也是在这个地方郁闷了半天,百度上找了好多的例子,大部分都没讲到这个方面,故而在这里重点说明一下

[html]view plaincopy

<!-- JSTL for JSP spring boot搭建web项目,跳转到jsp一定要添加下面的jar包,否则出现跳转的时候,变成下载的功能,保存该页面--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency><!-- Need this to compile JSP --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><scope>provided</scope></dependency>

引入了这个jar之后呢,才能对jsp进行解析,编译,到这里之后,相关的依赖基本上都算引入完成。接下来要做的是配置application.properties配置文件,这里面也是有一堆坑在这里。默认的情况下,这个配置文件是不需要配置的,服务器也可以启动起来。但是很多同学在搭建玩项目之后,进行的跳转的时候,不是报找不到页面,就是解析错误。因为在这个配置文件中需要指定一下需要跳转的jsp页面的路径,即,具体在哪个文件夹下面,添加如下配置:

[html]view plaincopy

#默认的位置是src/main/webapp 这里可以更换,比如/page/ 那么目录就变成了src/main/webapp/pages spring.mvc.view.prefix=/ spring.mvc.view.suffix=.jsp

这里面还有一个坑,在新版本的spring boot中是按上面的配置,但是在老的版本中是如下的用法,名称不一样,这里需要注意一下,否则对于新学者来说,又要懵逼半天了...

[html]view plaincopy

spring.view.prefix=/ spring.view.suffix=.jsp

然后需要创建jsp的页面了,在添加的源码包src/main/webapp的下面添加jsp文件,注意,webapp是默认的路径,如果想继续分类,则可以在该文件夹下面进行添加,比如说添加一个pages文件夹,jsp文件都放在这里面,那么spring.mvc.view.prefix=/pages/ 否则会找不到对应的文件。大体的目录结构如下所示:

[html]view plaincopy

|----src/main/webapp |------index.jsp |------pages |----page.index

对于jsp页面中,就写入一点简单的测试语句就行了

[html]view plaincopy

<%@ 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><metahttp-equiv="Content-Type"content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> hello world!!! name=${name } welcome! </body></html>

好了,上面的步骤都完成之后,这里,只要编写简单的Controller即可,这里面提供了两个跳转路径一个是/home,一个是/home/page,一个是携带返回值,一个没有返回相应结果。

[java]view plaincopy

@Controllerpublicclass HomeController { @RequestMapping(value="/home") public String home(){ System.out.println("redirect to home page!"); return"index"; } @RequestMapping(value="/home/page") @ResponseBodypublic ModelAndView goHome(){ System.out.println("go to the home page!"); ModelAndView mode = new ModelAndView(); mode.addObject("name", "zhangsan"); mode.setViewName("index"); return mode; } }

然后在App类中,添加如下代码:

[java]view plaincopy

@SpringBootApplicationpublicclass App { publicstaticvoid main( String[] args ) { SpringApplication.run(App.class); } }

写好上面的Controller之后,在App类上面右击,选择Run Application执行main函数,看到控制台输出如下,说明spring boot启动成功

[plain]view plaincopy

. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.10.RELEASE) 2018-03-01 17:32:42.069 INFO 64878 --- [ main] com.spring.example.App : Starting App on fhldeMacBook-Air.local with PID 64878 (/Users/fhl/Documents/workspace1/spring-boot-example/target/classes started by fhl in /Users/fhl/Documents/workspace1/spring-boot-example) 2018-03-01 17:32:42.074 INFO 64878 --- [ main] com.spring.example.App : No active profile set, falling back to default profiles: default 2018-03-01 17:32:42.175 INFO 64878 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy 2018-03-01 17:32:45.865 INFO 64878 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http) 2018-03-01 17:32:45.892 INFO 64878 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2018-03-01 17:32:45.895 INFO 64878 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.27 2018-03-01 17:32:46.530 INFO 64878 --- [ost-startStop-1] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2018-03-01 17:32:46.542 INFO 64878 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2018-03-01 17:32:46.543 INFO 64878 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 4371 ms 2018-03-01 17:32:46.809 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 2018-03-01 17:32:46.818 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 2018-03-01 17:32:46.819 INFO 64878 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2018-03-01 17:32:47.838 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1d8299fd: startup date [Thu Mar 01 17:32:42 CST 2018]; root of context hierarchy 2018-03-01 17:32:48.136 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/home]}" onto public java.lang.String com.spring.example.controller.HomeController.home() 2018-03-01 17:32:48.137 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/home/page]}" onto public org.springframework.web.servlet.ModelAndView com.spring.example.controller.HomeController.goHome() 2018-03-01 17:32:48.150 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2018-03-01 17:32:48.152 INFO 64878 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 2018-03-01 17:32:48.256 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:48.256 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:48.574 INFO 64878 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2018-03-01 17:32:49.556 INFO 64878 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2018-03-01 17:32:49.857 INFO 64878 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2018-03-01 17:32:49.867 INFO 64878 --- [ main] com.spring.example.App : Started App in 8.378 seconds (JVM running for 8.905) 2018-03-01 17:32:52.093 INFO 64878 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring FrameworkServlet 'dispatcherServlet' 2018-03-01 17:32:52.093 INFO 64878 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization started 2018-03-01 17:32:52.123 INFO 64878 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : FrameworkServlet 'dispatcherServlet': initialization completed in 29 ms

然后打开浏览器,输入地址http://127.0.0.1:8080/home/page

看到返回结果如下所示,则表示跳转成功:

————————————————————————————————

SSL证书是HTTP明文协议升级HTTPS加密协议的重要渠道,是网络安全传输的加密通道。关于更多SSL证书的资讯,请关注数安时代(GDCA)。GDCA致力于网络信息安全,已通过WebTrust 的国际认证,是全球可信任的证书签发机构。GDCA专业技术团队将根据用户具体情况为其提供最优的产品选择建议,并针对不同的应用或服务器要求提供专业对应的HTTPS解决方案。

t:简化新Spring应用的初始搭建以及开发

猜你喜欢

转载自blog.csdn.net/trustauth/article/details/80693928
今日推荐