首页 > 其他分享 >springboot的简单使用(3)

springboot的简单使用(3)

时间:2022-09-02 19:44:41浏览次数:50  
标签:xml springboot tomcat spring 简单 boot springframework 使用 org

1.5 第五章 接口架构风格—RESTful

1.5.1 认识 REST REST(英文:Representational State Transfer,简称 REST) 一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交 互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,REST 这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。

任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构

比如我们要访问一个 http 接口:http://localhost:8080/boot/order?id=1021&status=1

采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1

 

1.5.2 RESTful 的注解 Spring Boot 开发 RESTful 主要是几个注解实现

(1) @PathVariable 获取 url 中的数据 该注解是实现 RESTFul 最主要的一个注解

(2) @PostMapping 接收和处理 Post 方式的请求

(3) @DeleteMapping 接收 delete 方式的请求,可以使用 GetMapping 代替

(4) @PutMapping 接收 put 方式的请求,可以用 PostMapping 代替

(5) @GetMapping 接收 get 方式的请求

1.5.3 RESTful 优点

➢ 轻量,直接基于 http,不再需要任何别的诸如消息协议 get/post/put/delete 为 CRUD 操作

➢ 面向资源,一目了然,具有自解释性。

➢ 数据描述简单,一般以 xml,json 做数据交换。

➢ 无状态,在调用一个接口(访问、操作资源)的时候,可以不用考虑上下文,不用考虑当前状态, 极大的降低了复杂度。

➢ 简单、低耦合

1.5.4 注解练习

1.5.4.1 编写 Controller

@org.springframework.web.bind.annotation.RestController
public class RestController {

@GetMapping(value = "/student/{studentid}/{studentname}")
public String querySchool(
@PathVariable(value = "studentid")
Integer id,
@PathVariable(value = "studentname")
String name){
return "get请求,查询学生id"+id+"名字:"+name;
}
}

application.properties 文件

启用 HiddenHttpMethodFilter 这个过滤器, 支持 post 请求转为 put,delete

spring.mvc.hiddenmethod.filter.enabled=true

使用 Postman 模拟发送请求,进行测试

 

1.5.4.3 请求路径冲突

@GetMapping(value = "/student/{studentId}/{classname}")

@GetMapping(value = "/student/{studentId}/{schoolname}")

这样的路径访问会失败, 路径有冲突。

解决:设计路径,必须唯一, 路径 uri 和 请求方式必须唯一。

 

1.5.4.4 RESTful 总结

➢ 增 post 请求、删 delete 请求、改 put 请求、查 get 请求

➢ 请求路径不要出现动词 例如:查询订单接口 /boot/order/1021/1(推荐) /boot/queryOrder/1021/1(不推荐)

➢ 分页、排序等操作,不需要使用斜杠传参数 例如:订单列表接口/boot/orders?page=1&sort=desc      一般传的参数不是数据库表的字段,可以不采用斜杠

 

 

1.8 Spring Boot 打包

Spring Boot 可以打包为 war 或 jar 文件。以两种方式发布应用

1.8.1 Spring Boot 打包为 war 

1.8.1.1 pom.xml

在 pom.xml 文件中配置内嵌 Tomcat 对 jsp 的解析包

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

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<finalName>mywar</finalName>

<resources>
<!--mybatis 他的 xml 文件放置 src/main/java 目录-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!--指定 resources 下面的所有资源-->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!--指定 jsp 文件编译后目录-->
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/*.*</include>
</includes>
</resource>

</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

 创建 jsp 文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
打war包,取得数据为:${data}
</body>
</html>

创建 WarController

@Controller
public class WarController {

@RequestMapping("/mywar")
public String warcontroller(HttpServletRequest request){
request.setAttribute("data","往war中存数据");
return "index";

}
}

 设置视图解析器

server.port=9095
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

 启动主类,在浏览器访问地址 index

主启动类继承 SpringBootServletInitializer:继承 SpringBootServletInitializer 可以使用外部 tomcat。 SpringBootServletInitializer 就是原有的 web.xml 文件的替代。使用了嵌入式 Servlet,默 认是不支持 jsp。

@SpringBootApplication
public class Springboot03Application extends SpringBootServletInitializer{

public static void main(String[] args) {
SpringApplication.run(Springboot03Application.class, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Springboot03Application.class);
}
}

发布打包后的 war 到 tomcat:

target 目录下的 war 文件拷贝到 tomcat 服务器 webapps 目录中,启动 tomcat。

在浏览器访问 web 应用

 

 

1.8.2 Spring Boot 打包为 jar

pom.xml

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

<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<finalName>myjar</finalName>

<resources>
<!--mybatis 他的 xml 文件放置 src/main/java 目录-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!--指定 resources 下面的所有资源-->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!--指定 jsp 文件编译后目录-->
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/*.*</include>
</includes>
</resource>

</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--带有 jsp 的程序,打包为 jar,必须用这个版本-->
<version>1.4.2.RELEASE</version>
</plugin>
</plugins>
</build>

创建 jsp 文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
打jar包,取得数据为:${data}
</body>
</html>

创建 Controller

@Controller
public class WarController {

@RequestMapping("/myjar")
public String warcontroller(HttpServletRequest request){
request.setAttribute("data","往jar中存数据");
return "index";

}
}

application.properties

server.port=9999
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

启动 Application,在浏览器访问应用

执行 jar,启动内置的 tomcat  java –jar myjar.jar

浏览器访问 web 应用

 

1.9使用mybatis生成器生成实体类,mapper.xml,mapper接口:

pom依赖:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>

<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<!--mybatis代码自动生成插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<!--配置文件的位置-->
<configurationFile>GeneratorMapper.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>

使用GeneratorMapper.xml文件(一定要放在根目录下):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

<!-- 指定连接数据库的JDBC驱动包所在位置,指定到你本机的完整路径 -->
<classPathEntry location="E:\mysql-connector-java-8.0.30.jar"/>

<!-- 配置table表信息内容体,targetRuntime指定采用MyBatis3的版本 -->
<context id="tables" targetRuntime="MyBatis3">

<!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>

<!-- 配置数据库连接信息 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=GMT%2B8"
userId="root"
password="ztb">
</jdbcConnection>

<!-- 生成model类,targetPackage指定model类的包名, targetProject指定生成的model放在eclipse的哪个工程下面-->
<javaModelGenerator targetPackage="com.ztb.pojo"
targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
<property name="trimStrings" value="false" />
</javaModelGenerator>

<!-- 生成MyBatis的Mapper.xml文件,targetPackage指定mapper.xml文件的包名, targetProject指定生成的mapper.xml放在eclipse的哪个工程下面 -->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>

<!-- 生成MyBatis的Mapper接口类文件,targetPackage指定Mapper接口类的包名, targetProject指定生成的Mapper接口放在eclipse的哪个工程下面 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ztb.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="false" />
</javaClientGenerator>

<!-- 数据库表名及对应的Java模型类名 -->
<table tableName="user" domainObjectName="User"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>

</context>

</generatorConfiguration>

 

双击插件生成器生成:

 

标签:xml,springboot,tomcat,spring,简单,boot,springframework,使用,org
From: https://www.cnblogs.com/zhangtaibing/p/16651032.html

相关文章

  • 过滤器和拦截器的使用
    过滤器和拦截器的使用拦截器应用场景拦截器本质上是面向切面编程(AOP),符合横切关注点的功能都可以放在拦截器中来实现,主要的应用场景包括:登录验证,判断用户是否登录。权......
  • HiveSql调优系列之Hive严格模式,如何合理使用Hive严格模式
    目录综述1.严格模式1.1参数设置1.2查看参数1.3严格模式限制内容及对应参数设置2.实际操作2.1分区表查询时必须指定分区2.2orderby必须指定limit2.3限制笛卡尔积3.搭......
  • <dependencyManagement>正确使用方法 多个子项目都引用同一样依赖,则可以避免在每个使用
    <dependencyManagement>正确使用方法dependencyManagement正确使用方法一、介绍Maven中的dependencyManagement元素提供了一种管理依赖版本号的方式。在dependencyMan......
  • 使用JavaConfig实现配置
    @Configuration在一个类上加了@Configration之后就类似<beans><beanid="xxx" class="xxxxxx"/></beans>这个也会被Spring容器托管,注册到容器中,因为他本来就是一个@......
  • 07_Linux基础-计划任务-备份脚本-变量定义和使用
    @目录07_Linux基础-计划任务-备份脚本-变量定义和使用一.计划任务cronat二.计划任务练习-备份脚本计划任务实验重定向练习总结三.黑客-计划任务四.变量定义和使用07_L......
  • 放弃FastDFS!SpringBoot整合MinIO实现分布式文件服务,真香!
    今天分享一个非常不错且开源的分布式存储组件MinIO,有很多朋友在用。什么是MinIO?Minio是个基于Golang编写的开源对象存储套件,基于ApacheLicensev2.0开源协议,虽然轻量......
  • pyqt5控件使用方法
    一)消息框(QMessageBox)一、提供的类型QMessageBox.information信息框QMessageBox.question问答框QMessageBox.warning警告QMessageBox.ctitical危险......
  • Transition 初步使用
    TransitionVue提供了transition的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡:条件渲染(使用v-if)条件展示(使用v-show)动态组件组件根节点......
  • 外置tomcat方式部署springboot
    目录外置tomcat方式部署springboot1、打包方式的改变2、去除springboot中内置的tomcat(.xml中)3、启动类中增加继承SpringBootServletInitializer,重写configure方法外置tom......
  • paramiko模块使用
    该模块基于ssh用于连接远程服务器并执行相关操作。SSHClient用于连接远程服务器并执行基本命令pip3installparamiko #基于用户名和密码importparamiko#......