课件V3.0-Struts2-4.ppt

上传人:可**** 文档编号:77553817 上传时间:2023-03-15 格式:PPT 页数:32 大小:2.35MB
返回 下载 相关 举报
课件V3.0-Struts2-4.ppt_第1页
第1页 / 共32页
课件V3.0-Struts2-4.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《课件V3.0-Struts2-4.ppt》由会员分享,可在线阅读,更多相关《课件V3.0-Struts2-4.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 http:/www.sz-tz.orgAjaxSSH整合第四章 文件上传Token令牌机制2 http:/www.sz-tz.orgOverview作为一个容器,Spring可以在 web 环境下使用,此时调用容器的通常是Java Web组件(Servlet、Filter和Listener等)。Web容器(Tomcat)ServletFilterListenerApplicationContextSpring容器第四章 3 http:/www.sz-tz.org需要解决的问题在web组件中使用Spring必须要解决的2个问题:n如何初始化Spring容器?Spring容器本身也是对象,需要

2、使用Spring 框架的功能,必须先实例化容器。n如何获取Spring容器对象?容器对象实例化后,需要和web项目之间建立一种引用或关联,以便后续的方法调用。第四章 4 http:/www.sz-tz.org思路:1.由于Spring容器需要一定的时间进行初始化,因此不可能在服务器端接受到请求后再实例化容器,最好在启动项目时就实例化容器。2.在整个项目运行期间,只要一个Spring容器即可,因此容器本身应该处于单例状态。实现:1.写一个ServletContextListener实现类,监听项目的启动事件。当项目启动后立即实例化Spring容器。2.在Spring容器实例化后,存入applic

3、ation作用域,整个项目共享一个Spring容器,相当于处于项目级别的“单例”。思路和实现第四章 5 http:/www.sz-tz.orgWhat is SSHSSH=Struts+Spring+Hibernate是一个受欢迎的框架组合,通常被软件企业作为开发java web项目的主要选择之一。无论Struts1或Struts2,都可以叫做SSH。第四章 6 http:/www.sz-tz.orgWhy SSH三个框架分工明确,关注点不同,nHibernate:一个优秀的ORM框架,封装了JDBC代码,简化数据访问层(Dao)的操作。nStruts2:标准的MVC框架,提供对控制层、模型层

4、、视图层的高效率快发。nSpring:提供依赖注入,aop,以及声明式事务.三个框架整合,可以最大程度发挥框架的优势,使得项目结构高度优化.第四章 7 http:/www.sz-tz.orgby Who SSH框架的整合,不是简单的将Struts+Spring+Hibernate三个框架的jar包放一起就可用的,需要根据三个框架版本,视项目需求决定所使用的jar包,然后确定jar包依赖树中没有jar包冲突或其他依赖相关问题。在实际开发中,通常由架构师或项目经理负责SSH框架的搭建。依赖树的结构可能是错综复杂的第四章 8 http:/www.sz-tz.orgWhen(Where)SSHn需求确

5、定时需求决定技术,技术决定框架。因此当需求明确时,框架也就可以确定了。使用SSH框架开发一个中大型的基于MVC的瘦客户端(thin client)java web项目,可以高效开发,可单元测试,扩展性良好。n需求不确定时如果开发一个java web项目,不知道选择哪种框架组合。那么可以先选择SSH框架,进行高效开发。待项目开发尾声,再考虑后续的改良方案,比如:基于已确定的数据库模型,使用MyBatis半自动ORM框架进行性能优化。第四章 9 http:/www.sz-tz.orgHowHibernate是 java 项目,Spring 也是 java 项目.Struts2是一个web 项目.三

6、个框架整合=一个 web 项目.SSH的整合分为两步:将 Hibernate 整合到 Spring 中.将 Struts2 和 Spring 整合。SpringHibernate(Java项目)Struts2(Web项目)第四章 10 http:/www.sz-tz.orgHibernate+Spring将SessionFactory作为Bean配置在Spring容器中第四章 11 http:/www.sz-tz.orgStruts2Struts2是一个基于MVC的Web框架,它使用Filter作为前端控制器,将请求的解析任务分发到Action对象中,并由Action调用系统的业务组件。Web

7、容器(Tomcat)FilterDispatcherAction业务组件拦截器、验证机制等细节已省略第四章 12 http:/www.sz-tz.orgStruts2+SpringStruts2和Spring整合,有两种方式:方式一:Struts2管理Action类,Spring管理业务组件,业务组件依赖注入到Action类。方式二:Action类和业务组件都由Spring管理,Struts2过滤器分配请求给Action类。Web容器FilterDispatcherActionStruts2业务组件Spring依赖注入依赖注入Web容器FilterDispatcherStruts2业务组件Sp

8、ringAction(配置简单,推荐初学者使用)(可选)第四章 13 http:/www.sz-tz.orgContextLoaderListener实际项目开发,ServletContextListener无需自行实现。在spring-web-*.jar中,已提供了org.springframework.web.context.ContextLoaderListener(已实现了javax.servlet.ServletContextListener接口),它可以在Web应用启动的时候初始化Spring容器,我们需要在应用的web.xml中对其进行配置。需设置Spring配置文件的路径第四章

9、 14 http:/www.sz-tz.orgWebApplicationContextSpring准备一个WebApplicationContext类型,它是继承ApplicationContext接口,其中提供了基于web应用的附加支持。该对象由ContextLoaderListener加载Spring配置文件之后创建,并存入项目的application作用域中。当需要使用spring容器时,调用WebApplicationContextUtils工具类的静态方法即可。第四章 15 http:/www.sz-tz.orgIntrospectorCleanupListenerListener

10、 that flushes the JDKs JavaBeans Introspector cache on web app shutdown.Register this listener in your web.xml to guarantee proper release of the web application class loader and its loaded classes.If the JavaBeans Introspector has been used to analyze application classes,the system-level Introspect

11、or cache will hold a hard reference to those classes.Consequently,those classes and the web application class loader will not be garbage-collected on web app shutdown!This listener performs proper cleanup,to allow for garbage collection to take effect.Unfortunately,the only way to clean up the Intro

12、spector is to flush the entire cache,as there is no way to specifically determine the applications classes referenced there.This will remove cached introspection results for all other applications in the server too.Note that this listener is not necessary when using Springs beans infrastructure with

13、in the application,as Springs own introspection results cache will immediately flush an analyzed class from the JavaBeans Introspector cache and only hold a cache within the applications own ClassLoader.Although Spring itself does not create JDK Introspector leaks,note that this listener should neve

14、rtheless be used in scenarios where the Spring framework classes themselves reside in a common ClassLoader(such as the system ClassLoader).In such a scenario,this listener will properly clean up Springs introspection cache.Application classes hardly ever need to use the JavaBeans Introspector direct

15、ly,so are normally not the cause of Introspector resource leaks.Rather,many libraries and frameworks do not clean up the Introspector:e.g.Struts and Quartz.Note that a single such Introspector leak will cause the entire web app class loader to not get garbage collected!This has the consequence that

16、you will see all the applications static class resources(like singletons)around after web app shutdown,which is not the fault of those classes!This listener should be registered as the first one in web.xml,before any application listeners such as Springs ContextLoaderListener.This allows the listene

17、r to take full effect at the right time of the lifecycle.在web项目关闭时清空cache,避免内存泄露。Spring之外的其他技术不会清除cache.此监听器需要配置在ContextLoaderListener之前第四章 16 http:/www.sz-tz.orgIntrospectorCleanupListenerIntrospectorCleanupListener监听器需要配置在ContextLoaderListener之前。第四章 17 http:/www.sz-tz.org实现方式一将业务组件自动注入到Struts2的Act

18、ion中的方法:配置Struts2的struts2-spring-plugin-*.jar,在Action对象被创建时使用自动装配特性为其注入业务组件对象。FilterDispatcherStruts2Action2请求1请求2请求NAction1ActionN业务组件依赖注入依赖注入Spring依赖注入依赖注入依赖注入依赖注入业务组件处于单例模式每次请求到达时,都会实例化Action类第四章 18 http:/www.sz-tz.org实现方式二让Spring管理Action类并处于原型模式,每次请求到达后,由Spring创建Action实例,完成业务组件的注入后,交给Struts2进行方法

19、调用。相当于Spring的容器功能被“放大”了。FilterDispatcherStruts2请求1请求2请求N业务组件SpringActionNAction2Action1依赖注入依赖注入业务组件处于单例模式控制器组件处于原型模式第四章 19 http:/www.sz-tz.org让Spring管理Action类配置使用Spring管理ActionClass属性写的是Bean id第四章 20 http:/www.sz-tz.orgSSH架构图web.xmlstruts.xml主过滤器依赖注入对象创建Action数据源SessionFactory事务管理器ServiceDaoDataBase

20、面向切面编程Struts2SpringHibernate第四章 21 http:/www.sz-tz.orgAjaxAsynchronized JavaScript And XML异步的 JavaScript 和 XML从本质上说,ajax不是一个新技术,而是两个技术的结合。实际项目中n使用javascript框架来替代原生js,比如:Jquery,ExtJsn使用Json来替代xml。第四章 22 http:/www.sz-tz.org同步和异步的区别n同步:提交请求等待服务器处理处理完毕返回 这个期间客户端浏览器不能干任何事,页面必须要刷新一次。n异步:请求通过事件触发服务器处理(这是浏览

21、器仍然可以作其他事情)处理完毕,页面无需刷新。比如:两个人打电话时同步,两个人发消息是异步。区别:1.用户体验:同步较差,异步较好;2.请求中交互数据量:同步大于异步;同步请求,response内容是页面本身;异步请求,response 可以是一小段页面或一段XML/Json数据。第四章 23 http:/www.sz-tz.orgJqueryJquery 是一个轻量级的JavaScript API框架,写得更少,做的更多(Write less,Do more)。操作原则:1.拿到什么?根据选择器,拿到页面上的各种标签元素/节点。选择器语法和CSS选择器是一致的,比如:a)根据id取元素:#i

22、db)根据class取元素:.classNamec)根据标签名:p、a、td2.做什么?调用Jquery的各种API,对于常用的方法,无参即get,有参即set。第四章 24 http:/www.sz-tz.orgJSONJavaScript Object Notation,即JavaScript对象标记语言。设计初期仅提供js的对象描述和调用,但由于设计良好,目前被广泛地使用在各种开发语言。仅使用4种标记,来表示世界上所有抽象数据类型:n 表示对象n:表示键值对/属性名属性值n,表示并列关系n 表示集合/数组在网络中传输数据时,普遍使用Json格式,原因:在相同的数据量下,Json比xml更

23、轻量级.第四章 25 http:/www.sz-tz.orgJquery Ajax模板$(选择器).事件(function()$.ajax(/请求路径url:,/请求类型type:post,/数据格式dataType:“json,/请求超时时间timeout:1000,/提交的数据data:user.name:username,/处理错误error:function(),/处理成功success:function(result););第四章 26 http:/www.sz-tz.orgBS第四章 requestresponse准备action资源1Ajax编程2触发事件,发出请求,使用fire

24、bug查看请求参数是否正确3action接受参数,输出到控制台4调用业务接口,准备返回json对象5将json对象写入response6接受响应json对象,做相应处理7ajax开发流程Ajax编程也是以B/S架构为基础,可以参考以下流程:27 http:/www.sz-tz.org文件上传Struts2框架使用commons-fileupload-*.jar封装了文件上传操作,并由defaultStack中的fileUpload拦截器来将文件设置到Action类的java.io.File中,简化开发步骤。拦截器栈拦截器栈fileUpload拦截器Action请求Actionprivate j

25、ava.io.File uploadFile;commons-fileupload-*.jar文件文件第四章 28 http:/www.sz-tz.org文件上传流程处理流程:1.文件本身应随着form表单一并提交,而不应该只提交文件名;2.在action类中,声明一个java.io.File类型成员变量,来接收上传的文件;3.上传的文件被struts2框架保存在tomcat的work临时目录下。当方法体退出时,临时文件被自动删除;4.如果要获取上传的文件名,声明一个字符串成员变量,xxxFileName(xxx是写步骤2中的变量名)。第四章 29 http:/www.sz-tz.org如果要

26、避免表单被“重复提交”,可以使用token标签,原理如下:1.显示一个包含标签的页面,token拦截器产生一个随机号,存入session;返回的页面中也持有一份token。2.当该页面需要提交数据时,随机号随表单一起提交;token拦截器端收到随机号,和session中的随机号进行比对。a)如果比对一致,操作有效,消费token(将session随机号设为null);b)如果比对不一致,表示之前已提交过,操作无效。返回一个result:invalid.token页面Token拦截器tokentoken12HttpSessiontokenActionresult:invalid.tokena)b

27、)第四章 30 http:/www.sz-tz.orgToken使用步骤1.声明一个含有token拦截器的拦截器栈,以备action使用;2.在需要使用token机制的表单,增加标签即可;3.在对应的action标签中,增加拦截器栈的声明,以及一个result标签。第四章 31 http:/www.sz-tz.org本章小结n熟练掌握SSH整合原理和步骤n熟练掌握Ajax开发步骤n了解文件上传的处理步骤n了解token机制的处理步骤第四章 32 http:/www.sz-tz.org课后练习整合SSH框架(方式一:让struts2管理action类)并基于SSH完成以下页面:1.用户登录功能2.新增客户功能3.客户冲突功能 客户冲突结果,点击查看客户详情,联系人列表技术点(必须):BaseEntityBaseDao拦截器(用户登录验证)验证机制(新增客户页面)Ajax(新增客户页面,jquery+json)技术点(可选):文件上传token机制国际化(i18N)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁