智慧医院不良事件精细化管理平台
文章平均质量分 50
项目实训
par_ser
这个作者很懒,什么都没留下…
展开
-
【项目实训】微信公众号模板消息推送
首先,需要先获得一个模板如果不是测试号,那么需要申请,如果是测试号,那么简单地发请求即可获取模板。为了简化开发,我们引入一个第三方的微信开发的工具包代码原创 2022-06-11 21:18:42 · 329 阅读 · 1 评论 -
【项目实训】微信公众号获取用户openid
首先,为了方便公众号开发测试,可以申请测试号,地址如下微信公众平台向指定用户推送消息,通常需要他的openId,要获取用户的openId,可以通过微信公众号的网页授权回调(搭配一个用户绑定页面,可以将微信公众号用户与我们自己的系统的用户建立联系)上面是微信开发文档的说明,可以看到如果我们仅仅想做用户绑定,然后推送模板消息的话,那么scope只需要为snsapi_base...原创 2022-06-11 21:03:57 · 838 阅读 · 1 评论 -
【项目实训】Spring Security授权
授权是web应用常见的需求,我们需要针对不同的用户,根据他们不同的权限,放行相应的接口。在SpringSecurity中,会使用默认的FilterSecurityInterceptor来进行权限校验。在FilterSecurityInterceptor中会从SecurityContextHolder获取其中的Authentication,然后获取其中的权限信息。当前用户是否拥有访问当前资源所需的权限。因此,在应用spring security的项目中,我们需要将权限信息存入Authentication。sp原创 2022-06-11 20:40:11 · 396 阅读 · 0 评论 -
【项目实训】SpringSecurity认证
Spring Security是Spring体系下的一个安全框架核心功能是认证和授权认证创建类实现UserDetailsService接口,重写其中的方法。方法返回的类型为UserDetails,故我们自己创建一个类来实现UserDetails接口此外,spring security提供了多种加密方式(PasswordEncoder),只需在配置类(spring security要求要extends WebSecurityConfigurerAdapter)将PasswordEncoder注原创 2022-06-11 20:21:31 · 132 阅读 · 0 评论 -
【项目实训】jwt
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.上述是jwt的官网的介绍,简单来说,使用jwt,可以安全地传输信息,jwt可以被验证。在我们的系统里,jwt主要用于授权。JWT由三部分组成,分别是标头、有效负载、签名算法,中间使用点进行分隔。谈起jwt,我们经常会跟传统的session方案做比较,jwt的一个显而易见的优势是无原创 2022-06-06 00:18:27 · 168 阅读 · 0 评论 -
【项目实训】校验注解
在web项目中常常要做参数校验,如果把参数校验都和业务代码混杂在一起,会使代码显得臃肿,降低代码的可读性。参数校验是一个这么普遍的需求,于是JCP组织定义了一个标准(JSR303)来规范化这个任务操作,那就是Java Validation API。但没有提供实现,而是对这个规范的实现,并增加了校验注解如、等。是对的二次封装,用于支持参数自动校验。JSR303支持的校验注解如下: 提供的扩展注解如下: 上述两种皆可 通常、请求会使用传递参数,在controller层我们用对象接收参数。那么只要该对原创 2022-06-05 23:26:14 · 581 阅读 · 0 评论 -
【项目实训】AOP日志
我们知道,AOP是Spring Framework的两大特性之一,AOP通俗地讲就是可以实现对方法的增强,并且是以代码侵入性低的方式。其底层实现基于动态代理,如果代理对象没有实现某个接口,那么会用jdk代理,如果实现了某个接口,就用CGlibAOP的一个常见使用场景就是日志代码实现AOP有多种方式,这里我们用最常用的一种,即基于注解的方式定义注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Docume原创 2022-06-05 00:09:24 · 217 阅读 · 0 评论 -
【项目实训】Druid
Druid号称是Java语言中最好的数据库连接池Druid支持所有JDBC兼容的数据库,相比其他的数据库连接池,它针对oracle,mysql等还做了特殊优化。(如针对Oracle的PSCache优化了内存占用)此外还支持监控统计功能,能监控SQL的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈信息,可以清楚知道连接池和SQL的工作情况,能够详细统计SQL的执行性能,方便分析数据库的访问性能。配置(基于springboot)引入依赖<depend原创 2022-05-15 01:24:05 · 99 阅读 · 0 评论 -
【项目实训】Swagger2
当前,前后端分离已是主流,接口文档的编写就显得尤为重要了但对后端来说,写文档实在是一种巨大的心智负担(注释都不写,写啥文档:)自己手动写文档的方式不仅是初期写的时候很麻烦,而且后续维护也会很大困难(试想你后端接口改了个参数,但接口文档没及时更新,估计前端已经口吐芬芳了),更别说手动写的方式还很容易写错,实在是吃力不讨好。于是swagger横空出世Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RES原创 2022-05-15 00:55:26 · 142 阅读 · 0 评论 -
【项目实训】MybatisPlus
项目的dao层我用了MybatisPlus,作为一个mybatis的增强框架,使用上我们既免去了使用mybatis时对简单的单表操作还要写sql的繁琐,同时又兼顾了灵活性(你依然可以按照mybatis那种方式去写较复杂的联表sql等 PS:现在实践上也是建议尽量避免出现关联查询,对关联查询拆为多个单表查询,可以有很多好处,如利于代码复用,提升查询性能,利于扩展维护等)mybatis plus的官网介绍:MyBatis-Plus(opens new window)(简称 MP)是一个MyBat..原创 2022-05-15 00:24:18 · 412 阅读 · 0 评论 -
【项目实训】Bean拷贝工具类
我们知道在MVC开发过程中,各个层之间往往有不同的对象在函数调用中传递,而这些对象虽然类型不同,但往往是有很多相同的属性,典型的比如数据库能查到很多数据,但在服务层我们需要用的只是其中一部分,或者我们希望给用户展示/暴露的只是一部分,那么在这种场景下,我们就需要bean拷贝工具类(当然你也可以直接写get,set,这样性能也很好,但却给开发与维护带来了许多不便)。主流的bean拷贝实现大致有Apache BeanUtils ,SpringBeanUtils,cglibBeanCopier,Huto...原创 2022-05-14 23:43:53 · 623 阅读 · 0 评论 -
【项目实训】统一异常处理
在上一篇文章中,我们使用了统一响应格式,这保证了我们在经过正常的控制器处理流程后,都能返回统一的数据格式,这为开发带来了便利。但这还不够,一个web程序几乎不可避免地要处理各种异常,最基本的,比如数据校验。在发生了异常后,我们希望response数据响应格式依然不变。为此,我们使用spring提供的@ControllerAdvice 配合 @ExceptionHandler 实现全局异常处理(当然由于我们统一返回的数据都是json,所以直接用@RestControllerAdvice即可)代码@原创 2022-05-14 01:02:43 · 125 阅读 · 0 评论 -
【项目实训】统一响应格式
前后端分离统一响应格式在前后端分离项目中,后端返回的数据都是json格式此外,我定义了统一的消息响应体使得我们项目的三个前端(小程序,App,PCweb)都有较为统一的处理逻辑,并且在调试过程或生产环境中,发生特定错误,也有利于我们定位错误(利用状态码等)代码实现 @ApiModelProperty("状态码") private Integer code; @ApiModelProperty("消息") private String msg; @原创 2022-04-23 16:40:25 · 472 阅读 · 0 评论