文档库 最新最全的文档下载
当前位置:文档库 › SpringMVC+Nutz框架介绍

SpringMVC+Nutz框架介绍

SpringMVC+Nutz框架介绍
SpringMVC+Nutz框架介绍

SpringMVC+Nutz自主框架介绍

一、框架概况

基于经典技术组合(Spring MVC、Apache Shiro、Bootstrap UI)开发的企业级分布式基础开发平台,实现企业开发常用功能:组织机构、角色用户、权限授权、数据权限、内容管理、微信管理等。

使用的后台技术包括Spring、Spring MVC、Spring Cache、Nutz、Shiro、Jedis、Dubbo、RabbitMQ、Quartz、Elasticsearch、FastDFS、Ehcache、Beetl、Log4j等,前端技术包括Jquery、Bootstrap、Pjax等。

?模块化可自由拆分(分布式可选择Dubbo/RSF实现)

?集成Shiro权限框架(支持二级缓存,通过Redis实现支持session同步) ?集成Ehcache缓存(Shiro一级缓存)

?集成Jedis(redis的java实现,支持Redis集群模式和单机模式切换)

?集成Email服务(可选择启用)

?集成Quartz定时任务(支持集群部署)

?集成Beetl模板引擎(功能强大便捷)

?支持语言国际化(直接写汉字不需要Unicode转换,一种语言一个文件夹) ?支持方法日志记录(@SLog注解自动记录日志)

?支持文件输出(@SFile注解自动输出文件,比如输出PDF格式)

?支持json输出(@SJson注解自动输出json字符串)

?支持自定义路由(显性转发或隐性转发)

?支持API Token及应用管理(Jwt实现token机制)

?后台管理界面采用Pjax+Bootstrap

?系统模块(单位、角色、用户、菜单等完整的权限体系)

?CMS模块(简易的内容管理功能)

?微信模块(支持多公众号、微信支付等功能)

二、与xx框架对比分析

1、Dao

1)使用NutDao,简化数据库增删改查操作,天然的过滤非法字符,防止sql注入;

2)兼容各类型数据库,只需对自定义SQL部分进行兼容性改造即可快速部署在MySQL、Oracle/达梦、MSSQL等各类数据库上;3)可通过实体类生成各类数据库的表结构、索引、序列或触发器等,支持动态分表,建立空白数据库启动项目时自动初始化表

结构和数据;

4)支持多数据源,并兼容hibernate、mybatis等其他第三方ORM 框架;

2、Service

1)Spring Cache方法缓存,对方法执行结果进行缓存,而非每条表数据,因为大部分业务是不需要用缓存的,比如后台的增删改

查管理;以前项目中经常出现因为缓存嵌套的问题加上缓存更

新不了造成的数据不一致问题;使用redis实现,支持自定义

cachekey、cachename、可通过通配符清空部分缓存、可设置缓

存失效时间等,并支持redis缓存的集群部署模式;

2)增删改方法中手动添加事务注解,而非全局事务,在某些查询数据环节减少没必要事务操作,之前项目中出现因为事务回写,造成前台异常数据入库的情况;

3、Controller

1)@SJson注解,统一将执行结果转换为json字符串输出,统一的Result类,支持Vue等MVVM框架及前后端分离开发模式;此

注解支持Jsonp格式输出;

2)@SFile注解,方便的输出图片、文件、字节流等文件类型,通过@SFile(“pdf”)直接输出PDF文件;

3)@Slog注解,统一且可扩展的日志体系,可根据需要记录时间、操作人、请求路径、输入参数、输出结果等,可将结果记录在

数据库、mongodb或文件中;

4)封装datatablesjs组件,后台分页查询使用起来非常简便,之前项目后台用到的分页组件及代码封装都做的非常固化且容错率

低,做个高级查询开发一不小心就出错;

4、权限体系

1)基于shiro权限框架的深度改造,一级缓存使用ehcache实现性能更优,二级缓存使用redis实现持久化、session同步等功能;

2)将菜单和数据权限有机的组合到一起,使权限分配操作更方便、开发更简便,通过shiro权限判断注解可实现按钮级、方法级权

限控制;

3)平台、商家、会员,三套独立的shiro验证体系,使平台权限可对管理员等后台人员进行无限级权限下放和管理,使商家可对

店铺子帐号进行菜单和权限的无限级下放和管理,使会员中心

也可做到按钮级权限控制;

5、国际化语言

1)深度改造SpringMVC国际化语言实现方式,实现一种语言一个文件夹,方便扩展更多语言;

2)语言配置文件支持直接写汉字,不需要再做转换,开发便捷;

6、配置文件

1)PropertiesProxy类,可通过key获取任意一个properties配置文件的value,可通过其封装方法直接得到int、string等类型数据

并支持默认值设置;

2)同时系统后台提供“系统参数”管理,这些配置数据存储在数据库中,在项目启动时会加载的全局变量里(支持集群部署);

7、文件池

1)在一些业务场景中(如奇瑞人脸识别),需要下载图片存放到本地,这些文件不需要永久存储,处理过后需要删除,这个时候就是文件池的用武之地了,框架集成文件池功能,并可配置文件池的大小;

8、FastDFS的集成

1)FastDFS不需要单独安装个mysql,且性能优异;

2)框架支持普通文件上传文件方式和FastDFS文件服务器上传方式的自由切换,看项目实际需要;

9、Redis的集成

1)RedisService一个封装好的服务类可调用redis所有功能;

2)Spring Cache、Shiro二级缓存、RedisService使用同一个JedisAgent 来实现,当然也就都支持redis的单机模式或集群模式了;3)通过Redis的发布/订阅,框架集成实现了Websocket功能(虽然目前还没有项目用到);

10、RabbitMq的集成

1)系统参数、自定义路由、微信token,这些需要在Tomcat集群部署环境下保持一致的数据,是通过rabbitmq的FanoutExchange 实现的;

2)商品下订单、商品数据同步ES,这些功能是通过rabbitmq的TopicExchange实现的;

11、Beetl的集成

1)Beetl的语法简单、容易上手、功能强大,简化了html开发的复杂度和时间,解放了生产力;

2)在网站群项目中,Beetl自定义标签功能,可以用于编辑前台模板文件,来实现全静态页面的生成功能;

12、开发效率提升

1)代码生成器

?IDEA可视化插件,一键生成增删改查代码及多语言文件,可通过勾选选择要生成的内容;

?IDEA可视化插件和代码生成类是相对独立的两个项目,通过开发可以提

供Eclispe可视化插件;

2)调试工具

?在Debug模式下,可输出每个url执行耗时,方便性能调优;

?Logs工具类,使错误定位准确(以前项目报错很难找到什么地方报的错,

现在一目了然),结合log4g可按日期或循环覆盖方式保存日志文件;3)工具类

?Strings类,集成众多常用的非空判断、是否手机号码、是否身份证、左右补位、空值转换等公共方法;

?Json类,可方便的将对象转为json字符串,或反向通过json转换为对象

或集合,解析json非常方便;

?Lang类,常用的对象转map、map转对象、md5加密、sha1加密等;

?Http类,简易强大的网络请求工具,可方便的对接第三方API、实现网络

爬虫等,可替换笨重繁杂的httpclient,在比价系统等项目有大量应用,

极大的提高开发效率,这个丁传斌做face++接口的时候应该深有体会,

繁杂的代码几行就搞定;

?Xmls解析类,对接微信支付接口或第三方通过xml包装数据的场合,通过此工具类可快捷的对数据进行解析、转换;

?其他;

三、与xx电商平台对比分析

功能上:

1、商品规格

汲取友商产品的经验,在商品分类、商品类型、商品规格等处做了优化改造,可以定义商品规格库,对不同类型的商品分配使用不同的规格;

2、价格中心

可对销售终端(PC/WAP/TV)、销售区域、销售对象、会员等级等分别设置销售价格;

3、微信模块

提供微信会员列表、自动回复、模板消息、群发消息等各类微信管理功能,同时通过微信支付API及JS API等功能;

4、营销模块

支持按销售终端、销售区域、销售对象、会员等级、满足的条件规则,分别设置销售策略,如满赠、满减、满包邮、满送优惠券等等;

5、订单模块

支持拆单、并单等,支持上传付款凭证、货到付款等;

6、运费模板

可配置按件数、按体积、按重量、按区域、按商品分类、按物流公司配置运费规则;

7、系统管理模块

单位、用户、角色、菜单及权限,分级分配缓存加载;

性能上:

1、订单系统

将订单数据放入队列,有队列消费者进行订单处理,提升下订单流程;通过Redis主键生成器生成订单号,解决高并发及集群部署环境下订单号唯一性问题;

2、商品数据同步ES

商品增删改操作,会通知消息队列,由队列消费者进行ES数据同步,提高数据同步的实时性;

附件:

一、使用国产开源技术的优势

1、学习成本低

由于语言因素及目前互联网外网访问越来越难,国外技术学习成本越来越高,且“无人问,无人答”。使用国产开源技术,可以加QQ群、作者QQ、社区网站,可以用中文交流,甚至自己都可以贡献代码。

比如beetl、fastdfs、t-io、nutz、node-wechat、thinkjs等,我都加了作者的QQ或群,直接和作者交流问题,他们回答都非常及时,少走了很多弯路。

2、轻巧开发效率高

由于思维方式的不同,国外的技术或框架很笨重,比如springmvc要实现某个功能需要引用一大堆其他的东西,自身对参数解析等支持方面思维较为落后(可能与出现的早有关)接收特殊格式参数等需要自己改造,连spring自己都出了个轻巧的spring boot。

国内开源项目多设计巧妙、灵活、简便,很多实现不会绕弯子,比如nutz

一个框架解决几乎所有MVC问题,比如t-io解析socket数据包比netty方便的多,比如fastdfs不需要额外的安装维护mysql,比如大名鼎鼎的Druid一个框架解决几乎所有数据库连接问题,这就是中国人的思维,力求简单而强大的“聪明”思想。还有dubbo等等。

3、稳定和迭代

没有没有bug的技术,windows、linux、springmvc等等都会时不时的暴出bug,关键在于修复bug的速度。例如框架里经常用到的nutz,从2012年开始就使用了,至今5个年头,老公司一直用它进行开发。

若发现bug可方便的联系作者,提交issue,修复非常快,同时合理的需求也可以提出来,及时得到支持。

4、发展

国产开源技术会越来越多,好的框架和技术必定会越来越多、越来越强大,这是量变到质变的过程,有网络因素、安全因素等等方面。

二、长远计划

一个好的开发框架,不是一成不变的,应该是紧跟时代的,特别是技术日新月异的今天。它应该具有学习成本低、开发效率高、性能优异、可动态扩展等等特性。

如果有充足的时间,我希望尝试一下如下几个方面进行新框架的架构:

1、完全基于nutz的全热插拔框架,https://www.wendangku.net/doc/2310515225.html,网站就是使用这个技术,但它是单网

站,要实现分布式等更高技术指标要求,需要改造完善;

2、Springboot+Springcloud+Nutz----Restful API----VUE

后台微服务框架+前台VUE,完全的前后端分离的开发框架,最终做到后台人员只用开发接口,前端人员只要做数据展示及效果;

只要时间充分,一切皆有可能。

SpringMVC深入总结

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。 官方的下载网址是:https://www.wendangku.net/doc/2310515225.html,/download(本文使用是的Spring 3.0.5版本) Struts2也是比较优秀的MVC构架,优点非常多比如良好的结构。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。Struts2的多层拦截器、多实例action性能都很好。可以参考我写的一篇关于Spring MVC与Struts2与Servlet比较的文章https://www.wendangku.net/doc/2310515225.html,/admin/blogs/698217 Spring3 MVC的优点: 1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。 Struts2的众多优点:略... (呵呵,是不是不公平?) 众多文章开篇时总要吹些牛,吸引一下读者的眼球,把读者的胃口调起来,这样大家才有兴趣接着往后看。本文也没能例外。不过保证你看了之后不会后悔定有收获。

常用机械制图手工绘图工具及使用技巧

常用机械制图手工绘图工具及使用 技巧 熟练掌握常用的绘图工具使用技巧,对于提高手工绘图的质量和速率有重要意义。 —、常用绘图工具 (1)(图板)画图时,需将图纸平铺在图纸上,所以,图板的表面必须平整、光洁、且富有弹性。图板 的左侧边称为导边,必须平直。常用的图板规格有0号、1号和二号三种。 (2)丁字尺丁字尺主要用于画水平线,它由尺头和尺身组成。尺头和尺身的连接处必须牢固,尺头的 内侧边与尺身的上边(称为工作边)必须垂直。使用时,用左手扶住尺头,将尺头的内侧边紧贴图板的 导边,上下移动丁字尺,自左向右可画出一系列不同位置的水平线,如图1–18a所示。 (3)三角板三角板有45°-90°角和30°-60°-90°角的各一块。将一块三角板与丁字尺配合使用,自下而上 可画出一系列不同位置的直线,如图1-18b所示;还可画与水平线成特殊角度如30°、45°、60°的倾斜线,如图1-18c所示将两快三角板与丁字尺配合使用,可画出与水平线成15°、75°的倾斜线,如图2所示。两块三角板互相配合使用,可任画已知直线的水平线或垂直线,如图3所示。 图1用丁字尺和三角板画线 图2画15度75度斜线 图3画已知直线平行线和垂直线 二、分规、比例尺 (1)分规分规是用来量取尺寸、截取线段、等分线段的工具。分规的两腿端部有钢针,当两腿合龙时, 两针尖应重合于一点,如图4所示。图5所示为用分规在比例尺上量取尺寸(图5a),然后在线上连续截取等长线段(图5b)的方法若欲将图5c所示的AB线段四等分,可先任凭自测估计,将分规的两针 尖开到约为AB/4进行试分,如有剩余(或不足)时,再将针尖间的距离张大(或缩小)e/4,e为剩余或不足量,再进行试分,直到满意为止。用试分法也可等分圆或圆弧。 (2)比例尺比例尺的三个棱面上有六种不同比例的刻度,如1:100、1:200等,可用于量取不同比例的 尺寸。 图5分规画法 三、圆规圆规是用来画圆或圆弧的工具。圆规固定腿上的钢针具有两种不同形状的尖端:带台阶的尖端是画圆货圆弧时定心用的;带锥形的尖端可作分规使用。活动腿上有肘形关节,可随时装换铅芯插脚、 鸭嘴脚及作分规用的锥形钢针插脚,如图6所示。 图6圆规及附件 画圆或圆弧时,要注意调整钢针在固定腿上的位置,使两腿在合龙时针尖比铅芯稍长些,以便将针尖全部扎入内,如图7a所示;按顺时针方向转动圆规,并稍向前倾斜,此时,要保证针尖和笔尖均垂直纸 面,如图7b所示;画大圆时,可接上延长杆后使用,如图7c所示。 图7圆规用法 四、曲线板曲线板是绘制非圆曲线的常用工具。画线时,先徒手将各点轻轻地连成曲线,如图8a所示;然后在曲线板上选取曲率相当的部分,分几段逐次将各点连成曲线,但每段都不要全部描完,至少留出后两点间的一小段,使之与下段吻合,以保证曲线的光滑连接,如图8b所示。 图8非圆曲线的描绘 五、铅笔(1)铅笔的型号及应用绘图铅笔分软与硬两种型号,字母“B”表示软铅笔,字母“H”表示硬铅芯。“B” 之前的数值越大,表示铅芯越硬。 之前的数值越大,表示铅芯越软;“H” 字母“HB”表示软硬适中的铅芯。 图9修磨铅笔的方法

论文框架结构.

论文框架结构 特别说明:以下的框架只是普遍意义的写作思路,各位同学在写作时,可以按照此框架整理自己的思路,具体拟订写作提纲时,应根据实际情况进行增减和调整,不一定完全按照此框架写。 对于不同类型的选题,论文的框架各有不同,一般而言,电大论文选题可以分为三种类型。 第一种类型:以研究企业现存问题为主,对存在问题提出改进建议的选题。重点写存在的问题接解决措施。 在文章的开头应该有 300-600字左右的引言,引出所研究的内容, 对于问题型研究主题,主要内容的展开可以参考以下分析框架: 一、理论概述 (一 (二 ······ 二、提出问题(研究对象的特点、重要性、必要性 (一 (二 (三 ······· 三、现状描述(现状,现存主要问题

(一 (二 (三 ······· 四、问题分析(原因分析、成因分析 (一 (二 (三 五、解决问题(解决措施、改进建议、应注意的问题 (一 (二 (三 ······· 六、小结(结论 第二种类型:某一种管理方式在某企业中的应用, 如“电子商务在 XX 企业中应用研究” 。重点写实施过程中面临的主要问题及解决方案 在文章的开头应该有 300-600字左右的引言,引出所研究的内容, 对于问题型研究主题,主要内容的展开可以参考以下分析框架: 一、理论概述

(一 (二 ······ 二、研究对象的必要性 (一 (二 (三 ······· 三、推行的主要措施 (一 (二 (三 ······· 四、推行过程中面临的主要问题 (一 (二 ······· 五、解决措施、保障措施或进一步注意的问题(一

(二 (三 ······· 六、小结(结论 第三种类型:以总结企业现有的成功经验为主(相当于一个案例研究 ,该企业的成功经验对类似企业的借鉴意义,如“雅芳直销模式的研究” ,这类企业的一些做法比较成熟、成功,具有一定的推广和借鉴价值。重点要总结经验, 提出其借鉴意义。 在文章的开头应该有 300-600字左右的引言,引出所研究的内容, 对于问题型研究主题,主要内容的展开可以参考以下分析框架: 一、理论概述 (一 (二 ······ 二、研究意义、重要性、必要性 (一 (二 (三 ······· 三、主要措施或举措

2.Spring-mvc框架结构及执行流程

Spring mvc架构及执行流程一、请求处理流程图 二、执行流程说明 三、组件说明

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc 的三大组件。 需要用户编写的组件有handler、view 四、Spring MVC配置 1、组件扫描器:使用组件扫描器省去在spring容器配置每个controller类,使用 自动扫描标记@controller的配置如下:

2、RequestMappingHandlerMapping:注解处理器映射器,对类中标记@RequestMapping 的方法进行映射,根据RequestMapping定义的url匹配RequestMapping标记的方 法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装 注解描述: @RequestMapping:定义请求url到处理器功能方法的映射 3、RequestMappingHandlerAdapter:注解式处理器适配器,对标记@RequestMapping 的方法进行适配。 从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用 4、:spring mvc 使用自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可用在spring-mvc.xml 配置文件总使用替代注解处理器和适配器的配置。 5、视图解析器 InternalResourceViewResolver:支持JSP视图解析 viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl 的相关jar 包。此属性可以不设置,默认为JstlView。 prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为:

毕业论文框架结构

论文框架 摘要,要写五分之四页左右。分为三段。 *@@首先,用三行左右描述课题的研究背景和实现意义。 *@@接着,介绍你想设计一个什么样的系统,有哪些功能,最后完成的系统是什么样的,有哪些功能,是先后带来的好处。 *@@最后,用四五行介绍你这个系统是在什么框架结构下开发的,用到了什么技术,什么开发平台,用到了那些软件来实现的,不同软件完成那些部分的功能 关键字;四到五个 第一章绪论,用不低于五分之四页不多于一页去介绍你的系统开发背景和意义。分两到三段。*@@首先介绍系统在什么背景下开发的 *@@开发的意义是什么 *@@你要开发出来一个什么样的系统,包含大致的功能。 *@@再用一到两页去介绍你的课题的开发目的,开发内容,技术路线 *@@用半页左右介绍你的论文结构安排和提纲。 第二章开发工具介绍,介绍开发过程中用到的各种框架,技术,软件。 *@@先介绍框架,技术这类虚的,再介绍开发平台,所使用的软件这些具体的东西。第二顺序是先介绍重要的,宏观的东西,再介绍次要的,局部用的东西。 *@@开发过程中用到的主要软件都要进行介绍,每种软件介绍(除图表外)不超过一页,过于复杂的可以多一些。图表要清晰,有具体文字说明。 第三章需求分析可行性分析按照软件工程的要求写这一章, *@@先介绍可行性分析,什么是可行性分析,有什么作用,你都进行了哪些可行性分析 *@@再写需求分析,什么事需求分析,为什么要进行需求分析,进行了哪些需求分析 第四章系统设计介绍你的系统是如何设计的, 首先是结构设计,然后是数据库设计 *@@结构设计时你的软件功能结构是什么样的,宏观的先描述一下,配上系统总的结构框图 *@@然后对每一部分的功能进行详细分条描述,配上该部分的结构框图,注意介绍次序,按照一定规律介绍,不要混乱。在这部分介绍里可以通过用例图来说明用户功能。 *@@接着是数据库设计,先介绍数据库设计的重要性,和你对数据库的需求。然后进行概念设计,先介绍系统中有哪些实体,用实体属性图配合介绍,要有文字说明,然后用ER图描述实体之间的关系,要有文字说明,接着用带有文字说明的数据流图介绍系统数据处理过程。 *@@接着进行数据库的物理设计,介绍你用什么软件建立了一个什么样的数据库,数据库中有哪些表,都存储什么东西,然后对每张表进行详细介绍,该表存储什么信息,有哪些字段,有什么约束。 第五章系统实现本章要详细介绍你的系统的每一个细节。 顺序是,先从主页开始介绍,然后再介绍每一个部分。 在介绍的时候,要以用户为主线,先介绍一个用户的所有功能,全部介绍完了再介绍另外一个用户的全部功能。 每个功能介绍的格式是首先四五行对这个功能进行文字描述,然后是截图,然后粘代码,代码要有注释,要粘贴功能代码而不是页面的格式代码。一些重复的功能操作可以不粘贴代码。第六章测试 *@@先用一页半左右介绍测试的原理,有哪些测试,测试的重要性等内容

论文框架结构

论文框架结构 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】

论文框架结构 特别说明:以下的框架只是普遍意义的写作思路,各位同学在写作时,可以按照此框架整理自己的思路,具体拟订写作提纲时,应根据实际情况进行增减和调整,不一定完全按照此框架写。 对于不同类型的选题,论文的框架各有不同,一般而言,电大论文选题可以分为三种类型。 第一种类型:以研究企业现存问题为主,对存在问题提出改进建议的选题。重点写存在的问题接解决措施。 在文章的开头应该有300-600字左右的引言,引出所研究的内容, 对于问题型研究主题,主要内容的展开可以参考以下分析框架: 一、理论概述 (一) (二) ······ 二、提出问题(研究对象的特点、重要性、必要性) (一) (二) (三) ······· 三、现状描述(现状,现存主要问题) (一) (二) (三) ······· 四、问题分析(原因分析、成因分析) (一) (二) (三) ·······

五、解决问题(解决措施、改进建议、应注意的问题) (一) (二) (三) ······· 六、小结(结论) 第二种类型:某一种管理方式在某企业中的应用,如“电子商务在XX企业中应用研究”。重点写实施过程中面临的主要问题及解决方案 在文章的开头应该有300-600字左右的引言,引出所研究的内容, 对于问题型研究主题,主要内容的展开可以参考以下分析框架: 一、理论概述 (一) (二) ······ 二、研究对象的必要性 (一) (二) (三) ······· 三、推行的主要措施 (一) (二) (三) ······· 四、推行过程中面临的主要问题 (一) (二) (三) ······· 五、解决措施、保障措施或进一步注意的问题

springmvc原理

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。 为什么要使用Spring: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用AOP后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straightconstruction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC容器。Spring 最好的地方是它有助于您替换对象。有了Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 Spring 框架是一个分层架构,由7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式,如图 1 所示。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP。Spring AOP

学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。 Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等); √提供强大的约定大于配置的契约式编程支持; √能简单的进行Web层的单元测试; √支持灵活的URL到页面控制器的映射; √非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); √非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; √提供一套强大的JSP标签库,简化JSP开发; √支持灵活的本地化、主题等解析; √更加简单的异常处理; √对静态资源的支持; √支持Restful风格。 2.3、Spring Web MVC架构

spring MVC配置详解

牧涛 --<-<-<@态度决定一切→_→。。。 ?博客园 ?首页 ?新闻 ?新随笔 ?联系 ?管理 ?订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib -nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、a ntlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.G A.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar 包 SpringMVC是一个基于DispatcherServlet(分发器)的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。 DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherSe rvlet的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。 spring org.springframework.web.servlet.DispatcherServlet< /servlet-class>