02 2009 档案
摘要: 要想使用struts,至少要依靠两个配置文件:web.xml和struts-config.xml。其中web.xml用来安装struts框架。而struts-config.xml用来配置在struts框架中要使用的资源。如formbean、action、插件等。如果使用了某些插件,如validator、tiles等。还可能需要其他的配置文件。虽然在前面的文章中已多次使用了这两个配置文件,但都是分散介绍的。因此,在本文将对这些配置进行一下总结和回顾,以使读者对struts的配置有一个更清醒的认识。
摘要: tiles提供的模板机制可以最大限度地避免重复编写代码。实际上,tiles模板就是的jsp页面,只是在这种jsp页面中使用tiles标签代替确定不了的内容(相当于占位符),也就是需要在开发人员使用模板时来确定的内容。除了这一点,tiles模板页面和普通的jsp页面完全相同。
摘要: 在jsp标签文件中使用struts 2标签会带来一个问题。由于高版本的struts 2的标签属性值默认情况下不能为el或jsp表达式,当然,可以通过修改struts 2默认设置来解决这个问题,但并不建议这么做。除此之外,可以通过标签将参数值保存在valuestack对象中,在jsp标签文件中通过ognl表达式读取。
摘要: tiles框架是struts的一个插件。我们可以使用tiles框架来进行页面布局设计。tiles框架提供了一种模板机制,它可以将网页内容和布局分离,并允许先创建模板,然后在页面中再插入具体的内容。
摘要: 与lookupdispatchaction、dispatchaction不同,mappingdispatchaction类并不通过请求参数来指定动作,而是将一个struts动作对应于一个action方法。下面的例子演示了如何使用mappingdispatchaction类来将struts 动作和action方法相对应。
摘要: 虽然lookupdispatchaction类可以很好地处理拥有多个提交按钮的form,但是必须要和属性文件相关联,而且还得在getkeymethodmap方法中进行key和action方法的映射,使用起来十分不方便。从struts1.2.9开始,加入了另一个用于处理多个提交动作的eventdispatchaction类。这个类也是dispatchaction的子类,它在使用上要比lookupdispatchaction类容易的多。eventdispatchaction类的基本原理是通过
元素的parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就是标签的property属性值。这样eventdispatchaction类就可以根据每个标签的属性值来确定用户按的是哪个提交按钮了。
摘要: 有时在html form中需要提供多个提交按钮,这时lookupdispatchaction类就派上用场了。lookupdispatchaction是dispatchaction的子类,用于处理客户端代码中有一个form含有多个提交按钮的情况。
摘要: 有时我们需要将聚合结果进行旋转,也就是说将要聚合的字段值作为字段名,将聚合结果作为记录。这可以使用传统的方法来解决,但在sql server2005提供了pivot函数可以更容易地解决这个问题。同时,还可以使用unpivot函数进行逆项的操作。
摘要: 在使用struts动作时,每一个action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多action的web程序来说,工作量是非常大的。为此,struts提供了dispatchaction类,这个类允许将一个action作为一个方法来调用。在web浏览器中通过请求参数来指定要调用的动作。
摘要: 上一篇文章提到了电子书营销的一些简要概括。今天早上打开csdn,看到网友newton0214提出的问题如下。“你这好像有个前提:你发布的电子书能有“开站几个月、发布三十本电子书后就获得了几十万的下载率”的能力,不是任何资料都能有这样的效果的。就好象csdn上的资料,就算是同样热门的内容,不是所有资料都会有很高的下载率的。”
摘要: 在本文介绍了如何使用includeaction和forwardaction类包含和转入web资源。这两个类与和标签的功能相同,但struts建议使用这两个类来实现包含和转入web资源的功能。
摘要: 我们曾经在《struts1.x系列教程(13):国际化》一文中讲过如何通过编程的方式实现多语言的web页面。在本文中,我们会介绍另外一种实现多语言web页面的方法。这种方式与《struts1.x系列教程(13):国际化》一文中所介绍的方法的区别就是无需编写一行代码就可以完成多语言的设置。
摘要: 在写这一部分之前,首先感谢我的blog的所有读者对前面seo文章的支持。写完那篇文章后,有很多朋友加我的msn,询问相关seo的技术和经验问题。因此,在这个系列的文章结束后,我会专门写一些关于seo的文章,也希望大家能继续支持。不过现在,还是请允许我把这个“花钱最少的推广方式”写完吧!
摘要: 除了标准的org.apache.struts.action.action类外,在struts中还提供了另外7个action类来完成特殊的工作。本文及后面的文章中将介绍这些action类的用法。
摘要: 在axis2中提供了一个axis2模块(soapmonitor),该模块实现了与《webservice大讲堂之axis2(9):编写axis2模块(module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将soap请求与响应消息输出到tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出soap请求和响应消息。
摘要: 虽然actionform功能强大,但有些时候使用起来有些麻烦。如每建立一个用户录入界面(jsp页面),就得建立一个actionform子类来和这个页面对应。当然,我们可以采用嵌套属性从一定程度上弥补这个问题。但是在建立新的用户录入界面时,仍不可避免地要建立新的actionform子类。在struts1.2.6及以后的struts版本中提供了一种动态form的技术。使得不用再建立新的actionform就可以封装用户提交的数据。实际上,这种技术将定义actionform子类的工作变成了编写xml文件的工作。
摘要: 对于一个面向全球的web应用程序,按着不同国家的要求显示相关信息(称为国际化)显得尤为重要。国际化的工作非常复杂和繁琐。因为要翻译很多web界面,信息格式等。然而,struts为我们提供了完成国际化工作的更容易的方式。在本文将介绍如何使用struts来简化国际化的工作。
摘要: axis2可以通过模块(module)进行扩展。axis2模块至少需要有两个类,这两个类分别实现了module和handler接口。开发和使用一个axis2模块的步骤如下:
1. 编写实现module接口的类。axis2模块在进行初始化、销毁等动作时会调用该类中相应的方法)。
2. 编写实现handler接口的类。该类是axis2模块的业务处理类。
3. 编写module.xml文件。该文件放在meta-inf目录中,用于配置axis2模块。
4. 在axis2.xml文件中配置axis2模块。
5. 在services.xml文件中配置axis2模块。每一个axis2模块都需要使用元素引用才能使用。
6. 发布axis2模块。需要使用jar命令将axis2模块压缩成.mar包(文件扩展名必须是.mar),然后将.mar文件放在\webapps\axis2\web-inf\modules目录中。
摘要: 本文介绍了struts 1.x validator验证框架的内置标准验证。
摘要: 在一文中给出的例子中的name、age和email都是简单的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以使用圆点(.)符号来访问。如我们可以通过设置元素的property属性值为“employee.salary”来验证employee属性中的salary属性。
摘要: 在前面几篇文章中都是使用同步方式来调用webservice。也就是说,如果被调用的webservice方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用webservice虽然很直观,但当webservice方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问webservice的任务交由一个或多个线程来完成,而主线程并不负责访问webservice。这样即使被访问的webservice方法长时间不返回,客户端仍然可以做其他的工作。我们可以管这种通过多线程访问webservice的方式称为异步访问。虽然直接使用多线程可以很好地解决这个问题,但比较麻烦。幸好axis2的客户端提供了异步访问webservice的功能。
摘要: 在现今的web应用中经常使用spring框架来装载javabean。如果要想将某些在spring中装配的javabean发布成webservice,使用axis2的spring感知功能是非常容易做到的。在本文的例子中,除了\webapps\axis2目录及该目录中的相关库外,还需要spring框架中的spring.jar文件,将该文件复制到\webapps\axis2\web-inf\lib目录中。
摘要: validator框架是一个struts插件,最初由david winterfeldt设计并实现。validator框架从struts 0.5时代就可以使用,但那时validator框架只是被捐助的一个jar包。apache组织为了使开发人员更方便地使用validator框架,决定从struts1.1开始,将validator框架作为struts的一部分同struts一起发布。
摘要: 众所周知,strut 2的action类通过属性可以获得所有相关的值,如请求参数、action配置参数、向其他action传递属性值(通过chain结果)等等。要获得这些参数值,我们要做的唯一一件事就是在action类中声明与参数同名的属性,在struts 2调用action类的action方法(默认是execute方法)之前,就会为相应的action属性赋值。这一切主要是依靠valuestack对象实现的。
摘要: 记得2005年的时候安装的还是redhat9,时光如水,自己却在转了一圈以后回到了原地,很多时候确实需要执着。说远了,估计还是有很多人跟我一样郁闷fedora的硬盘安装的,google上的很多不一定可以在自己本机安装成功。我的这个在我机器上ok了但不一定所有的都可以按照我这样,下面来详细说明:下载fedora-10-x86_64-dvd.iso 。google一下,到fedora项目网站可以下载,按照自己机器的需要选择。下载grub4dos-0.4.3。同样,google一下,很容易得到。
摘要: 本文为银河系列原创技术文章,主要包括struts 2入门系列教程、struts1.x入门与提高系列教程、webservice大讲堂之axis2系列教程、weblogic10 ejb3入门教程、jboss5 eclipse ejb3开发指南、 ajax系列教程、sql server2005杂谈系列教程、算法系列教程。这些文章均为笔者经验总结,有的系列文章还未完成,待不断完善中...
摘要: 在本文主要介绍如何来开发一个stateless session bean,并在未安装weblogic10的机器上访问session bean。开发ejb3 stateless session bean要比开发ejb2 stateless session bean容易得多,只需要几个注释就可以搞定。
摘要: 勇气 自信 毅力 胸怀 = success
摘要: applet运行在沙盒中,因此,对于不了解签名的开发人员,使用applet来访问本地资源被认为是“不可能完成的任务”,然而,我们可以使用keytool、jarsigner命令对jar文件进行签名,这样applet就可以在客户端随心所欲了,当然,这和ocx控件一样,也需要客户端进行确认。
摘要: 经笔者测试,struts2.1.6并不与struts2.0.14完全兼容,如在struts2.1.6中还需要一个commons-fileupload-1.2.1.jar文件才能正常使用,而在struts2.0.14中并不需要这个文件。struts2.1.6至少需要6个jar文件才能正常工作,这6个jar文件是:struts2-core-2.1.6.jar、freemarker-2.3.13.jar、commons-logging-1.0.4.jar、ognl-2.6.11.jar、xwork-2.1.2.jar、commons-fileupload-1.2.1.jar。
摘要: 本文介绍了sql server2005提供的四个排名函数(row_number、rank、dense_rank和ntile),其中row_number函数最常用,可以使用这个函数实现web分页功能。rank和dense_rank函数可以处理字段重复值问题。而ntile函数用于对记录进行分组处理。
摘要: 在《webservice大讲堂之axis2(5):会话(session)管理》一文中介绍了如何使用axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个webservice服务,例如,至少会有一个管理用户的webservice(用户登录和注册)以及处理业务的webservice。象这种情况,就必须在多个webservice服务之间共享会话状态,也称为跨服务会话(session)管理。实现跨服务会话管理与实现同一个服务的会话管理的步骤类似,但仍然有一些差别,实现跨服务会话管理的步骤如下:
实现跨服务的session管理需要如下三步:
1. 使用messagecontext和servicegroupcontext获得与设置key-value对。
2. 为要进行session管理的webservice类所对应的元素添加一个scope属性,并将该属性值设为application。
3. 在客户端使用setmanagesession(true)打开session管理功能。
摘要: cte不仅可以简化嵌套sql语句,还可以方便地实现递归调用。如要查询一个部门下面的所有子部门,或某个省下面的所有市和行政区,只需要一个cte就可以查出来。当然,如果不使用cte,实现这个是比较麻烦的,如果只想用sql实现,需要使用到游标等技术。