Springboot项目简单与前台进行交互


前言

Spring Boot是一个快速开发框架,可以帮助开发者快速搭建Web应用。在Spring Boot项目中,与前台进行交互通常采用RESTful API的方式,即通过HTTP请求和响应来传输数据。开发者可以使用Spring Boot的注解和相关工具来定义API接口,以及处理请求和返回响应。同时,前台可以通过Ajax等技术向后端发送请求,获取数据并进行展示。通过这种方式,Spring Boot可以与前台进行简单而高效的交互,为用户提供更好的使用体验。


一、HTTP请求和响应是什么?

HTTP请求和响应是互联网上数据传输的基础。HTTP请求是由客户端发送给服务器的数据包,用于请求特定的资源或执行某种操作。而HTTP响应则是服务器对请求作出的回应,其中包含了请求的资源或操作的结果。这些请求和响应的格式都是按照HTTP协议规定的,以确保数据的完整性和正确性。虽然HTTP请求和响应的技术细节比较复杂,但它们是许多互联网应用的基础,比如浏览网页、发送电子邮件等。

二、Springboot项目的使用步骤

1.Springboot项目的简单了解

打开我们的IDEA,我们先来了解一下我们等下使用到HTTP协议的相关标签:


***这里需要强调一点:***以后创建的所有包或类都要放在主包中,这关系这你的Springboot项目能否成功运行!!!

2.简单了解Springboot项目所使用的标签:

1.@SpringBootApplication(出现在主类中):通常用于Spring Boot应用程序的主类上。它充分利用了Spring框架中的自动配置特性和约定大于配置的理念,使得开发者可以更加便捷地搭建一个基于Spring Boot的应用程序。该注解包含了几个常用注解的组合,如@ComponentScan、@EnableAutoConfiguration和@Configuration等。通过@SpringBootApplication注解,开发者可以快速搭建出一个功能完备的Spring Boot应用程序,而无需手动配置大量的Spring组件。

2.@Mapper(出现在mapper类中):用于标识MyBatis框架中的Mapper接口,可以将Mapper接口与对应的映射文件(xml文件)关联起来,实现SQL语句与Java方法之间的映射。使用@Mapper注解可以简化MyBatis的配置过程,提高开发效率。

3.@RestController(出现在controller类中):它是Spring Framework中用于创建RESTful Web服务的一个方便的方式。它可以将Java类定义为RESTful Web服务的控制器,使得开发人员可以很方便地处理HTTP请求和响应。使用@RestController注解,开发人员可以将数据以JSON、XML等格式返回给客户端,从而实现前后端分离,提高Web应用程序的可扩展性和可维护性。

4.@Service(出现在service类中):它通常用于标注Java类,表示该类是一个服务(Service)组件。服务组件的作用是实现业务逻辑,为其他组件提供可重用的函数和方法。在开发过程中,@Service注解可以帮助开发者更好地组织代码,提高代码的可读性和可维护性。

5.@RequestMapping(出现在controller类中):用于在Spring框架中定义HTTP请求的处理方法。它可以将HTTP请求映射到控制器中的特定方法上,并允许开发人员指定请求的URL、请求方法、请求头、请求参数等信息,以便更精确地处理请求。这是一个非常有用的工具,可以帮助开发人员更好地管理他们的应用程序,并提供更好的用户体验。

6.@PostMapping(出现在controller类中):通常在Spring Framework中使用,用于将HTTP POST请求映射到处理程序方法上。它是Spring MVC框架中@RequestMapping注解的一种特殊情况,用于限定HTTP请求的类型。使用@PostMapping注解时,处理程序方法将只处理HTTP POST请求,并且可以根据需要访问POST请求的正文。总的来说,它是一种方便的方式来处理Web应用程序中的表单提交和其他POST请求。

7.@GetMapping(出现在controller类中):它可以用于将HTTP GET请求映射到特定的处理程序方法上。它是Spring Framework中的一个注解,用于构建RESTful Web服务。通过这个注解,我们可以在Spring Boot应用程序中很容易地处理HTTP GET请求,并将其映射到正确的处理程序方法上。

8.@DeleteMapping(出现在controller类中):用于将HTTP DELETE请求映射到特定的处理程序方法上。它通常与Spring MVC框架一起使用,用于创建RESTful Web服务。使用该注解,开发人员可以轻松地将HTTP DELETE请求映射到处理程序方法,以实现删除资源或执行其他自定义操作。

9.@Resource(三层架构所用到的注解):用于标记需要注入的资源,如数据库连接、JMS 连接工厂等。它可以替代传统的 XML 配置文件,使得代码更加简洁和易于维护。同时,@Resource 还可以指定注入的资源的名称或者类型,提高了代码的灵活性和可读性。

10.@RequestBody(注解特殊的形参):通常用于Spring框架中的Web应用程序开发中,用于指定HTTP请求的请求体应该绑定到方法的哪个参数上。具体来说,当客户端发送请求时,请求体通常包含需要传递给服务器的数据,例如JSON、XML或文本数据等。通过使用@RequestBody注解,开发人员可以将请求体中的数据映射到Java对象中,并在方法中进行处理。这种方式非常灵活,可以方便地处理不同类型的请求体数据。

11.@PathVariable(注解特殊的形参):用于从URL中提取参数值并将其注入到方法参数中。它通常与@RequestMapping注解一起使用,用于处理RESTful风格的请求。虽然@RequestMapping注解可以处理URL路径中的参数,但是@PathVariable注解可以更方便地获取路径中的参数值,并将其作为方法的参数使用。这对于处理动态URL非常有用,可以让代码更加简洁和易于维护。

3.开始使用Springboot项目

使用mybaits连接数据库

在使用mybaits插件时,我们实现需要在创建项目时选择mybaits的相关依赖,这个在我上一个博客中讲到了,不了解的小伙伴可以点击我连接一下,那么这里就不再多说;另外还需要mysql-connector-j的依赖,我会将依赖放在如下代码块中:

<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <scope>runtime</scope>
</dependency>

完成后可以在我们项目中的pom.xml文件中查看:

接下来在我们在java目录下的resources文件下创建一个新的文件:
新文件名可以随便取,但是得以.yml结尾就行,我这里就叫:application.yml

可能就有人有疑问了,什么是yml文件呢?来看看AI的解答:
.yml文件是一种文本文件,通常用于存储和传输数据。它是一种轻量级的数据交换格式,常用于配置文件和数据序列化。.yml文件采用类似于XML的键值对格式,但语法更加简洁易读。许多软件和框架都使用.yml文件来配置应用程序的行为和属性。

接下来我们来配置连接数据库的相关信息:
在我们的application.yml中配置如下信息:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql:///【你的数据库名称】?serverTimezone=GMT%2b8
    username: 【你的数据库账号】
    password: 【你的数据库密码】

如此,我们便连接上我们的数据库了。

创建三层架构的相关类

三层架构的概念也已经在我的上篇博客中介绍了,不了解的小伙伴可以点击我连接一下,那么这里便不再过多讲述;
依次创建mapper类,service类,controller类和entity类(实体类),注意:创建包时一定要在我们的主包目录下!!!

创建完的样子~~


因为,我还没有创建相关演示数据库,所以创建数据库就当成额外选读内容咯。

创建相关数据库(选读)

使用我们的数据库图示化工具,创建一个sys_user表,表的属性为id(主键,自增)、user_name、nickname即可,我把源码放在下面:

CREATE TABLE `sys_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_name` varchar(255) DEFAULT NULL COMMENT '用户昵称',
  `nickname` varchar(255) DEFAULT NULL COMMENT '用户职业',
  PRIMARY KEY (`id`)
);

之后,我们插入三条数据:

之后,我们开始创建三层架构,首先是在entity类里面创建我们的User类,User类的相关创建如下:

@Data  // lombok里面的标签,作用是为该类的属性添加get和set方法
@TableName("sys_user")  // mybatis-plus依赖,作用是让该表对应数据库中的sys_user表
public class User {
    @TableId(type = IdType.AUTO) // mybatis-plus依赖,作用是让IDea识别该表的主键,该主键类型为自增
    private Integer id;

    private String userName;

    private String Nickname;
}

如果你没有mybaits-plus的依赖的话,别急,我这儿有:(将其加入到你的pom.xml文件中)

 <dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.5.1</version>
</dependency>

其次是Mapper接口,其相关构建如下:
里面的sql语句皆为静态sql语句,动态sql语句这里先不讲解,等下篇博客再说~~

@Mapper
public interface UserMapper {
    //查询所有
    @Select("select * from sys_user")
    List<User> findAll();

    //增加
    @Insert("insert into sys_user(user_name,nickname) values(#{userName},#{nickName})")
    int insertById(User user);

    //修改
    @Update("update sys_user set nickname = #{nickname} where id = #{id}")
    int updateById(User user);

    @Delete("delete from sys_user where id = #{id}")
    Integer deleteById(@Param("id") Integer id);
}

之后是我们的Service类,其相关构建如下:

@Service
public class UserService{
    @Resource
    private UserMapper userMapper;

    // 插入用户的方法
    public int insert(User user){
       return userMapper.insertById(user);
    }

    // 更新用户的方法
    public int update(User user){
        return userMapper.updateById(user);
    }

    //删除用户的方法
    public int delete(Integer id){
        return userMapper.deleteById(id);
    }
}

最后,是我们的controller类,也是实现前后端交互的接口所在的类,其相关构建如下:

@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;

    @Resource
    private UserMapper userMapper;

    // 查询的接口
    @GetMapping
    public List<User> index(){
        List<User> all = userMapper.findAll();

        return all;
    }

    // 插入的接口
    @PostMapping("/insert")
    public int insert(@RequestBody User user){
        return userService.insert(user);
    }

    // 删除的接口
    @DeleteMapping("/delete/{id}")
    public int delete(@PathVariable("id") Integer id){
        return userService.delete(id);
    }

    // 更新的接口
    @GetMapping("/update")
    public int update(@RequestBody User user){
        return userService.update(user);
    }
}

4.对代码进行验证

写完我们的三层架构后,我们就可以启动项目对我们的代码进行验证了:
找到我们项目的启动口,点击:

当控制台出现如下情况,说明我们项目已经成功启动:

  1. 查询全部时,PostMan的操作及结果:

  1. 插入时,PostMan的操作及数据库结果(插入的数据为:李四,清洁工):

  1. 删除时,PostMan的操作及数据库的结果(删除的id为4):


  1. 更新时,PostMan的操作和数据库的结果(将id为2的nickname改为科长):

从各种结果可以看到,我们的接口还是非常成功的,对于比较复杂的接口的封装,我们就可以着手去写了。

至此,我们的简单与前台交互就到这里,希望本篇博客可以对你有所帮助!!


总结

Springboot是一款优秀的Java开发框架,可以帮助开发者快速构建高效的后台应用程序。在与前台进行交互方面,Springboot提供了多种方式,例如使用RESTful API进行数据交互、使用Thymeleaf模板引擎进行页面渲染等等。通过这些方式,开发者可以轻松地实现前后端交互,提高应用程序的用户体验。同时,Springboot还提供了丰富的文档和社区支持,可以帮助开发者快速解决问题,提高开发效率。总之,Springboot是一款非常优秀的开发框架,可以帮助开发者快速实现应用程序的功能,提高开发效率和用户体验。

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 出现这种情况可能有以下几种原因: 1. 数据添加成功,但未正确返回到前台页面。可能是因为在添加数据后,没有进行页面的跳转或者刷新操作。可以在添加数据成功后,跳转到展示数据的页面,并进行页面的刷新操作,以确保数据能正确显示。 2. 数据添加成功,但前台页面的展示逻辑有误。可能是因为前台页面的展示逻辑没有正确地将添加的数据进行展示。需要检查前台页面的展示代码,确保能正确地获取并展示新添加的数据。 3. 数据添加成功,但前台页面的数据显示权重冲突。可能是因为前台页面中的其他元素(如缓存、其他数据加载等)的权重比添加的数据显示权重更高,导致新添加的数据无法正常显示。可以尝试调整数据显示的权重,确保新添加的数据能正确显示在前台页面上。 4. 数据添加成功,但前台页面的数据展示条件过滤。可能是因为前台页面设置了特定条件的数据展示,而新添加的数据不符合这些条件,导致无法显示。需要检查前台页面的数据展示条件,确保新添加的数据符合展示条件。 以上是可能导致前台页面不显示新添加数据的几种情况,具体原因需要根据具体项目的逻辑来分析和解决。 ### 回答2: 当后台成功添加数据但前台不显示时,可能是以下几个原因造成的: 1. 数据未刷新:可能是因为前台页面没有及时刷新导致数据不显示。可以尝试手动刷新页面或者检查前台代码中是否有定时刷新的逻辑。 2. 前后台数据交互问题:可能是前后台数据交互存在问题,导致添加的数据没有正确传递给前台页面。可以通过调试后台接口和前台代码,查看数据的传递和处理是否正常。 3. 前台页面显示逻辑问题:可能是前台页面的显示逻辑存在问题,导致数据无法正确展示。可以仔细检查前台代码中是否有对应的数据展示逻辑,并确认展示的位置和方式是否正确。 4. 数据库查询问题:可能是在添加数据后,前台页面没有正确查询数据库获取最新的数据导致不显示。可以通过检查数据库查询逻辑,确认是否正确查询并返回最新的数据。 针对这些情况,我们可以逐一排查解决。可以通过调试代码、查看日志、检查数据库查询等方式来确定具体原因并解决问题。 ### 回答3: 可能的原因是前后端数据传输出现问题,或者前端页面的展示逻辑出现错误。具体解决方法如下: 1. 检查后台代码,确认数据确实成功添加到数据库中。可以通过在后台代码中添加日志输出,或者直接在数据库中查询确认数据是否正确添加。 2. 检查前后端的数据传输是否正常。可以通过查看网络请求是否成功返回数据,以及前端是否正确接收到数据。 3. 检查前端页面的展示逻辑是否正确。可能是因为前端展示代码中逻辑错误导致数据无法正确显示。可以通过查看前端页面的代码,确认数据是否正确渲染到页面上。 4. 确认前后端数据传输格式是否一致。可能是因为前后端约定的数据格式不一致导致数据无法正确显示。可以通过查看接口文档或者实际数据格式确认数据传输格式是否正确。 5. 检查前端页面是否有缓存问题。有时候前端页面可能会缓存数据,导致新添加的数据无法及时显示。可以尝试清除前端页面缓存或者强制刷新页面。 如果以上解决方法都没有解决问题,可以检查是否有其他错误导致数据无法正确显示,或者查看相关日志以获取更多信息,以便更好地定位并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值