自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晏无心的博客

奋斗的程序猿

  • 博客(58)
  • 收藏
  • 关注

原创 springmvc5的四个HandlerAdapter

springmvc5中有四个非抽象的HandlerAdapter:1.SimpleServletHandlerAdapter2.SimpleControllerHandlerAdapter3.HttpRequestHandlerAdapter4.RequestMappingHandlerAdapterspringmvc通过HandlerMapping将请求URL...

2020-03-28 18:29:08 6966 1

原创 springmvc5的三个HandlerMapping

springmvc5里有三个非抽象类的HandlerMapping:1.SimpleUrlHandlerMapping2.BeanNameUrlHandlerMapping3.RequestMappingHandlerMapping(这个是最常用的)(在springmvc4里还有一个ControllerClassNameHandlerMapping,在springm...

2020-03-28 16:34:23 2108

原创 spirngmvc处理请求流程总结:DispatcherServlet

springmvc的请求入口是DispatcherServlet(需要在web.xml里进行配置)。一、DispatcherServlet初始化1.DispatcherServlet提供了两个构造方法:无参构造方法用于Servlet2.5或更早的环境;带参构造方法在Servlet3.0及以后的环境中会用到。2.DispatcherServlet在初始...

2020-03-28 12:57:52 825

原创 springmvc:View和ViewResolver解析

springmvc由HandlerAdapter执行具体的handler后,返回的是ModelAndView对象,如何映射到具体的视图,生成页面返回到浏览器,就需要ViewResolver和View来操作了。直接到DispatcherServlet里看源码:这里可以看到ViewResolver会对viewName进行解析,得到View对象。从类成员变量t...

2020-03-28 11:19:46 3779

原创 Springmvc HandlerAdapter解析

springmvc中HanlderMapping和HandlerAdapter一般是对应出现(并不是一一对应,一个HandlerAdapter可以匹配处理多个HandlerMapping,一个HandlerMapping应该也可以被多个HandlerAdapter处理,但具体配置时应该只是一个,配置多个没有意义,只会被order值小的HandlerAdapter处理)。—...

2020-03-28 11:07:55 1590

原创 springmvcHandlerMapping解析

Spingmvc中的HandlerMapping负责解析请求URL,对应到Handler进行处理(这里的Handler一般为Controller里的一个方法method,也可以为servlet或者Controller等)先来看一个http请求的入口DispatcherServlet:DispatcherServlet继承FrameworkServlet,Fr...

2020-03-28 10:52:00 2735

原创 springmvc跳转到静态资源

springmvc的入口是DispatcherServlet,在web.xml中的配置一般是拦截所有的请求,作为http请求访问的入口。在springvc.xml里做最简单的配置如下:在Controller里访问html:会发现页面404:原因是没有从HandlerMapping里找到对应的handler进行处理。DispatcherServlet拦截所有请...

2020-03-28 10:38:06 2895

原创 最简单的springmvc搭建

1.使用maven,在pom.xml里引入springmvc需要的包:这里只需要引入spring-webmvcjar包就好,maven会自动添加其他需要的依赖,spring-core、spring-beans等:2.配置web.xml:配置DispatcherServlet,作为springmvc的入口,拦截所有请求;在init-param配置conte...

2020-03-28 10:17:06 517

原创 mybatis-generator,最简单的配置使用

最近在整springboot和mybatis的整合,相比较spring data jpa,mybatis所有的sql都得自己写,在做一些基本的增删改查SQL时,会比较重复和繁琐。mybatis-generator可以简化这个步骤,基本的增删改查代码可以一键生成,便捷使用。mybatis-generator使用起来很简单,最好单独作为一个Maven工程,打成一个JAR使用。1.pom.x...

2020-03-11 15:57:49 302

原创 springboot整合mybatis最简单的方式

最近在折腾springboot整合mybatis,上一篇文章springboot配置dataSource无法从application.properties文件获取配置项值也是在整合的过程中出现的问题。其实上一篇文章的方式并不是最简单的整合方式,既然使用了springboot,就不应该在配置方面操心太多,不然就失去了使用springboot的意义。这篇文章来整理一下最简单的整合方式。ps...

2020-03-09 16:01:26 494

原创 springboot配置dataSource无法从application.properties文件获取配置项值

最近在弄springboot整合mybatis,遇到一个非常诡异的问题:1.新增一个BeanConfig用来配置dataSource等相关信息:/** * * @author Mars * */@Configurationpublic class BeanConfig { /** * * @return */ @Bean @ConfigurationP...

2020-03-01 19:58:09 6221

原创 Maven开启Debug模式

使用maven启动springboot,为了方便查找问题,需要打印更多的DEBUG日志,这个时候在maven启动命令后加上 -X 就可以了:spring-boot:run -X

2020-03-01 18:23:36 2728

原创 springboot初识---最简单的例子_晏无心_新浪博客

一、什么是springboot1.SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。2.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配。3.springboot使用“约定大于配置”的方式,提供了一系列框架的默认配置方式。4.作为一个整合平台,为第三方框架提供默认配置服务,第三方框架可以按...

2018-09-12 14:23:12 156

原创 dubbo注册中心之三:redis注册中心_晏无心_新浪博客

使用redis作为dubbo的注册中心,主要用到redis的两点功能:1.key-value的存储2.发布和订阅的消息机制来看具体的配置:两种配置方式,可以配置多台redis。再来看具体的例子:引入jar依赖连接redis服务器;设置key值,将服务提供者的地址赋值;发布服务提供者启动的消息。连接redis服务器;服务消费者启...

2018-09-04 09:16:16 476

原创 dubbo注册中心之二:zookeeper注册中心_晏无心_新浪博客

dubbo注册中心有多种实现方式,之前写过的multicast(组播)是一种比较简单的方式,zookeeper实现是另一种方式。前面花时间研究了一下zookeeper,了解了zookeeper的基本功能,再结合dubbo注册中心的需求,使用zookeeper来实现注册中心就很明了了。1.服务提供者启动时,连接zookeeper,并且在“/dubbo/com.foo.BarServ...

2018-08-10 13:39:06 126

原创 zooKeeper之配置管理简单例子_晏无心_新浪博客

集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。Zookeeper很容易实现这种集中式的配置管理。来看具体的例子:新增三个Client,模拟真实系统的应用。Client1作为配置管理应用:创建configznode,设置配置的默认值:...

2018-08-07 14:57:54 154

原创 dubbo注册中心之一:Multicast(组播)注册中心_晏无心_新浪博客

dubbo的注册中心可以有多种选择实现方式,这里来看的是Multicast(组播)的方式。一、dubbo注册中心是干什么的?个人理解dubbo注册中心就是用来发现服务提供方和服务消费方的。1.服务提供方启动后,主动发消息给注册中心,注册中心获取服务提供方的地址列表;2.服务消费方启动会,主动发消息给注册中心,订阅服务;3.注册中心将服务对应的服务提供方地址列表发送给服务消费方。...

2018-08-06 10:03:21 1090

原创 javafuture和Callable简单例子_晏无心_新浪博客

直接来看例子:实现Callable接口。实现call()方法,里面设置了三种场景:1.快速的返回;2.循环执行,或者耗时很长;3.执行出错,抛出异常。在main()方法里执行:查看最终运行结果:javafuture和callable实现的是半异步的方式,在新开线程进行执行后,主线程可以先去干其他的事情,这个时候,是异步的;一旦通过future.get(...

2018-07-31 14:39:47 181

原创 Reactor简单例子_晏无心_新浪博客

Reactor模式是把一个完整的IO操作分成几部分来进行,使用一个或多个Reactor来处理IO请求,对于具体的IO读写以及数据读取完成后的操作,分成更细粒度的模块,根据具体的需求和模块的耗时,来选择性使用单线程或是多线程或者线程池来完成整个IO操作。来看具体的例子:Reactor实现了Runnable接口,为多线程做准备(实际应用中未必要使用多线程,很多时候使用单线程);...

2018-07-27 09:00:13 255

原创 Reactor模式是什么

一、Reactor模式是什么反应器设计模式(Reactorpattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。二、什么场景下使用Reactor模式?对于高并发系统,常会使用Reac...

2018-07-26 09:22:21 16632 3

原创 Reactor模式是什么_晏无心_新浪博客

一、Reactor模式是什么反应器设计模式(Reactorpattern)是一种为处理并发服务请求,并将请求提交到一个或者多个服务处理程序的事件设计模式。当客户端请求抵达后,服务处理程序使用多路分配策略,由一个非阻塞的线程来接收所有的请求,然后派发这些请求至相关的工作线程进行处理。二、什么场景下使用Reactor模式?对于高并发系统,常会使用Reactor模式,其代...

2018-07-26 09:22:21 106

原创 同步非阻塞IO例子_晏无心_新浪博客

同步非阻塞IO是指在进行IO读写时,可以立即返回,不用阻塞等待read、write完全结束。java实现同步非阻塞IO需要使用JavaNIO技术。先来看server端:使用iavanio的ServerSocketChannel,设置serverChannel.configureBlocking(true);是为了方便测试,serverSocket阻塞的等待客户端的连接,连...

2018-07-20 15:24:44 280

原创 同步阻塞IO简单例子_晏无心_新浪博客

同步阻塞IO是最基本的IO操作。直接来看例子。先看Server端:启动一个ServerSocket等待接收Client端的连接,接收到消息后再向客户端发送消息。再来看Client端:Socket连接ServerSocket,先向server发送消息,再接收server端的回复。从这里可以看出,client端在向server端发送消息接收消息进行IO操作时,主线程并不能进行...

2018-07-13 15:40:50 225

原创 常见的IO模型

一、服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:1.同步阻塞IO(BlockingIO):即传统的IO模型。2.同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。3.IO多路复用(IOMultiple...

2018-07-12 15:20:34 2130

原创 常见的IO模型_晏无心_新浪博客

一、服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:1.同步阻塞IO(BlockingIO):即传统的IO模型。2.同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(NewIO)库。3.IO多路复用(IOMultiplexing):即经...

2018-07-12 15:20:34 122

原创 RMI和Spring整合_晏无心_新浪博客

现在大多数的项目都使用了spring框架,RMI可以很方便的和Spring进行整合,由spring来管理bean的实例化和端口的注册、查找。需要引入spring JAR包:在bookRmi项目里添加spring.xml:RMI和Spring整合后,接口不需要再继承Remote接口,接口方法也不需要强制抛出RemoteException异常。获取spring上下文,启...

2018-07-11 14:57:15 129

原创 RPC的简单例子和理解_晏无心_新浪博客

RPC,远程过程调用,目的是实现调用远程的方法和调用本地方法一样,开发者可以通明的使用,感觉不到远程调用的存在。自己写了个RPC的简单例子,依赖于http协议,采用springmvc实现restfulwebservice,使用json进行序列化与反序列化。新建一个reader maven项目:接口Book:接口中三个方法,都是queryBook(),参数个数不同。Lo...

2018-07-09 15:54:33 240

原创 RPC的初浅理解

RPC(Remote ProcedureCall)远程过程调用。RPC这个词在分布式系统或是远程调用中听到过许多,但对于RPC到底是什么,很容易理解的不太清晰。在网上也百度过很多,说法不一,还有很多人问RPC和webapi或是MVCController的区别,实际上这两种压根不是一个概念。RPC,远程过程调用,肯定涉及到远程,那么,远程的概念到底是什么,个人理解...

2018-07-09 09:31:15 634

原创 RPC的初浅理解_晏无心_新浪博客

RPC(Remote ProcedureCall)远程过程调用。RPC这个词在分布式系统或是远程调用中听到过许多,但对于RPC到底是什么,很容易理解的不太清晰。在网上也百度过很多,说法不一,还有很多人问RPC和webapi或是MVCController的区别,实际上这两种压根不是一个概念。RPC,远程过程调用,肯定涉及到远程,那么,远程的概念到底是什么,个人理解是不同的进程。...

2018-07-09 09:31:15 99

原创 dubbo的需求,为什么会出现dubbo,为什么要使用dubbo_晏无心_新浪博客

RMI:(Remote MethodInvocation)远程方法调用Hessian:一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能RMI和Hessian都是RPC的一种实现方式。如果只是简单的配置URL来处理应用与应用之间的远程调用,当远程调用交互越来越多时,URL配置会变得非常庞大,不利于管理。这个时候将配置URL这一部分功能抽出来...

2018-07-06 09:05:47 102

原创 初识dubbo_晏无心_新浪博客

互联网技术发展的很快。想起刚毕业那会,大多数公司还在使用EJB,spring和maven还没有完全的普及。在公司的第一个项目,就是将技术框架从EJB变为spring,项目的搭建也开始使用maven。那时的mvc还在使用struts1,页面大多数在使用JSP开发。再往后几年,struts2和springmvc使用的越来越多,spring框架几乎成了大多数公司的首选,前端技术JSP已...

2018-07-02 18:46:42 88

原创 springmvc中的设计模式---模版方法模式_晏无心_新浪博客

springmvc中大量使用了模版方法模式。一、模版方法模式完成某一个功能,有几个固定的步骤,但每个步骤的实现根据具体对象的不同,实现的细节也不同。模板方法模式可以让具体的实现细节由子类来完成,而在父类中定义好骨架。二、springmvc中的模板方法模式springmvc中的HandlerMapping、HandlerAdapter、ArgumentResolver、ViewR...

2018-06-29 10:27:15 219

原创 springmvc中的设计模式---适配器模式_晏无心_新浪博客

springmvc的基本流程在之前的文章里都大致分析完了,接下来总结下springmvc中运用了哪些设计模式。一、设计模式什么是设计模式,通俗来讲,就是是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。它是软件设计、系统设计中的一种解决方案。有点类似围棋中的起手定式。围棋中一般开局中边角的下法都是固定的,对手下出一步棋,接下来本方的落子实际上已经固定了,只有这样...

2018-06-28 14:44:13 162

原创 springmvc与thymeleaf集成_晏无心_新浪博客

springmvc没有提供thymeleafViewResolver,需要引入jar包:在springmvc.xml里进行配置:这里需要注意,ThymeleafViewResolver的viewNames属性如果配置了,那么handler返回的viewName,必须带上.html,如果不带,不能被ThymeleafViewResolver解析。如果要带上,则又和Spring...

2018-06-27 20:22:51 143

原创 springmvc集成freemarker_晏无心_新浪博客

springmvc使用FreeMarkerViewResolver来处理ModelAndView,将页面渲染交给FreeMarkerView来处理。在springmvc.xml里进行配置:可以通过配置FreeMarkerConfigurer对freemarkerViewResolver进行一些配置。需要引入新的JAR包,不然启动会报错:添加ftl格式的页面文件:...

2018-06-27 10:33:05 85

原创 springmvc的InternalResourceViewResolver解析_晏无心_新浪博客

springmvc在处理handler的返回值之后,将由InternalResourceViewResolver进行解析,获取视图View,最终调用view.render进行页面渲染。回顾下流程:DispatcherServlet:InternalResourceViewResolver是springmvc默认加载的viewResolver,它主要是处理jsp页面的映射...

2018-06-26 10:40:10 291

原创 springmvc返回xml、json格式的数据_晏无心_新浪博客

springmvc在对handler的返回值进行处理后,会交给视图处理。对于返回json、xml格式的数据,应该是采用response.write的方式。先来看具体的handler:需要添加@ResponseBody注解,在@RequestMapping注解里,设置produces属性值,不设置的话,如果在springmvc.xml里同时配置了xml和json的HttpMess...

2018-06-25 14:59:00 126

原创 springmvc的ModelAndViewMethodReturnValueHandler解析_晏无心_新浪博客

来看supportsReturnType()方法:支持返回值类型是ModelAndView。handleReturnValue()方法:直接将handler返回值转换成ModelAndView类型,判断mav的view是否是String类型:分别做处理,将view或viewName设置到mavContainer,同时判断是否是重定向,做相应处理。来看具体的handler...

2018-06-22 14:42:00 163

原创 springmvc的ViewNameMethodReturnValueHandler解析_晏无心_新浪博客

ViewNameMethodReturnValueHandler可以处理handler的返回值类型是void和String类型的:再来看handleReturnValue()方法:将String类型的值作为ViewName设置到mavContainer;判断viewName是否是重定向,如果是,设置mavContainer重定向标识为true。来看具体的handler:...

2018-06-22 14:28:31 149

原创 springmvc对handler的返回值处理_晏无心_新浪博客

前面的文章分析了springmvc对http请求参数解析绑定到handler的参数的处理,接下来开始分析springmvc对handler的返回值的处理。在之前分析过的ServletInvocableHandlerMethod里,会调用invokeAndHandle()方法:在这里通过,这里会直接返回null。否则如果handler没有做处理直接返回null,接下来处理会报出异常。...

2018-06-22 09:52:46 214

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除