`
文章列表
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代码:
Global site tag (gtag.js) - Google Analytics