慕课网模抖音小程序 springboot笔记

小程序后台

1.后台结构:

如图1所示为传统的单项目工程,将所有层都写在一个工程中,项目较大不利用后期修改,适用于小型项目。

慕课网模抖音小程序 springboot笔记_第1张图片 图1 单项目工程

本小程序后台采用maven搭建分成的聚合工程,如图2所示,子工程是作为module存在的。 

慕课网模抖音小程序 springboot笔记_第2张图片 图 2 聚合工程

 

 图3是视频后台搭建的模块图

慕课网模抖音小程序 springboot笔记_第3张图片 图3

 

2.Swagger2的使用 

swagger介绍,可以帮助我们更好地管理接口,接口以网站形式进行展示,方便前端人员查看,有利于接口对接,简化开发。

使用swagger2构建restful接口测试步骤:

1.在common工程下引入依赖

        
        
            io.springfox
            springfox-swagger2
            2.4.0
        
        
            io.springfox
            springfox-swagger-ui
            2.4.0
        

2.在application同级文件下配置Swagger2.java文件

@Configuration
@EnableSwagger2
public class Swagger2 {

	/**
	 * @Description:swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
	 */
	@Bean
	public Docket createRestApi() {

		
		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
				.apis(RequestHandlerSelectors.basePackage("com.jxw.controller"))
				.paths(PathSelectors.any()).build();
	}

	/**
	 * @Description: 构建 api文档的信息
	 */
	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				// 设置页面标题
				.title("使用swagger2构建短视频后端api接口文档")
				// 设置联系人
				.contact(new Contact("阿休短视频", "---", "[email protected]"))
				// 描述
				.description("欢迎访问短视频接口文档,这里是描述信息")
				// 定义版本号
				.version("1.0").build();
	}

}

3.在controller中配置

@RestController //与小程序接口 都是返回消息
@Api(value="用户注册登录的接口", tags= {"注册和登录的controller"})
public class RegistLoginController {

@RequestMapping("regist")
    @ApiOperation(value="用户注册", notes="用户注册的接口")
    public String regist(@RequestBody Users user) throws Exception { //一个json对象
        
    ...
}

4.在响应pojo类中配置 

@ApiModel(value="用户对象", description="这是用户对象")
public class Users {
	@ApiModelProperty(hidden=true)
	@Id
    private String id;

    /**
     * 用户名
     */
    @ApiModelProperty(value="用户名", name="username", example="imoocuser", required=true)
    private String username;

    /**
     * 密码
     */
    @ApiModelProperty(value="密码", name="password", example="123456", required=true)
    private String password;
...
}

5.运行

访问网址:

http://localhost:8081/swagger-ui.html#!/

慕课网模抖音小程序 springboot笔记_第4张图片

 

可看到之前设置的展示信息,与接口列表,该网站还可以使用示例参数直接调试非常方便。

3 登录注册功能实现

后台端是简单的几层实现,小程序端登录注册接口实现如下:

wx.request小程序所有与后台的交互,全通过这个API,下面是注册接口,登录接口类似:

 doRegist:function(e){ //e可以获取到form对象
    var formObject = e.detail.value;
    var username= formObject.username;
    var password = formObject.password;
    // console.log(formObject);
    if(username.length==0 || password.length==0){
      wx.showToast({
        title: '用户名或密码不能为空',
        icon:'none',
        duration:2000
      })
    }else{
      var serverUrl = app.serverUrl;
      wx.showLoading({
        title: '注册中...',
      })
      wx.request({
        url: serverUrl+"/regist",
        method:"POST",
        data: {
          username: username,
          password: password
        },
        header: {
          'content-type': 'application/json' // 默认值
        },
        success:function(res){
          wx.hideLoading();
          console.log(res);
          var status = res.data.status;
          console.log(status);
          if(status==200){
            wx.showToast({
              title:"注册成功,跳转至登录界面",
              icon:"success",
              duration: 3000,
              success: function () {
                wx.redirectTo({
                  url: '../userLogin/login'
                });
              }
            }),
              app.userInfo=res.data.data;   // 给全局赋予这个变量
          }else if(status==500){
            wx.showToast({
              title:res.data.msg,
              duration: 3000
            })
            
          }

        }
      })
    }
  }

注:

(1)在小程序与后台交互时,后端会因为网络情况等没有马上回应,为了使得用户体验更好,在小程序发送请求之前添加一个加载框,成功之后,手动关闭:

      wx.showLoading({
        title: '注册中...',
      })


      wx.hideLoading();

如加载框如下图所示: 更多具体用法可以查看 小程序界面API

慕课网模抖音小程序 springboot笔记_第5张图片

 

(2)后台通信的URL需要通过之前提到的ngrok穿透暴露出来。

慕课网模抖音小程序 springboot笔记_第6张图片

 并且小程序中要进行相应设置,将不校验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书勾选掉

慕课网模抖音小程序 springboot笔记_第7张图片

4.session 

(1)有状态会话与无状态会话基本概念

有状态会话

慕课网模抖音小程序 springboot笔记_第8张图片

当用户不访问时,会话关闭 

无状态会话

慕课网模抖音小程序 springboot笔记_第9张图片

APP用户一次连接之后就断开,无法继续保持会话,这时需要在后台做一些操作维护用户关系。 

这时可以利用Redis-session来建立手机端用户和Web系统之间的关系。

(2)Redis-session

慕课网模抖音小程序 springboot笔记_第10张图片

当手机用户访问时,建立一个redis-session,用json形式记录用户信息,也可以设置有效时间,存到缓存中

Redis-session的好处

用户信息存储到redis缓存中,形成无状态会话

便于扩展,当单体应用该扩展成集群会相当方便

便于权限验证(拦截器)

4.0.2 64位

(3)Redix使用

安装单机版Redis以及RedisDesktopManager工具连接Redix教程

https://blog.csdn.net/qq_41986312/article/details/90903197

引入相关的依赖

        
        
            org.springframework.boot
            spring-boot-starter-data-redis
        
        
            redis.clients
            jedis
            2.9.0
        
        
            org.springframework.data
            spring-data-redis
            1.8.7.RELEASE
        

在application.properties中进行一些基本配置

注意springboot版本不一样的配置文件会有一些区别,下面是2.0的配置

https://blog.csdn.net/qq_33326449/article/details/80457571

#Redis数据库索引(默认为0)
spring.redis.database=1
#Redis服务器地址
spring.redis.host=192.168.137.55
spring.redis.port=6379
#服务器连接密码 (默认为空)
spring.redis.password=123456
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.jedis.pool.max-active=1000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.jedis.pool.max-wait=-1ms
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle=10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle=2
# 连接超时时间(毫秒)
spring.redis.timeout=1000ms

连接超时时间不能设成0ms具体还不知道为啥

然后创建redisTemplate的操作实现类

1.Redis版本要和spring一致


    org.springframework.data
    spring-data-redis
    2.1.5.RELEASE

5 ffmpeg介绍 视频和音频合并 视音频处理工具

官网http://ffmpeg.org/

由于小程序上传视频 success的回调函数没有返回封面的临时路径,所以要通过ffmpeg来截取视频图片

6 面向数据库和网页的两种pojo

当传递到页面显示的东西比pojo类更多时,可以新定义一个vo的pojo,此时不用和数据库交互,为浏览器显示提供服务

7 自定义mapper, 当通用mapper提供的基础方法不够用时,

自定义mapper来提供服务。

更改type 新增一些与数据库的映射字段

慕课网模抖音小程序 springboot笔记_第11张图片

下图id是 mapper.java文件中定义的函数名, resultMap是上面定义的返回类型

慕课网模抖音小程序 springboot笔记_第12张图片

8.pagehepler的使用  分页工具

(1)原理

慕课网模抖音小程序 springboot笔记_第13张图片

向数据库发送查询请求时,被拦截,添加分页的语句拼接,返回对应数据

(2)使用

慕课网模抖音小程序 springboot笔记_第14张图片

page返回一些基本参数,如一共有几页等

封装分页后的数据格式

public class PagedResult {
	
	private int page;			// 当前页数
	private int total;			// 总页数	
	private long records;		// 总记录数
	private List rows;		// 每行显示的内容
	
	public int getPage() {
		return page;
	}
	public void setPage(int page) {
		this.page = page;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public long getRecords() {
		return records;
	}
	public void setRecords(long records) {
		this.records = records;
	}
	public List getRows() {
		return rows;
	}
	public void setRows(List rows) {
		this.rows = rows;
	}

}

9 wsSearchView 搜索插件

你可能感兴趣的:(Spring,后台开发)