- 浏览: 303115 次
最新评论
-
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
nucleus:
为什么都是没有图的。。。。。。。求图片啊
《研磨struts2》第七章 值栈和OGNL 之 7.4 ActionContext和ServletActionContext -
hunanjun000:
《研磨struts2》第四章 Action 之 4.5 Action的其它重要知识
文章列表
17.3 更强大的tokenSession拦截器
回顾一下上面<s:token/>标签和token拦截器连用,解决了重复提交问题,用法极其简单:Action引用token拦截器,<s:form/>标签内加一个<s:token/>标签,两句话就足以概括,一分钟就足以做完。
但是结果稍稍有点遗憾:对于一次正常提交和一次重复提交,使用token拦截器会使得浏览器最终重定向到invalid.token指定的Result。那么,有没有更好的办法可以让“重复提交”看起来好像没有发生过,浏览器最终跳转到正常提交指定的Result呢?
当然有,而 ...
17.2 使用<s:token/>标签
17.2.1 使用<s:token/>标签入门
Token也被称做令牌,所以使用<s:token/>标签防止重复提交,也常被称做使用令牌防止重复提交。
1:修改页面
<s:token/>标签的使用非常简单,只需要在提交页面的<s:form>标签内加上子标签<s:token/>就可以了。
如果把提交页面当做重复提交时返回的结果页面的话,通常还需要在这个页面上引用重复提交时的错误信息。重复提交的错误信息以动作错误信息的方式存在,所以我们只要用<s ...
17.1 什么是重复提交
所谓重复提交,就是用户在页面多次点击提交按钮,或者通过不断刷新页面,把已经提交过的数据多次向后台提交。
重复提交对于查询类的功能,问题还不是太大,但是对于新增或是修改类的功能,就有可能凭空的出现很多同样信息的重复数据,从而导致业务功能出现错误。
用一个实例来让大家体会一下重复提交的问题,来实现一个订单新增的功能,订单号一般都是由后台自动生成,前台页面只要传递订购人、订购商品和订购数量等订单的具体信息过来就可以了。为了示例的简洁,只是从前台传递一个订购的商品和一个订购的数量,一共两个值就可以了,就不去处理什么订单的主记录、子记录等复杂的功能了。
1:实现 ...
《研磨struts2》 前言
《研磨struts2》 第一章 Struts2概述 之 MVC模式
《研磨struts2》 第一章 Struts2概述 之 Struts2基础
《研磨struts2》 第一章 Struts2概述 之 Struts2和MVC
《研磨struts2》 第二章 Struts2的HelloWorld 之 概述
《研磨struts2》 ...
16.3 测试完整的Struts2运行流程
16.3.1概述
在上面单元测试动作类Action中,基本上是把Struts2的Action类当作一个普通的Java类来进行测试,就没有涉及到Struts2的其他部分,也没有涉及到完整的Struts2的运行流程,比如:拦截器、验证框架、Result等等。
回忆一下Struts2的运行流程图,如果想运行对应的拦截器的话,就不能直接运行Action对象,而是要在ActionProxy对象上下手,这样才能根据struts.xml中的内容,装配上对应的拦截器,并模拟Strus2的真实运行过程。
这也说明,要想测试完整的Struts2的运行流 ...
16.2 测试动作类Action
16.2.1测试动作类Action入门
通过前面的学习已经了解到:Struts2的动作类Action,可以做到完全和web无关,不再依赖HttpServletRequest和HttpServletResponse等servlet的Api,因此,可以非常方便的直接在java application中调用和运行。
来写一个Action,它没有什么特殊的功能,只是接收一个UserModel对象,判断这个对象的name属性,如果等于struts2则整个Action跳转到名为success的Result,否则跳转到名为error的Resu ...
16.1 概述
测试是软件项目开发过程中非常重要的一环,大家耳熟能详的一些软件工程的理论,比如极限编程(XP),测试驱动开发(Test Driven Develop)等等,都特别强调了测试的重要性。测试又分为很多种:单元测试、集成测试、回归测试、性能测试、压力测试等等。
对于程序人员来说,最起码要负责单元测试的工作,程序人员写好了自己所负责部分的代码,在交出代码之前一定要进行单元测试,以保证自己的代码是正确的。
接下来,就来看看Struts2对单元测试的支持。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum ...
15.3 自动装配
15.3.1自动装配
Spring支持自动装配的方式,也就是如果等待注入的对象所提供的属性,与Spring的配置中已经存在的Bean的定义之间有某种关联的话,就可以不用写<property>元素来手工实现依赖注入的装配了,而是改由Spring来自动装配。
Spring支持多种自动装配的策略:
byName:根据对象的属性名称来自动装配。简单点说,就是在Spring的配置中,按照对象属性的名称作为Bean的name来寻找定义的Bean,并自动装配。
byType:根据对象属性的类型作为Bean的类型来寻找定义的Bean,并自动装配。
c ...
15.2 整合Spring与Struts2
15.2.1概述
以上面的示例来说明整合Spring和Struts2的基本方式:
SampleAction与SampleService的生命周期和依赖关系都由Spring去管理。
Struts2需要SampleAction实例的时候,不是自己新建实例,而是向Spring去请求获取一个实例,也就是SampleAction实例的生命周期也由Spring来管理
接下来就来具体看看怎么整合Spring与Struts2。
15.2.2拷入jar包
要整合Spring和Struts2,需要先要拷入Spring需要的jar包, ...
15.1 概述
15.1.1应用程序的分层
在前面学习了Struts2中的各个核心技术和多种组件,但是,在真正做项目的时候,Struts2只是帮我们处理Web层的日常任务和常见问题,那么,其他的部分呢?
在实际项目开发的时候,通常把程序划分成很多层次,也就是分层开发,比如大家熟悉的三层开发:表现层、逻辑层、数据层,它们的职责分别是:
表现层:展示数据、人机交互、收集参数并调用逻辑层
逻辑层:进行数据的逻辑校验、进行逻辑判断、实现业务功能、处理相关功能、处理后续流程、组织数据返回给表现层等
数据层:实现数据持久化、实现对象和持久化数据的双向映射等
...
14.4 使用JSON插件
14.4.1 JSON基础
JSON(JavaScript Object Natation),它是一种轻量级、基于文本、语言无关的数据交换格式,类似于XML,是一种结构化数据串行化的文本格式,常常用于服务器与JavaScript之间的数据交换上。
...
14.3 Ajax JSP tags
14.3.1概述
为了使开发Ajax变得轻松惬意,Struts2提供了一些JSP Tags,通过这些自定义的标签库,使得开发人员无需掌握额外的知识即可开发Ajax的应用。
从Struts2.1开始,不再推荐使用Dojo的Plugin,而是改 ...
14.2 Struts2对Ajax的支持
14.2.1概述
Struts2对Ajax提供了非常好的支持,不但功能强劲,而且简单易用。
Struts2并没有自行开发新的Ajax框架,而是使用了目前比较流行的Ajax框架——Dojo和DWR,在他们的基础之上实现了很多常见的功能。同时,Struts2也可以通过插件的形式来使用JSON,从而使得Ajax的实现更加灵活方便。
看到这里,可能有些朋友会说:“Dojo和DWR都不会,这可怎么办?”。事实上,Struts2早替大家想好了,不需要大家直接去使用Dojo和DWR,而是直接使用Struts2提供的Aja ...
14.1 Ajax基础
14.1.1 Ajax概述
Ajax(Asynchronous JavaScript And XML)技术,通常翻译成“异步JavaScript和xml”,它能让应用程序以异步的方式连接到服务器,等待服务器处理后获取返回值,从而实现无需刷新页面就可以与后台通讯的方式。
Ajax技术其实是一个非常老的技术,2000年左右就已经有了,只不过一直没有得到重视,直到Google把这个技术应用到Gmail和Google Maps里面,其异步的功能特性迅速走红,从而引起业界广泛的关注,得到更多的应用。到了web2.0的时代,Ajax成为了web2.0的 ...
13.2 文件下载
13.2.1概述
前面学习了文件上传的实现,接下来看看如何实现文件下载的功能。实现文件下载功能的方式也很多,这里只具体看看如何使用Struts2来实现文件下载。
使用Struts2来实现文件下载,会用到它的stream类型的Result,这种Result最终会返回一个InputStream,只需要让这个InputStream能读到用户想要下载的文件即可。
13.2.2 stream结果类型
先来回忆一下stream的结果类型出现在struts-default.xml中的配置,示例如下:
java代码: