spring boot 入门-使用spring boot构建简单应用

目的:建立一个简单的联系人列表; 使用 spring boot + maven 进行构建


【0】文件结构如下:


【1】pom.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.habuma</groupId><artifactId>contacts</artifactId><version>0.1.0</version><packaging>jar</packaging><!-- spring boot 的 web starter 能够将 spring mvc 需要的所有内容全部添加到构建中--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.1.4.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring4</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId></dependency><dependency><groupId> org.springframework.boot</groupId><artifactId>spring-boot-actuator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>


【2】请求控制器 ContactController.java

package contacts;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;@Controller
@RequestMapping("/")
public class ContactController {private ContactRepository contactRepo;@Autowiredpublic ContactController(ContactRepository contactRepo) {this.contactRepo = contactRepo;}@RequestMapping(method=RequestMethod.GET)public String home(Map<String,Object> model) {List<Contact> contacts = contactRepo.findAll();model.put("contacts", contacts);return "home";}@RequestMapping(method=RequestMethod.POST)public String submit(Contact contact) {contactRepo.save(contact);return "redirect:/";}
}

【3】java bean, Contact.java

public class Contact {private Long id;private String firstName;private String lastName;private String phoneNumber;private String emailAddress;// setter + getter 方法
}


【4】创建视图

【4.1】 在maven中建立以来 thymeleaf 模板

<dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring4</artifactId></dependency>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Spring Boot Contacts</title>
<link rel="stylesheet" th:href="@{/style.css}" />
</head>
<body><h2>Spring Boot Contacts</h2><form method="POST"><label for="firstName"> First Name:</label> <input type="text" name="firstName"></input><br /> <label for="lastName"> Last Name:</label> <input type="text" name="lastName"></input><br /> <label for="phoneNumber"> Phone #:</label> <input type="text" name="phoneNumber"></input><br /> <label for="emailAddress"> Email:</label><input type="text" name="emailAddress"></input><br /> <input type="submit"></input></form><ul th:each="contact : ${contacts}"><li><span th:text="${contact.firstName}">First</span><span th:text="${contact.lastName}">Last</span> : <span th:text="${contact.phoneNumber}">phoneNumber</span>,<span th:text="${contact.emailAddress}">emailAddress</span></li></ul>
</body>
</html>


style.css

body {background-color: #eeeeee;font-family: sans-serif;
}
label {display: inline-block;width: 120px;text-align: right;
}


【5】持久化数据

【5,.1】 建立maven依赖 jdbc 和 h2 内嵌数据库

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId></dependency>
【5.2】 基于spring 建立 dao

package contacts;
import java.util.List;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;@Repository
public class ContactRepository {private JdbcTemplate jdbc;@Autowiredpublic ContactRepository(JdbcTemplate jdbc) {this.jdbc = jdbc;}public List<Contact> findAll() {return jdbc.query("select id, firstName, lastName, phoneNumber, emailAddress " +"from contacts order by lastName",new RowMapper<Contact>() {public Contact mapRow(ResultSet rs, int rowNum)throws SQLException {Contact contact = new Contact();contact.setId(rs.getLong(1));contact.setFirstName(rs.getString(2));contact.setLastName(rs.getString(3));contact.setPhoneNumber(rs.getString(4));contact.setEmailAddress(rs.getString(5));return contact;}});}public void save(Contact contact) {jdbc.update("insert into contacts " +"(firstName, lastName, phoneNumber, emailAddress) " +"values (?, ?, ?, ?)",contact.getFirstName(), contact.getLastName(),contact.getPhoneNumber(), contact.getEmailAddress());}
}

【6】建立启动类

package contacts;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;@ComponentScan
@EnableAutoConfiguration
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

【7】构建项目 mvn pacakge


补充: schema.sql SQL文件:

create table contacts (id identity,firstName varchar(30) not null,lastName varchar(50) not null,phoneNumber varchar(13),emailAddress varchar(30)
);













本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

object面试题

equals方法 public class Demo {public static void main(String[] args) {String s1 "abc";StringBuilder sb new StringBuilder("abc");//System.out.println(sb.append("a"));//s1是字符串,则equals为字符串比较内容,// 由于比较对象不为字…

Jodd - Java界的瑞士军刀轻量级工具包

转载自 Jodd - Java界的瑞士军刀轻量级工具包&#xff01; Jodd介绍 Jodd是对于Java开发更便捷的开源迷你框架&#xff0c;包含工具类、实用功能的集合&#xff0c;总包体积不到1.7M。 Jodd构建于通用场景使开发变得简单&#xff0c;但Jodd并不简单&#xff01;它能让你把事情做…

spring boot 入门荔枝

【0】README spring boot 的4个核心功能介绍&#xff1a; 1. 自动配置&#xff1a; 无需 java配置或 xml配置&#xff0c;spring boot 会自动配置bean &#xff1b; 2. 起步依赖 &#xff1a; 为项目提供依赖管理&#xff0c;特别是解决了 各个 依赖jar 包的兼容性问题&…

基本数据类型与字符串的转换

基本数据类型与字符串的转换 1.字符串转化成其他类型 口诀:需要转成什么类型就用什么类型的包装类调用方法 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean2.其他类型转…

Tomcat Get请求的巨坑

转载自 Java程序员注意&#xff1a;Tomcat Get请求的巨坑&#xff01; Tomcat8.5&#xff0c;当Get请求中包含了未经编码的中文字符时&#xff0c;会报以下错误&#xff0c;请求未到应用程序在Tomcat层就被拦截了。 Tomcat报错&#xff1a; java.lang.IllegalArgumentExceptio…

spring boot actuator 入门荔枝

1.创建maven 项目&#xff0c; 通过 http://start.spring.io/ 构建项目结构 2. 3个核心文件内容 ReadinglistApplicatoin.java package com.tangrong;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplicat…

BigDecimal习题

BigDecimal习题 1.定义一个double类型的数组 double[] array{1.2, 0.6, 0.01, 3.2, 5.56, 7.21}; 2.使用BigDecimal求数组中元素的平均值&#xff0c;保留2位小数(四舍五入) 注意&#xff1a;每一个元素都需要封装为BigDecimal对象&#xff0c;才能进行运算&#xff0c;运算的…

Spring Boot 发布 jar 包转为 war 包秘籍。

转载自 Spring Boot 发布 jar 包转为 war 包秘籍。Spring Boot是支持发布jar包和war的&#xff0c;但它推荐的是使用jar形式发布。使用jar包比较方便&#xff0c;但如果是频繁修改更新的项目&#xff0c;需要打补丁包&#xff0c;那这么大的jar包上传都是问题。所以&#xff0c…

java的几种对象(PO,VO,DAO,BO,POJO)解释

本文转自&#xff1a; http://blog.csdn.net/bzhxuexi/article/details/8227808 Java的几种对象(PO,VO,DAO,BO,POJO)解释 一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录&#xff0c;多个记录…

Redis 的 4 大法宝,2018 必学中间件

转载自 Redis 的 4 大法宝&#xff0c;2018 必学中间件&#xff01;Redis是什么&#xff1f;全称&#xff1a;REmote DIctionary ServerRedis是一种key-value形式的NoSQL内存数据库&#xff0c;由ANSI C编写&#xff0c;遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、…

数据交换方法

数据交换方法 一.定义三方变量 【代码实现常用】 int a9; int b10;//定义第三方变量 int tempa; ab; btemp;System.out.println("a"a);//a10 System.out.println("b"b);//b9二.基本位运算&#xff08;^&#xff09; 概念&#xff1a; 参加运算的两个数据…

高级 Java 必须突破的 10 个知识点

转载自 高级 Java 必须突破的 10 个知识点&#xff01; 工作多少年了&#xff0c;还在传统公司写if / for 等简单的代码&#xff1f;那你就真的要被社会淘汰了&#xff0c;工作多年其实你与初级工程师又有多少区别呢&#xff1f;那么作为一个高级Java攻城狮需要突破哪些知识点呢…

java动态代理和cglib动态代理

本文转自&#xff1a; http://blog.csdn.net/leon709/article/details/9529307 动态代理应用广泛&#xff0c;spring&#xff0c;Struts等框架很多功能是通过动态代理&#xff0c;或者进一步封装来实现的。 常见的动态代理模式实现有Java API提供的动态代理和第三方开源类库CG…

排名前 16 的 Java 工具类

转载自 干货&#xff1a;排名前 16 的 Java 工具类&#xff01;在Java中&#xff0c;工具类定义了一组公共方法&#xff0c;这篇文章将介绍Java中使用最频繁及最通用的Java工具类。以下工具类、方法按使用流行度排名&#xff0c;参考数据来源于Github上随机选取的5万个开源项目…

匿名内部类与Lambda表达式习题

匿名内部类与Lambda表达式习题 1.写一个函数式接口 public Operation{ public int calc(int a,int b); } 在测试类中写一个method方法&#xff0c;参数为Operation和a,b public static void method(Operation op) int result op.calc(a,b); System.out.println(result); } 在…

MySQL 调优/优化的 101 个建议!

转载自 MySQL 调优/优化的 101 个建议&#xff01; MySQL是一个强大的开源数据库。随着MySQL上的应用越来越多&#xff0c;MySQL逐渐遇到了瓶颈。这里提供 101 条优化 MySQL 的建议。有些技巧适合特定的安装环境&#xff0c;但是思路是相通的。我已经将它们分成了几类以帮助你理…

CGLIB依赖ASM(关于java字节码框架ASM的学习)

本文转自&#xff1a; http://www.cnblogs.com/liuling/archive/2013/05/25/asm.html 一、什么是ASM ASM是一个java字节码操纵框架&#xff0c;它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件&#xff0c;也可以在类被加载入 Java 虚拟机之前动…

二分查找实现

二分查找实现 1.调用Arrays中的binarySearch方法即可实现 【使用前提&#xff1a;数组必须为升序排列】 public class Demo1 {public static void main(String[] args) {int[] arr {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};//查找元素定为4int key 4;int index1 Arrays.binarySea…

Java程序员必须掌握的常用Linux命令

转载自 Java程序员必须掌握的常用Linux命令 Java程序员也是半个运维了&#xff0c;在日常开发中经常会接触到Linux环境操作。小公司的开发人员甚至是兼了全运维的工作&#xff0c;下面整理了一些常用的Linux操作命令。 Linux常用指令 ls   显示文件或目录-l 列…

分类器评价指标

转自&#xff1a;http://www.cnblogs.com/549294286/p/3621740.html&#xff1b; By the way, classic post like 分类指标准确率(Precision)和正确率(Accuracy)的区别 精度和召回率是广泛用于信息检索和统计学分类领域的两个度量值&#xff0c;用来评价结果的质量。其中精度是…