综合( 右侧选择分类 )
hangge

SpringBoot - @ControllerAdvice的使用详解3(请求参数预处理 @InitBinder)

我们知道无论是 Get 请求还是 Post 请求,Controller 这边都可以定义一个实体类来接收这些参数。而 @ControllerAdvice 结合 @InitBinder 还能实现请求参数预处理,即将表单中的数据绑定到实体类上时进行一些额外处理。三、请求参数预处理(搭配 @InitBinder)1,问题描述 (1)假设我们有如下两个实体类 User 和 Book:public class
185 人浏览
hangge

SpringBoot - @ControllerAdvice的使用详解2(添加全局数据 @ModelAttribute)

二、添加全局数据(搭配 @ModelAttribute)1,设置全局数据(1)@ControllerAdvice 是一个全局数据处理组件,因此也可以在 @ControllerAdvice 中配置全局数据,使用 @ModelAttribute 注释进行配置。(1)这里我们在全局配置中添加了两个方法:message 方法:返回一个 String。userInfo 方法:返回一个 map。(2)这两个方
136 人浏览
hangge

SpringBoot - @ControllerAdvice的使用详解1(全局异常处理 @ExceptionHandler)

顾名思义,@ControllerAdvice 就是 @Controller 的增强版。@ControllerAdvice 主要用来处理全局数据,一般搭配 @ExceptionHandler、@ModelAttribute、@InitBinder 使用。下面分别进行介绍。一、全局异常处理(搭配 @ExceptionHandler)1,基本用法(1)@ControllerAdvice 最常见的使用场
135 人浏览
hangge

SpringBoot - 实现文件上传2(多文件上传、常用上传参数配置)

在前文中我介绍了 Spring Boot 项目如何实现单文件上传(点击查看),而多文件上传逻辑和单文件上传基本一致,下面通过样例进行演示。 二、多文件上传1,代码编写(1)首先在 static 目录中创建一个 upload.html 文件,内容如下: <!DOCTYPE html> <html lang="en"> <head> <meta c
148 人浏览
hangge

SpringBoot - 实现文件上传1(单文件上传、常用上传参数配置)

Spring Boot 对文件上传做了简化,基本做到了零配置,我们只需要在项目中添加 spring-boot-starter-web 依赖即可。一、单文件上传1,代码编写(1)首先在 static 目录中创建一个 upload.html 文件,内容如下:<!DOCTYPE html> <html lang="en"> <head> <meta
154 人浏览
hgweb

CSS - 项目常用的通用样式汇总3(网格布局框架:grd.css)

三、网格布局框架1,grd.css 介绍(1)Grd 是一款基于 Flexbox 的 CSS 网格系统框架。通过这个 CSS 网格框架,我们可以在页面中进行各种形式的网格布局。它默认采用和 Bootstrap 相同的 12 列布局。(2)Grd 是轻量级框架,代码如下:注意:我这里对其原始代码进行了改进,在原有的横向布局基础上,增加了纵向布局(column)的样式。.Grid { display:
103 人浏览
hgphp

Laravel - MySQL数据库的使用详解1(安装配置、基本用法)

一、数据库配置 (1)打开 config 文件夹下的 database.php 文件,修改 mysql 部分的连接配置。 'mysql' => [ 'driver' => 'mysql', //数据库的类型 'host' => env('DB_HOST', '127.0.0.1'), //数据库的位置 'port
195 人浏览
hgphp

Laravel - MySQL数据库的使用详解9(Eloquent ORM用法6:事件、订阅、观察者)

一、事件的监听与响应1,基本介绍(1)Eloquent 模型可以在模型生命周期中的各个时间点触发相应的事件: retrieved:从数据库中获取已存在模型时会触发该事件。 creating、created:当一个新模型被首次保存的时候,这两个事件会被触发。 updating、updated:当一个模型已经在数据库中存在并调用 save 方法,这两个事件会被触发。 saving、
229 人浏览
hgweb

Vue.js - 元素展开、收起动画效果组件(附:二级菜单的展开、收缩动画效果)

子菜单的展开、收缩功能在许多系统上都很常见,如果想要在打开收起时带有动画效果,过去常常会通过 jQuery 实现。而在 Vue 项目中,我们可以单独封装一个动画组件,方便使用。 1,效果图 点击一级菜单时,子菜单会从上往下逐渐展开。 再次点击一级菜单,子菜单又会从下往上收起。 2,创建动画组件(collapseTransition.js)组件代码如下,其内容是通
158 人浏览
hgphp

Laravel - MySQL数据库的使用详解8(Eloquent ORM用法5:删除数据)

一、直接删除1,通过模型对象删除要删除一个模型,调用模型实例上的delete方法即可。$user=User::find(6); $user->delete();2,通过查询删除模型我们也可以通过查询来同时删除多个模型。User::where('id','>',3)->delete();3,通过主键删除模型如果我们知道模型的主键的话,可以使用des
211 人浏览
hgphp

Laravel - MySQL数据库的使用详解7(Eloquent ORM用法4:插入、更新数据)

一、基本的数据插入操作1,插入数据(1)想要在数据库中插入新的记录,只需创建一个新的模型实例,设置模型的属性,然后调用save方法即可:注意:created_at和updated_at时间戳在save方法被调用时会自动被设置,如果我们数据表中没有定义这两个字段,可以在模型中将自动时间戳功能关闭。具体参考我之前的文章Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创
226 人浏览
hgphp

Laravel - MySQL数据库的使用详解6(Eloquent ORM用法3:模型关联、关联查询

一、一对一关联一对一关联是很基本的关联。假设一个User对应到一个Phone,phones表结构如下(通过user_id关联user表的主键):1,定义一对一关联(1)User模型中按下面这样定义关联,传到hasOne方法里的第一个参数是关联模型的类名称。<?php namespaceApp\Models; useIlluminate\Database\Eloquent\Mode
182 人浏览
hgphp

Laravel - MySQL数据库的使用详解5(Eloquent ORM用法2:基本查询、动态范围)

七、获取模型数据1,获取所有数据我们使用all()方法可以把全部记录取出来,也就是自动把对应的模型对象集合全部取出来。$users=User::all(); //foreach($usersas$user){ //echo$user->username; //}2,根据主键查询数据(1)使用find()方法可以根据主键取出一条数据。$user=User::find(2);(2)fi
182 人浏览
hgphp

Laravel - MySQL数据库的使用详解4(Eloquent ORM用法1:创建模型)

Laravel拥有两个功能强大的功能来执行数据库操作:Query Builder(查询构造器)和Eloquent ORM。在前面的文章中,我演示了Query Builder的使用,下面我来介绍下后者:Eloquent ORM。六、Eloquent ORM 基础1,什么是Eloquent ORM? Laravel内置的Eloquent ORM提供了一个美观、简单的与数据库打交道的ActiveReco
189 人浏览
hgphp

Laravel - MySQL数据库的使用详解3(Query Builder用法2:新增、修改、删除)

五、新增、修改、删除操作 在前文中我介绍了如何使用Query Builder(查询构造器)进行数据查询,下面接着介绍如何使用它进行数据的增、删、改操作。同样假设我们有如下用户表(user):1,新增操作(1)插入单条纪录DB::table('user')->insert( [ 'username'=>'guest', 'p
181 人浏览
hgphp

Laravel - MySQL数据库的使用详解2(Query Builder用法1:查询操作)

Laravel拥有两个强大的功能来执行数据库操作:Query Builder(查询构造器)和Eloquent ORM。在前面的文章中,我们都是通过Query Builder使用原生的SQL语句来操作数据库。其实Query Builder还提供了许多强大且易用的交互方式,下面通过样例进行演示。三、Query Builder 介绍(1)Query Builder为执行数据库查询提供了一个干净简单的接口
183 人浏览
SuperBig

Android Service详解(八)---前台服务详解

这是第八篇文章主要讲的是如何实现一个前台服务回顾可以到第一篇文章从头了解Service:Android Service详解系列1,Android Service详解(一)---概述4,Android Service详解(四)---绑定服务BoundService详解之扩展Binder类7,Android Service详解(七)---绑定服务BoundService详解之Messenger双向通信
280 人浏览
SuperBig

Android Service详解(七)---绑定服务BoundService详解之Messenger双向通信的实现

这是第七篇文章主要讲的是BoundService中用Messenger实现IPC。前三篇文章对扩展Binder类和AIDL进行了说明,绑定服务一般通过AIDL和Messenger来实现IPC一、概述Messenger实现IPC通信,底层也是使用了AIDL方式。和AIDL方式不同的是, Messenger方式是利用Handler形式处理,因此,它是线程安全的,这也表示它不支持并发处理;而AIDL方式
216 人浏览
SuperBig

Android Service详解(六)---绑定服务BoundService详解之AIDL的自定义属性使用

这是第六篇文章主要讲的是BoundService中用AIDL实现IPC,自定义属性的使用,上篇博客已经说明了AIDL应该如何使用,但是如果想传入一个自定义的类的时候怎么办呢?那么这篇博客将对这种情况进行详细描述废话不多说了,直接上步骤,前期的步骤上篇博客已经说明了,这篇是对上篇博客的扩展1.新建一AIDL文件,并与你即将定义的类型名字相同,例如Person.aidl2.新建一个类Person.ja
248 人浏览
SuperBig

Android Service详解(五)---绑定服务BoundService详解之AIDL的使用

一、什么是AIDLAIDL(Android Interface Definition Language)安卓接口定义语言二、为什么使用AIDL呢?如果将Service变成远程Service的话,使用扩展的Binder进行通信会报错:这是由于在Bind Service按钮的点击事件里面我们会让MainActivity和MyService建立关联,但是目前MyService已经是一个远程Service
210 人浏览