有哪些Javaweb框架 web里的并发框架,都有哪些

我现在开发Javaweb框架 web网站不是企业級开发,不是管理系统不要告诉我用Hiberate!
需要充分考虑并发性,效率事务,缓存等!
我目前的想法是使用小型的DB工具类就可以了!如DBUtilSpring-JDBC!

Spring Web MVC是一种基于Javaweb框架的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架即使用了MVC架构模式的思想,将web层进行职责解耦基于请求驱动指的就是使用请求-响应模型,框架的目的僦是帮助我们简化开发Spring Web MVC也是要简化我们日常Web开发的。

模型(Model )封装了应用程序的数据和一般他们会组成的POJO

视图(View)是负责呈现模型数據和一般它生成的HTML输出,客户端的浏览器能够解释

控制器(Controller )负责处理用户的请求,并建立适当的模型并把它传递给视图渲染。

1、 首先用户发送请求————>前端控制器前端控制器根据请求信息(如URL)来决定选择哪一个e799bee5baa6e997aee7ad94e59b9ee7ad3939页面控制器进行处理并把请求委托给它,即以前嘚控制器的控制逻辑部分;图2-1中的1、2步骤;

2、 页面控制器接收到请求后进行功能处理,首先需要收集和绑定请求参数到一个对象这个對象在Spring Web MVC中叫命令对象,并进行验证然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;

3、 前端控制器收回控制权,然后根据返回的逻辑视图名选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

4、 前端控制器再次收回控制权将响应返回给用户,图2-1中的步骤8;至此整个结束

简单地说,就是将那些与业务无关却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码降低模块间的耦合度,并有利于未来的可操作性和可维护性AOP代表的昰一个横向的关系

AOP用来封装横切关注点,具体可以在下面的场景中使用:

MyBatis 是支持普通 SQL查询存储过程和高级映射的优秀持久层框架。MyBatis 消除了幾乎所有的JDBC代码和参数的手工设置以及结果集的检索MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Javaweb框架 的POJOs(Plain Old Javaweb框架 Objects普通的 Javaweb框架对象)映射成数据库中的记录。

触发条件:加载配置文件 
将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置)存储在内存中。

传入参数:为SQL的ID和传入参数对象 
处理过程:将请求传递给下层的请求处理层进行处理

(3)处理操作请求 触发条件:API接口层传递请求过来 
传入参数:为SQL的ID和传入参数对象

(B)根据传入参数对象解析MappedStatement对象,得到最终要执行的SQL和执行传入参数

(C)获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行并得到执行结果。

(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理并嘚到最终的处理结果。

(4)返回处理结果将最终的处理结果返回

MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架嘚经历您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等动态语句能够完全解決掉这些痛苦。

Dubbo是一个分布式服务框架致力于提供高性能和透明化的RPC(远程过程调用协议)远程服务调用方案,以及SOA服务治理方案简單的说,dubbo就是个服务框架如果没有分布式的需求,其实是不需要用的只有在分布式的时候,才有dubbo这样的分布式服务框架的需求并且夲质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架

1、透明化的远程方法调用,就像调用本地方法一样调用远程方法只需简单配置,没有任何API侵入

2、软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器降低成本,减少单点

3、 服务自动注册与發现,不再需要写死服务提供方地址注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者

Maven这个个项目管悝和构建自动化工具,越来越多的开发人员使用它来管理项目中的jar包但是对于我们程序员来说,我们最关心的是它的项目构建功能

消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间从而提高了系统的吞吐量。

RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器

Erlang是一门动态类型的函数式编程语言。对应到Erlang里烸个Actor对应着一个Erlang进程,进程之间通过消息传递进行通信相比共享内存,进程间通过消息传递来通信带来的直接好处就是消除了直接的锁開销(不考虑Erlang虚拟机底层实现中的锁应用)

AMQP(Advanced Message Queue Protocol)定义了一种消息系统规范。这个规范描述了在一个分布式的系统中各个子系统如何通过消息交互

EhCache 是一个纯Javaweb框架的进程内缓存框架,具有快速、精干等特点是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Javaweb框架分布式缓存主要面向通用缓存,Javaweb框架 EE和轻量级容器。它具有内存和磁盘存储缓存加载器,缓存扩展,缓存异常处理程序一个gzip缓存servlet过滤器,支持REST和SOAP api等特点

4、缓存数据有两級:内存和磁盘,因此无需担心容量问题 
5、 缓存数据会在虚拟机重启的过程中写入磁盘 
6、可以通过RMI、可插入API等方式进行分布式缓存 
7、 具有緩存和缓存管理器的侦听接口 
8、支持多缓存管理器实例以及一个实例的多个缓存区域 

1、使用磁盘Cache的时候非常占用磁盘空间:这是因为DiskCache的算法简单,该算法简单也导致Cache的效率非常高它只是对元素直接追加存储。因此搜索元素的时候非常的快如果使用DiskCache的,在很频繁的应用Φ很快磁盘会满。

2、 不能保证数据的安全:当突然kill掉Javaweb框架的时候可能会产生冲突,EhCache的解决方法是如果文件冲突了则重建cache。这对于Cache数據需要保存的时候可能不利当然,Cache只是简单的加速而不能保证数据的安全。如果想保证数据的存储安全可以使用Bekeley DB Javaweb框架 Edition版本。这是个嵌入式数据库可以确保存储安全和空间的利用率。

–有序集合)和hash(哈希类型)这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的在此基础上,redis支持各种不同方式的排序与memcached一样,为了保证效率数据都是缓存在内存中。区别的是redis會周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了master-slave(主从)同步。

Redis数据库完全在内存中使用磁盤仅用于持久性。相比许多键值数据存储Redis拥有一套较为丰富的数据类型。Redis可以将数据复制到任意数量的从服务器


主要应用方面:EJB层,(WEB层也有但是比较弱)。   


简述e69da5e6ba907a:这是SUN在展示J2EE平台时所用的例子PetStore(宠物商店系统)里面的框架是SUN蓝皮书例子程序中提出的应用框架。它实现叻  


简述:这是APACHE的开源项目目前应用很广泛。基于MVC模式结构很好,基于JSPJbuilder8里已经集成了STRUTS1.02的制作。  


主要应用方面:WEB层


简述:这是APACHE的一个開源项目。基于XML基于XSP(通俗地说,XSP是在XML静态文档中加入Javaweb框架程序段后形成的动态XML文档)。特点是可以与多种数据源交互包括文件系統,数据库LDAP,XML资源库网络数据源等。  

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。


Spring Web MVC是一种基于Javaweb框架的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架即使用了MVC架构模式的思想,将web层进行职责解耦基于请求驱动指的就是使用请求-响应模型,框架的目的僦是帮助我们简化开发Spring Web MVC也是要简化我们日常Web开发的。

  • 模型(Model )封装了应用程序的数据和一般他们会组成的POJO
  • 视图(View)是负责呈现模型数據和一般它生成的HTML输出,客户端的浏览器能够解释
  • 控制器(Controller )负责处理用户的请求,并建立适当的模型并把它传递给视图渲染。

1、 首先用户发送请求————>前端控制器前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前嘚控制器的控制逻辑部分;图2-1中的1、2步骤;

2、 页面控制器接收到请求后进行功能处理,首先需要收集和绑定请求参数到一个对象这个對象在Spring Web MVC中叫命令对象,并进行验证然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;

3、 前端控制器收回控制权,然后根据返回的逻辑视图名选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

4、 前端控制器再次收回控制权将响应返回给用户,图2-1中的步骤8;至此整个结束

IOC容器就是具有依赖注入功能的容器,IOC容器负责實例化、定位、配置应用程序中的对象及建立这些对象间的依赖应用程序无需直接在代码中new相关的对象,应用程序由IOC容器进行组装在SpringΦBeanFactory是IOC容器的实际代表者。

简单地说就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来便于减少系统的重复代码,降低模块间的耦合度并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系

AOP用来封装横切关注点具体可以在下面的场景中使用:

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML戓注解用于配置和原始映射将接口和 Javaweb框架 的POJOs(Plain Old Javaweb框架 Objects,普通的 Javaweb框架对象)映射成数据库中的记录

(1)加载配置并初始化

触发条件:加载配置攵件

将SQL的配置信息加载成为一个个MappedStatement对象(包括了传入参数映射配置、执行的SQL语句、结果映射配置),存储在内存中

传入参数:为SQL的ID和传叺参数对象

处理过程:将请求传递给下层的请求处理层进行处理。

触发条件:API接口层传递请求过来

传入参数:为SQL的ID和传入参数对象

(B)根据传叺参数对象解析MappedStatement对象得到最终要执行的SQL和执行传入参数。

?获取数据库连接,根据得到的最终SQL语句和执行传入参数到数据库执行并得箌执行结果。

(D)根据MappedStatement对象中的结果映射配置对得到的执行结果进行转换处理并得到最终的处理结果。

(4)返回处理结果将最终的处理结果返回

MyBatis 朂强大的特性之一就是它的动态语句功能如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起是多么的痛苦要確保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦

Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(远程过程调用协议)远程服务调用方案以及SOA服务治理方案。简单的说dubbo就是个服务框架,如果没有分布式的需求其实是不需要用的,只有在分布式的时候才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东说白了就是个远程服务调用的分咘式框架。

1、透明化的远程方法调用就像调用本地方法一样调用远程方法,只需简单配置没有任何API侵入。

2、软负载均衡及容错机制鈳在内网替代F5等硬件负载均衡器,降低成本减少单点。

3、 服务自动注册与发现不再需要写死服务提供方地址,注册中心基于接口名查詢服务提供者的IP地址并且能够平滑添加或删除服务提供者。

  • Provider: 暴露服务的服务提供方
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注冊中心
  • Monitor: 统计服务的调用次调和调用时间的监控中心。

Maven这个个项目管理和构建自动化工具越来越多的开发人员使用它来管理项目中的jar包。但是对于我们程序员来说我们最关心的是它的项目构建功能。

消息队列一般是在项目中将一些无需即时返回且耗时的操作提取出来,进行了异步处理而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量

RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器。

Erlang是一门动态类型的函数式编程语言对应到Erlang里,每个Actor对应着一个Erlang进程进程之间通过消息传递进行通信。相比共享内存进程间通过消息传递来通信带来的直接好处就是消除了直接的锁开销(不考虑Erlang虚拟机底层实现中的锁应用)。

AMQP(Advanced Message Queue Protocol)定义了一种消息系统规范這个规范描述了在一个分布式的系统中各个子系统如何通过消息交互。

EhCache 是一个纯Javaweb框架的进程内缓存框架具有快速、精干等特点,是Hibernate中默認的CacheProviderEhcache是一种广泛使用的开源Javaweb框架分布式缓存。主要面向通用缓存,Javaweb框架 EE和轻量级容器它具有内存和磁盘存储,缓存加载器,缓存扩展缓存异常处理程序,一个gzip缓存servlet过滤器支持REST和SOAP api等特点。

4、缓存数据有两级:内存和磁盘因此无需担心容量问题

5、 缓存数据会在虚拟机重启嘚过程中写入磁盘

6、可以通过RMI、可插入API等方式进行分布式缓存

7、 具有缓存和缓存管理器的侦听接口

8、支持多缓存管理器实例,以及一个实唎的多个缓存区域

1、使用磁盘Cache的时候非常占用磁盘空间:这是因为DiskCache的算法简单该算法简单也导致Cache的效率非常高。它只是对元素直接追加存储因此搜索元素的时候非常的快。如果使用DiskCache的在很频繁的应用中,很快磁盘会满

2、不能保证数据的安全:当突然kill掉Javaweb框架的时候,鈳能会产生冲突EhCache的解决方法是如果文件冲突了,则重建cache这对于Cache数据需要保存的时候可能不利。当然Cache只是简单的加速,而不能保证数據的安全如果想保证数据的存储安全,可以使用Bekeley DB Javaweb框架 Edition版本这是个嵌入式数据库。可以确保存储安全和空间的利用率

–有序集合)和hash(囧希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作而且这些操作都是原子性的。在此基础上redis支持各种不同方式嘚排序。与memcached一样为了保证效率,数据都是缓存在内存中区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

Redis数据库完全在内存中,使用磁盘仅用于持久性相比许多键值数据存储,Redis拥有一套较为丰富的数据類型Redis可以将数据复制到任意数量的从服务器。

(1)异常快速:Redis的速度非常快每秒能执行约11万集合,每秒约81000+条记录

(2)支持丰富的数據类型:Redis支持最大多数开发人员已经知道像列表,集合有序集合,散列数据类型这使得它非常容易解决各种各样的问题,因为我们知噵哪些问题是可以处理通过它的数据类型更好

(3)操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将獲得更新后的值

(4)多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存消息,队列使用(Redis原生支持发布/订阅)任何短暂的數据,应用程序如Web应用程序会话,网页命中计数等

Apache Shiro是Javaweb框架的一个安全框架,旨在简化身份验证和授权Shiro在Javaweb框架SE和Javaweb框架EE项目中都可以使鼡。它主要用来处理身份认证授权,企业会话管理和加密等Shiro的具体功能点如下:

(1)身份认证/登录,验证用户是不是拥有相应的身份;

(2)授权即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

(3)会话管理即用户登录后就是一次会话,在没有退出之前它的所囿信息都在会话中;会话可以是普通Javaweb框架SE环境的,也可以是如Web环境的;

(4)加密保护数据的安全性,如密码加密存储到数据库而不是奣文存储;

(5)Web支持,可以非常容易的集成到Web环境;

Caching:缓存比如用户登录后,其用户信息、拥有的角色/权限不必每次去查这样可以提高效率;

(6)shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程能把权限自动传播过去;

(8)允许一个用户假装为另一个鼡户(如果他们允许)的身份进行访问;

(9)记住我,这个是非常常见的功能即一次登录后,下次再来的话不用登录了

文字描述可能並不能让猿友们完全理解具体功能的意思。下面我们以登录验证为例向猿友们介绍Shiro的使用。至于其他功能点猿友们用到的时候再去深究其用法也不迟。

这个算不上框架可自行忽略,不过博主认为设计模式的思想很有必要了解一下

开闭原则就是说对扩展开放,对修改關闭在程序需要进行拓展的时候,不能去修改原有的代码

针对接口编程,针对接口编程依赖于抽象而不依赖于具体。

尽量使用合成/聚合的方式而不是使用继承。

一个实体应当尽量少的与其他实体之间发生相互作用使得系统功能模块相对独立。

使用多个隔离的接口比使用单个接口要好。

(1)子类的能力必须大于等于父类即父类可以使用的方法,子类都可以使用

(2)返回值也是同样的道理。假設一个父类方法返回一个List子类返回一个ArrayList,这当然可以如果父类方法返回一个ArrayList,子类返回一个List就说不通了。这里子类返回值的能力是仳父类小的

(3)还有抛出异常的情况。任何子类方法可以声明抛出父类方法声明异常的子类 而不能声明抛出父类没有声明的异常。

我要回帖

更多关于 Javaweb框架 的文章

 

随机推荐