handler

SpringMVC学习笔记(二)---什么是SpringMVC

醉酒当歌 提交于 2020-01-21 16:11:56
2. 什么是SpringMVC 2.1 概述 Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。 查看官方文档: https://docs.spring.io/spring/docs/5.2.0.RELEASE/spring-framework-reference/web.html#spring-web 我们为什么要学习SpringMVC呢? Spring MVC的特点: 轻量级,简单易学 高效 , 基于请求响应的MVC框架 与Spring兼容性好,无缝结合 约定优于配置 功能强大:RESTful、数据验证、格式化、本地化、主题等 简洁灵活 Spring的web框架围绕 DispatcherServlet [ 调度Servlet ] 设计。 DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁; 正因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等…所以我们要学习 .

【奇思妙想】如何给网关设计一款专属的权限控制【责任链设计模式】

谁都会走 提交于 2020-01-21 06:18:28
什么是责任链模式 客户端发出一个请求,链上的对象都有机会来处理这一请求,而客户端不需要知道谁是具体的处理对象。这样就实现了请求者和接受者之间的 解耦 ,并且在客户端可以实现动态的 组合职责链 。使编程更有灵活性。 关键点 1、有多个对象共同对一个任务进行处理。 2、这些对象使用链式存储结构,形成一个链,每个对象知道自己的下一个对象。 3、一个对象对任务进行处理,可以添加一些操作后将对象传递个下一个任务。也可以在此对象上结束任务的处理,并结束任务。 4、客户端负责组装链式结构,但是客户端不需要关心最终是谁来处理了任务。 责任链模式环境 1.抽象处理者(Handler)角色:定义出一个处理请求的接口 2.具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。 责任链模式优缺点 优点: 职责链模式的最主要功能就是:动态组合,请求者和接受者解耦。 请求者和接受者松散耦合:请求者不需要知道接受者,也不需要知道如何处理。每个职责对象只负责自己的职责范围,其他的交给后继者。各个组件间完全解耦。 动态组合职责:职责链模式会把功能分散到单独的职责对象中,然后在使用时动态的组合形成链,从而可以灵活的分配职责对象,也可以灵活的添加改变对象职责。 缺点: 产生很多细粒度的对象:因为功能处理都分散到了单独的职责对象中,每个对象功能单一

号外!号外!百度语音开源库更新了

烈酒焚心 提交于 2020-01-21 05:54:35
开源:ReactNative集成百度语音开源库, 在这篇文章中作者开源了一个ReactNative集成百度语音合成的组件库,今天通过查看Github上的关于开源react-native-baidu-vtts 的issues,有朋友提到了一个bug,并给出了具体报错 请问「java.lang.String com.wayne.baiduvoice.util.OfflineResource.getTextFilename()」为 null 是什么原因? 12-26 16:37:12.311 14862-14885/com.anlint.weightapp E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules Process: com.anlint.weightapp, PID: 14862 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.wayne.baiduvoice.util.OfflineResource.getTextFilename()' on a null object reference at com.wayne.baiduvoice.VoiceUtils.getParams

netty ByteBuf释放详解

。_饼干妹妹 提交于 2020-01-21 02:11:26
谁来负责Release?在Netty里,因为Handler链的存在,ByteBuf经常要传递到下一个Hanlder去而不复还,所以规则变成了谁是最后使用者,谁负责释放。另外,更要注意的是各种异常情况,ByteBuf没有成功传递到下一个Hanlder,还在自己地界里的话,一定要进行释放。根据谁最后谁负责原则,每个Handler对消息可能有三种处理方式 对原消息不做处理,调用 ctx.fireChannelRead(msg)把原消息往下传,那不用做什么释放。 将原消息转化为新的消息并调用 ctx.fireChannelRead(newMsg)往下传,那必须把原消息release掉。 如果已经不再调用ctx.fireChannelRead(msg)传递任何消息,那更要把原消息release掉。 假设每一个Handler都把消息往下传,Handler并也不知道谁是启动Netty时所设定的Handler链的最后一员,所以Netty在Handler链的最末补了一个TailHandler,如果此时消息仍然是ReferenceCounted类型就会被release掉。 要发送的消息由应用所创建,并调用 ctx.writeAndFlush(msg) 进入Handler链。在每个Handler中的处理类似InBound Message,最后消息会来到HeadHandler,再经过一轮复杂的调用

SpringBoot 拦截器

落爺英雄遲暮 提交于 2020-01-21 00:59:49
1.如果你想要保持Spring Boot 的一些默认MVC特征,同时又想自定义一些MVC配置(包括:拦截器,格式化器, 视图控制器、消息转换器 等等),你应该让一个类实现 WebMvcConfigurer ,并且添加 @Configuration 注解,但是 千万不要 加 @EnableWebMvc 注解。 2.如果你想要自定义 HandlerMapping 、 HandlerAdapter 、 ExceptionResolver 等组件,你可以创建一个 WebMvcRegistrationsAdapter 实例 来提供以上组件。 3.如果你想要完全自定义SpringMVC,不保留SpringBoot提供的一切特征,你可以自己定义类并且添加 @Configuration 注解和 @EnableWebMvc 注解。 4.总结: 通过实现 WebMvcConfigurer 并添加 @Configuration 注解来实现自定义部分SpringMvc配置。 5.案例: 首先我们定义一个拦截器: public class LoginInterceptor implements HandlerInterceptor { private Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); @Override

MySQL带参数的存储过程小例子

▼魔方 西西 提交于 2020-01-21 00:10:39
http://wwty.iteye.com/blog/698239 mysql存储过程也提供了对异常处理的功能:通过定义HANDLER来完成异常声明的实现 语法如下: DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement handler_type: CONTINUE | EXIT condition_value: SQLSTATE [VALUE] sqlstate_value | condition_name | SQLWARNING | NOT FOUND | SQLEXCEPTION | mysql_error_code Handlers类型: 1, EXIT: 发生错误时退出当前代码块(可能是子代码块或者main代码块) 2, CONTINUE: 发送错误时继续执行后续代码 condition_value: condition_value支持标准的SQLSTATE定义; SQLWARNING是对所有以01开头的SQLSTATE代码的速记 NOT FOUND是对所有以02开头的SQLSTATE代码的速记 SQLEXCEPTION是对所有没有被SQLWARNING或NOT FOUND捕获的SQLSTATE代码的速记 除了SQLSTATE值,MySQL错误代码也被支持 但是对于mysql而言

WebView的onReceivedSslError()方法

回眸只為那壹抹淺笑 提交于 2020-01-20 12:52:44
Android应用中WebView访问https SSL证书网页时,Google Play 总是报 WebView 的 onReceivedSslError 错误。为避免谷歌安全警告,要重写WebView的onReceivedSslError方法,此时要弹框提示用户,是否忽略SSL错误,继续访问网页。 @Override public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error{ final AlertDialog.Builder builder = new AlertDialog.Builder(WechatLoginActivity.this); builder.setMessage(R.string.notification_error_ssl_cert_invalid); builder.setPositiveButton("continue", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { handler.proceed(); } }); builder

如何利用Serilog的RequestLogging来精简ASP.NET Core的日志输出

我是研究僧i 提交于 2020-01-20 09:30:56
这是该系列的第一篇文章:在ASP.NET Core 3.0中使用Serilog.AspNetCore。 第1部分-使用 Serilog RequestLogging 来简化ASP.NET Core的日志输出(本篇文章) 第2部分-使用Serilog记录所选的端点名称[敬请期待] 第3部分-使用Serilog.AspNetCore记录MVC属性[敬请期待] 作者:依乐祝 译文地址: https://www.cnblogs.com/yilezhu/p/12215934.html 原文地址: https://andrewlock.net/using-serilog-aspnetcore-in-asp-net-core-3-reducing-log-verbosity/ 众所周知,ASP.NET Core的重要改变之一是把日志记录内置于框架中。这意味着您可以(如果需要)从自己的标准日志基础设施访问所有深层基础设施日志。缺点是有时您会收到 太多 的日志。 在这个简短的系列文章中,我将介绍如何使用 Serilog的ASP.NET Core请求日志记录功能 。在第一篇文章中,我将讲述如何将Serilog的 RequestLoggingMiddleware 添加到您的应用程序,以及它提供的好处。在后续文章中,我将描述如何进一步自定义行为。 我已经将这些帖子草拟了一段时间。从那时起,

Mr.Smile填坑记——安卓10 Q Google原生问题最近进任务的task消失的bug

主宰稳场 提交于 2020-01-20 02:22:35
问题: Android 10,打开最近任务中的一个应用, 双击返回键,紧接着点击菜单键 或者 快速依次点击返回键 Home键 菜单键 ,这个应用都会从最近任务消失掉,又是Google的坑啊 分析: 看过我之前文章的应该有印象,我的三部曲,反复复现问题,找规律,从中发现关键信息,带着问题看代码,验证问题。这次也不例外,本来测试报的问题是,偶现最近任务的应用消失,但是在我的观察之下,偶现的问题被我用两种不同的方法,必现了! 当我用红色的方式必现问题之后,我考虑的是双击返回键键的时候添加个 flag,点击菜单键的时候,判断两者之间的时间差,太短的话就不让弹出最近任务了,但是搞了半天,突然出现了 黄色的必现方法,于是果断放弃了这个想法。 接下来,我我仔细观察了现象,果然,又发现了有价值的现象,其实,该应用其有的时候并不会完全消失,只是有个消失的动画,但是再次进入最近任务列表的时候,他会排在第二个位置。 哦 ,搞了半天只是走了个动画啊!于是,我就搜了下执行动画的代码,最终定位到了这里。 alps/packages/apps/Launcher3/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java 解决: @Override public void onTaskRemoved(int

《JAVA与模式》之责任链模式

做~自己de王妃 提交于 2020-01-19 21:40:56
在阎宏博士的《JAVA与模式》一书中开头是这样描述责任链(Chain of Responsibility)模式的:    责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 从击鼓传花谈起   击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客依次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。   比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,由贾赦传给贾政,由贾政传给贾宝玉,又贾宝玉传给贾环,由贾环传回给贾母,如此往复,如下图所示。当鼓声停止时,手中有花的人就得执行酒令。   击鼓传花便是责任链模式的应用。责任链可能是一条直线、一个环链或者一个树结构的一部分。 责任链模式的结构   下面使用了一个责任链模式的最简单的实现。   责任链模式涉及到的角色如下所示:   ●   抽象处理者(Handler)角色: 定义出一个处理请求的接口。如果需要,接口可以定义