Web应用开发一课一得

目录

一、项目背景

本项目是采用前后端项目架构实现的“学生课程习题集”系统。主要聚焦系统后端实现,学生可从学习过程中学习系统架构、Spring Boot前后端分离开发、业务流程分析、各中技术的集成等相关知识。而且,由于使用的是前后端分离开发,所以学生也可以为后续项目扩展打好基础,进一步学习相关的技术完成知识储备。

二、项目需求分析

本项目开发的最终用户分别为教师、学生及系统管理人员,项目包含课程管理、习题管理、题目管理、用户管理、权限管理等模块,提供了基础的CRUD、课程注册及审批、题目下载及发布……等功能。仅确认开发项目需要的模块及功能。

三、项目技术

四、项目架构

课程项目实施主要侧重在后端(Back End)开发部分,如图所示:

五、前/后端分离架构

六、环境配置

需要准备的环境

JDK环境准备

Jpa

JavaPersistenceAPI,Java的持久层API,Jpa定义了一系列标准,让实体类和数据库中的表建立对应关系。Jpa的实现思想是ORM(ObjectRelationMapping),对象关系映射,用于在关系数据库和业务实体对象之间作映射。Jpa不是一个具体的框架,是一类框架的总称,持久层框架Hibernate是Jpa的一个具体实现,springdatajpa是在Hibernate基础之上的封装实现。springdatajpa的集成开发,可以规避sql语句的编写,侧重于java编码实现,另一个数据库层框架mybatis则是比较专注sql语句。

Jpa配置

引入依赖

/pom.xml配置如下:

Spring data jpa提供注解

用户信息维护

1.新增用户

2.更新用户信息

3.根据ID获取用户信息

4.根据用户ID删除用户信息

5.获取用户信息

6.分页查询用户信息列表

基础页面维护

1.新增基础页面

1)BaseUrlController

测试:

2.更新基础页面

1)BaseUrlController

2)IBaseUrlService

3)BaseUrlServiceImpl

4)BaseUrlMapper

5)BaseUrlMapper.xml

测试:

3.根据主页查询基础页面信息

1)BaseUrlController

2)IBaseUrlService

3)BaseUrlServiceImpl

4)BaseUrlMapper

5)BaseUrlMapper.xml

测试:

4.根据多条件查询基础页面信息

1)BaseUrlController

2)IBaseUrlService

3)BaseUrlServiceImpl

4)BaseUrlMapper

5)BaseUrlMapper.xml

测试:

什么是Swagger?

Swagger是一个规范和完整的文档框架。用于生成、描述、调用RESTful风格的Web服务文档,并实现可视化。其官网地址:API Documentation & Design Tools for Teams | Swagger

Spring Boot整合Swagger

在pom.xml进行依赖引入:

创建Swagger配置类:

修改Spring MVC默认路径匹配策略:

           由于Spring Boot 2.6以后会将Spring MVC默认路径匹配策略从AntPathMatcher更改为PathPatterParser,所以需要修改Spring MVC默认路径匹配策略,以免报出异常。

修改全局配置文件,添加以下内容:

在启动类添加Swagger3注解:

Swagger使用方法:

编译通过后,即可通过访问http://localhost:/swagger-ui/index.html#/hello-controller

Tips:注意自己的连接地址和端口号。

效果如图所示:

Swagger整合实现:

基于分工明确,高效研发原则,项目开发经常采用前后端分离方案。后端工程师只负责后端开发,但开发过程中,前端工程师经常需要从后端API提取数据,通过联调方式完成项目开发工作。前端工程师与后端工程师进行沟通和联调是,需要后端工程师提供完整的接口文档,此时后端工程师往往会通过一些技术手段,达到代码即文档的目的。Swagger就是可以实现接口数据可视化的工具。

学习小结

Web应用开发是一个热门且具有广阔就业前景的领域。随着互联网的普及和数字化转型的不断加速,越来越多的企业和组织需要建立和维护自己的网站和Web应用程序。

以下是对Web应用开发的总结:

需求增加:随着互联网的普及,企业和组织对于网站和Web应用的需求不断增加,这为Web应用开发人员提供了丰富的就业机会。

移动化需求:移动互联网的兴起使得移动应用开发成为一个热门领域。许多公司需要开发适用于不同平台的移动应用程序,这为具备移动应用开发技能的人员提供了更多的就业机会。

技术变化迅速:Web应用开发是一个快速变化的领域,新的技术和框架层出不穷。持续学习和更新自己的技能是非常重要的,以跟上行业的发展并保持竞争力。

多样化的就业机会:Web应用开发人员可以在各行各业中找到就业机会,如IT公司、互联网企业、金融机构、媒体公司等。同时,他们还可以选择自由职业,成为独立的Web开发者或接受委托项目。

创新机会:Web应用开发还为人们提供了参与创新项目的机会。通过开发新的Web应用程序,人们可以推动技术的进步和社会的发展,为用户带来全新的体验和价值。

总而言之,Web应用开发是一个充满机会和挑战的领域。拥有相关技能的人员有望在这个领域中找到稳定的就业机会,并有机会参与到创新的项目中。持续学习和积累经验是成为一名优秀的Web应用开发人员的关键。


一、项目背景

本项目是采用前后端项目架构实现的“学生课程习题集”系统。主要聚焦系统后端实现,学生可从学习过程中学习系统架构、Spring Boot前后端分离开发、业务流程分析、各中技术的集成等相关知识。而且,由于使用的是前后端分离开发,所以学生也可以为后续项目扩展打好基础,进一步学习相关的技术完成知识储备。

二、项目需求分析

本项目开发的最终用户分别为教师、学生及系统管理人员,项目包含课程管理、习题管理、题目管理、用户管理、权限管理等模块,提供了基础的CRUD、课程注册及审批、题目下载及发布……等功能。
仅确认开发项目需要的模块及功能。

三、项目技术

  • Spring Boot Web
  • Spring Boot DevTools
  • Spring Boot集成AlibabaDruid
  • Spring Data JPA
  • Spring Boot集成Redis
  • Spring Security
  • Spring Cache
  • CommonFileUpload

四、项目架构

课程项目实施主要侧重在后端(Back End)开发部分,如图所示:

五、前/后端分离架构

目前80%以上的应用项目开发均采用此种开发模式,因为此种开发模式退可以all in one,进可以完成微服务改造
一般中小型企业项目开发,从成本评估来说不会直接上微服务,所以一般会使用可进可退的前后端分离开发架构,既可以节约成本,也可以为后续项目扩展和改造奠定基础。

六、环境配置

需要准备的环境

  • Spring boot 2.x需要JDK 1.8.0_201(以上版本), Spring boot3.x需要JDK17
  • Apache Maven 3.6.0(以上版本)
  • IntelliJ IDEA Ultimate旗舰版

JDK环境准备

Java Development Kit,Oracle公司提供的Java开发工具包,包含了JRE(Java Runtime Environment)。建议使用JDK1.8版本

Jpa

JavaPersistenceAPI,Java的持久层API,Jpa定义了一系列标准,让实体类和数据库中的表建立
对应关系。Jpa的实现思想是ORM(ObjectRelationMapping),对象关系映射,用于在关系数据库和业务实体对象之间作映射。
Jpa不是一个具体的框架,是一类框架的总称,持久层框架Hibernate是Jpa的一个具体实现,
springdatajpa是在Hibernate基础之上的封装实现。
springdatajpa的集成开发,可以规避sql语句的编写,侧重于java编码实现,另一个数据库层框
架mybatis则是比较专注sql语句。

Jpa配置

spring:
  # 配置数据源
  datasource:
    driver-class-name:com.mysql.cj.jdbc.Driver
    url:jdbc:mysql://localhost:3306/dev_practices?characterEncoding=UTF-
8&userSSL=false&serverTimezone=UTC%2B8
    username:root
    password:123456
jpa:
    #JPA配置,hibernate.ddl-auto,完成自动建表规则的设置,并确认是否打印sql,便于console
查看定位
    hibernate:
      ddl-auto:update
    show-sql:true
server:
  port:8081

# 日志处理为展示mybatis运行sql语句
logging:
  level:
    cn.edu.lzzy:debug
  file:
    name:dev.log

引入依赖

/pom.xml配置如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.14</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--H2Database为开源嵌入式数据库引擎,提供便捷的web控制台用于操作和管理数据库内容,可以兼容
主流数据库-->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

Spring data jpa提供注解

用户信息维护

1.新增用户

2.更新用户信息

3.根据ID获取用户信息

4.根据用户ID删除用户信息

5.获取用户信息

6.分页查询用户信息列表

基础页面维护

1.新增基础页面

1)BaseUrlController

@PostMapping("/add")
public Result<?> addBaseUrl(@RequestBody  BaseUrl baseUrl){
    baseUrlService.save(baseUrl);
    return Result.success("新增基础页面成功");
}

测试:

2.更新基础页面

1)BaseUrlController

@PutMapping("/update")
public Result<?> updateBaseUrl(@RequestBody BaseUrl baseUrl) {

    int num;
    try {
        num = baseUrlService.myUpdateBaseUrl(baseUrl);

    } catch (Exception e) {
        return Result.fail("", "更新基础页面失败!" + e.toString());
    }

    return Result.success(num, "更新基础页面成功!");
}

2)IBaseUrlService

int myUpdateBaseUrl(BaseUrl baseUrl);  //这里的方法名称和mapper接口方法名称可以一样也可以不一样

3)BaseUrlServiceImpl

@Resource
BaseUrlMapper baseUrlMapper ;

@Override
public int myUpdateBaseUrl(BaseUrl baseUrl) {
    int num = baseUrlMapper.updateBaseUrl(baseUrl);
    return num;
}

4)BaseUrlMapper

int updateBaseUrl(BaseUrl baseUrl);

5)BaseUrlMapper.xml

<!--    sql语句字段不区分大小写,但是变量名区分-->
<update id="updateBaseUrl" parameterType="BaseUrl">
    update base_Url set description = #{description} where mainPage = #{mainPage}
</update>

测试:

{
    "mainPage":"http://127.0.0.1:8082/index.html",
    "rootlink":"myrootlink",
    "num": "1",
    "level":"1",
    "leaflink":"myleaflink",
    "description":"mydescription"
}

3.根据主页查询基础页面信息

1)BaseUrlController

/**
 * 根据主页查询基础页面信息
 * @param mainPage
 * @return 基础页面信息
 */
@GetMapping("getByMainPage")
public Result<List<BaseUrl>> qryBaseUrl(String mainPage){
    List<BaseUrl> urlList = null ;
    try{
        urlList = baseUrlService.mySelectByMainPage(mainPage);
    }catch (Exception e) {
        return Result.fail(urlList,"查询失败"+e.toString());

    }

    return Result.success(urlList, "查询基础页面成功!");
}

2)IBaseUrlService

List<BaseUrl> mySelectByMainPage(String mainPage);

3)BaseUrlServiceImpl

@Override
public List<BaseUrl> myselectByMainPage(String mainPage) {
    return baseUrlMapper.selectByMainPage(mainPage);
}

4)BaseUrlMapper

List<BaseUrl> selectByMainPage(String mainPage);

5)BaseUrlMapper.xml

<select id="selectByMainPage" resultType="BaseUrl">
    select * from base_url where mainPage = #{mainPage}
</select>

测试:

4.根据多条件查询基础页面信息

1)BaseUrlController

/**
 * 根据条件查询基础页面信息
 * @param baseUrl
 * @return
 */
@GetMapping("/get")
public Result<List<BaseUrl>> selectBaseUrl(@RequestBody BaseUrl baseUrl){
    List<BaseUrl> list = baseUrlService.mySelectBaseUrl(baseUrl);
    return Result.success(list,"查询成功!");
}

2)IBaseUrlService

List<BaseUrl> mySelectBaseUrl(BaseUrl baseUrl);

3)BaseUrlServiceImpl

@Override
public List<BaseUrl> selectBaseUrl(BaseUrl baseUrl) {
    return baseUrlMapper.mySelectBaseUrl(baseUrl);
}

4)BaseUrlMapper

List<BaseUrl> selectBaseUrl(BaseUrl baseUrl);

5)BaseUrlMapper.xml

<select id="selectBaseUrl" resultType="BaseUrl" parameterType="BaseUrl">
    select *
    from base_url
             where 1 = 1
    <if test="mainPage != null">and mainPage = #{mainPage}</if>
    <if test="rootlink != null">and rootlink = #{rootlink}</if>
    <if test="num != null">and num = #{num}</if>
    <if test="level != null">and level = #{level}</if>
    <if test="leaflink != null">and leaflink = #{leaflink}</if>
</select>

测试:

{
    "mainPage":"http://127.0.0.1:8082/index.html",
    // "rootlink":"https://www.example.com/page3",
    // "num":1,
    "level":4
    // "leaflink":"https://www.iana.org/domains/example"
}

什么是Swagger?

Swagger是一个规范和完整的文档框架。用于生成、描述、调用RESTful风格的Web服务文档,并实现可视化。其官网地址:​​​​​​​API Documentation & Design Tools for Teams | Swagger

Spring Boot整合Swagger

在pom.xml进行依赖引入:

创建Swagger配置类:

修改Spring MVC默认路径匹配策略:

           由于Spring Boot 2.6以后会将Spring MVC默认路径匹配策略从AntPathMatcher更改为PathPatterParser,所以需要修改Spring MVC默认路径匹配策略,以免报出异常。

修改全局配置文件,添加以下内容:

在启动类添加Swagger3注解:

Swagger使用方法:

编译通过后,即可通过访问http://localhost:<port>/swagger-ui/index.html#/hello-controller
Tips:注意自己的连接地址端口号。

效果如图所示:

Swagger整合实现:

基于分工明确,高效研发原则,项目开发经常采用前后端分离方案。后端工程师只负责后端开发,但开发过程中,前端工程师经常需要从后端API提取数据,通过联调方式完成项目开发工作。前端工程师与后端工程师进行沟通和联调是,需要后端工程师提供完整的接口文档,此时后端工程师往往会通过一些技术手段,达到代码即文档的目的。Swagger就是可以实现接口数据可视化的工具。

学习小结

Web应用开发是一个热门且具有广阔就业前景的领域。随着互联网的普及和数字化转型的不断加速,越来越多的企业和组织需要建立和维护自己的网站和Web应用程序。

以下是对Web应用开发的总结:
  1. 需求增加:随着互联网的普及,企业和组织对于网站和Web应用的需求不断增加,这为Web应用开发人员提供了丰富的就业机会。
  2. 移动化需求:移动互联网的兴起使得移动应用开发成为一个热门领域。许多公司需要开发适用于不同平台的移动应用程序,这为具备移动应用开发技能的人员提供了更多的就业机会。
  3. 技术变化迅速:Web应用开发是一个快速变化的领域,新的技术和框架层出不穷。持续学习和更新自己的技能是非常重要的,以跟上行业的发展并保持竞争力。
  4. 多样化的就业机会:Web应用开发人员可以在各行各业中找到就业机会,如IT公司、互联网企业、金融机构、媒体公司等。同时,他们还可以选择自由职业,成为独立的Web开发者或接受委托项目。
  5. 创新机会:Web应用开发还为人们提供了参与创新项目的机会。通过开发新的Web应用程序,人们可以推动技术的进步和社会的发展,为用户带来全新的体验和价值。

总而言之,Web应用开发是一个充满机会和挑战的领域。拥有相关技能的人员有望在这个领域中找到稳定的就业机会,并有机会参与到创新的项目中。持续学习和积累经验是成为一名优秀的Web应用开发人员的关键。

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值