试用SpringBoot创建WEB应用

最近试用了一下Spring Boot,发现用它创建WEB应用简直好爽啊,记录一下。

首先用Eclipse建一个maven工程,创建时选中“Create a simple proejct (skip archetype selection)”,建个简单工程就好了。

然后编辑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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.test</groupId>
  <artifactId>appboot</artifactId>
  <version>0.0.1</version>
  <name>appboot</name>
  <dependencies>
    <!-- 引入WEB开发支持 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>1.4.1.RELEASE</version>
    </dependency>
    <!-- 引入FreeMarker支持 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-freemarker</artifactId>
      <version>1.4.1.RELEASE</version>
    </dependency>
    <!-- 引入重编译自动加载支持,这样在Eclipse中调试时有变更会自动重新加载 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <version>1.4.1.RELEASE</version>
      <optional>true</optional>
    </dependency>
    <!-- 引入fastjson,用于替换默认的json包 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.17</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>appboot</finalName>
    <plugins>
      <!-- 引入maven打包支持 -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>1.4.1.RELEASE</version>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

添加应用程序入口文件Application.java,如下:

package org.me;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.http.converter.HttpMessageConverter;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;

@SpringBootApplication
public class Application {
    /**
     * 用fastjson作为默认的json编码器
     * @return
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue);
        fastConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fastConverter;
 
        return new HttpMessageConverters(converter);
    }

    /**
    * 应用程序入口
    * @param args
    */
    public static void main(String[] args) {
        //用SpringApplication启动
        SpringApplication.run(Application.class, args);
    }
}

如果只用默认的json编码器,那么只有main方法就够了。然后来写一个控制器,比如叫HomeController:

package org.me;

import java.util.Date;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 定义一个控制器
 */
@Controller
public class HomeController {
    /**
    * 定义一个login方法,映射到/login上,返回视图为home/login.ftl
    */
    @RequestMapping("/login")
    public String login(Map<String, Object> model) {
        model.put("time", new Date());
        model.put("message", "Hello, Spring Boot");
        
        return "home/login";
    }
    
    /**
    * 定义一个Json的调用
    */
    @RequestMapping(value = "/checkLogin", method = RequestMethod.POST)
    @ResponseBody
    public JsonResult checkLogin(@RequestBody LoginRequest request) {
        JsonResult result = new JsonResult();
        result.error = 2020;
        result.data = String.format("%s : %s", request.user, request.pass);
  
       return result;
    }
}

和用SpringMVC时没有什么不同。SpringBoot一般不推荐JSP视图引擎,所以这里使用了freemarker作为视图引擎。login方法里指定了视图为home/login,因此在src/main/resources/templates/home下创建视图login.ftl:

<!DOCTYPE html>
<html>
<head>
  <title>Login</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" href="css/core.css" />
  <script src="js/jquery-3.1.1.min.js"></script>
  <script>
  $(function(){
      $("#login").click(function(){
        $.ajax({
          url: "checkLogin",
        type: "POST",
        contentType: "application/json",
        dataType: "json",
        data: JSON.stringify({user:"admin", pass:"123"}),
        success: function(data) {
            $("#out").text(JSON.stringify(data));
        }
      });
    });
  });
  </script>
</head>
<body>
  DateTime: ${time?time}<br>
  Message: ${message}<br/><br/>
  <button id="login">登录</button><br/><br/>
  <div id="out"></div>
</body>
</html>

这个页面从控制器接收了time和message两个参数,用${}的形式显示在页面上。此外还包括了一个ajax调用,向后台请求checkLogin,并传入参数,显示返回值。

最后加个SpringBoot的配置文件,application.properties,放到src/main/resources下:

# APPLICATION SETTINGS (SpringApplication)
spring.main.web-environment=true
spring.main.show-banner=false

# EMBEDDED SERVER CONFIGURATION (ServerProperties) 
server.port=8080

# FREEMARKER (FreeMarkerAutoConfiguration)
spring.freemarker.cache=false
spring.freemarker.templateEncoding=UTF-8
spring.freemarker.suffix=.ftl

其实主要是server.port参数,我们的工程内置了tomcat,这个参数指定了tomcat的绑定端口。

完整的项目结构如下:

默认情况下,视图放到resources/templates下,静态资源放到resources/static下。一切准备就绪,Ctrl+F11把工程跑起来吧,用浏览器访问 http://localhost:8080/login 就可以打开页面了。一但在Eclipse里修改了java文件,SpringBoot会自动重新加载,在开发调试时会很方便。

打包的时候,可以把整个项目的相关资源打成一个jar,这样用命令行就可以运行了。

mvn clean package

会在target下得到一个appboot.jar,这个jar里包含了用户代码的class文件、依赖的jar文件、视图文件、静态资源,会比较大,直接用命令行运行:

java -jar appboot.jar

一个完整的web应用就跑起来了,目标环境只要有JRE就够了,完全不用安装tomcat。虽然jar文件比较大,但是部署到远程环境的话可就方便多了。

时间: 2024-10-11 00:56:26

试用SpringBoot创建WEB应用的相关文章

SpringBoot创建定时任务

之前总结过spring+quartz实现定时任务的整合http://www.cnblogs.com/gdpuzxs/p/6663725.html,而springboot创建定时任务则是相当简单. (1)在springboot主类中@EnableScheduling注解,启用定时任务的配置,如下: (2)创建定时任务实现类,如下: package springboot.web; import java.text.SimpleDateFormat; import java.util.Date; im

我的第二个springboot项目 web+freemarker

上一篇文章讲了,创建了第一个springboot的项目,现在讲一下springboot的web+freemarker的项目: 1.首先引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>${spring.boot.version}</versi

SpringBoot创建maven多模块项目

SpringBoot创建maven多模块项目 项目结构 该项目名称为springboot-maven-multi,由springboot-maven-multi.user-dao.user-domain.user-service.user-web个模块组成,其中springboot-maven-multi模块是其他模块的父模块. 第一步:新建项目springboot-maven-multi File -> New -> Project -> Spring Initializr 如下图:输

从Spring到SpringBoot构建WEB MVC核心配置详解

目录 理解Spring WEB MVC架构的演变 认识Spring WEB MVC 传统时代的Spring WEB MVC 新时代Spring WEB MVC SpringBoot简化WEB MVC开发 自动装配 条件装配 外部化配置 本章源码下载 理解Spring WEB MVC架构的演变 基础Servlet架构 核心架构:前端控制器 Spring WEB MVC架构 认识Spring WEB MVC 传统时代的Spring WEB MVC 怎么讲呢?就是很传统的使用Spring Framew

在SpringBoot的Web项目中使用于Thymeleaf

Thymeleaf是一个用于web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流带来优雅的自然模板——HTML,它可以在浏览器中正确显示,也可以作为静态原型工作,允许在开发团队中进行更强的协作. 有了Spring Framework的模块.与您最喜欢的工具的大量集成,以及插入您自己的功能的能力,Thymeleaf是现代HTML5 JVM web开发的理想选择——尽管它可以做的还有很多. 以上来自于官方的介绍. 1.新建一个SpringBoot的Web项

SpringBoot 基于web应用开发(请求参数获取,静态资源,webjars)

SpringBoot 基于web应用开发 一.Lombok使用 1.导入依赖库 <dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <version>1.18.6</version></dependency> 2.安装插件 3.在实体bean使用 @Data    相当于set,ge

4.SpringBoot的web开发1

一.回顾 好的,同学们,那么接下来呢,我们开始学习SpringBoot与Web开发,从这一章往后,就属于我们实战部分的内容了: 其实SpringBoot的东西用起来非常简单,因为SpringBoot最大的特点就是自动装配. 使用SpringBoot的步骤: 创建一个SpringBoot应用,选择我们需要的模块,SpringBoot就会默认将我们的需要的模块自动配置好 手动在配置文件中配置部分配置项目就可以运行起来了 专注编写业务代码,不需要考虑以前那样一大堆的配置了. 要熟悉掌握开发,之前学习的

基于Socket创建Web服务

基于Socket创建Web服务 为什么要使用Socket呢,我们来看下图 Socket原理图回顾: -------------------编写SocketService,完成字母小写转大写功能----------------------------- ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp socket服务,必须监听一个端口 ServerSo

AZURE快速创建WEB服务器。

部署前的准备: 由于快速部署使用的web apps,所以需要拥有Azure账号,并且拥有相关订阅. 首先创建Web应用,并且可以先看下介绍部分. 点击创建web应用,设置应用名称,选择订阅信息(如果有多个订阅的话).选择资源组,资源组可以新建,也可以使用现有项. 然后创建,稍等片刻,就创建完成了. 到这就相当于我们的运行环境就已经搭建好了.这里我们也可以看下初始的环境. 环境搭建好.下一步就要把文件导入到相应目录下.然后测试是否能正常运行.这里Azure提供多种部署方式,比如常用的FTp.Git