- 在前面一篇 Struts2 中 ModelDriven Action 的 setModel() 为何不起作用? 中发现最漂亮的办法就是修改 ModelDrivern 的 refreshModelBeforeResult 属性为 true,同时留下一个话题。这里接着,即如何覆盖内置拦截器的属性(参数) 值。
如果是自定的拦截器,则可以在 struts.xml 中的 <interceptor> 或 <interceptor-ref> 中用 <param name="paramName">paramValue</param> 来指定参数。但是对于 struts2 核心包内置的或是第三方的拦截器的参数需要进行重新设置该如何呢?
比如在 struts2 包中的 struts-default.xml 中定义很多拦截器,通常我们使用的是其中组织好的 defaultStack 拦截器栈,看 struts-default.xml 中关键几行配置: Read More - 前有一文 iText 用 HTMLWorker 转换 HTML 为 PDF 时可设置表格列宽度 介绍了在 iText5.0.4 的基础上转换 html 为 pdf 时,如何让 table 中的单元格能支持宽度设定,并且还修改了三份源代码: HTMLWorker.java、IncCell.java 和 IncTable。也只是实现了以百分比形式来设定每列的相对宽度,现在好了,iText 顺理的发现了用户的这一需求,在进化后的 iText5.0.6 中可以让你设定 <td> 的宽度,可直接用百分比数值(20%)相对宽度,或用参照数值来设置,之后呢,HTMLWorker 会帮你转换为相对的宽度--比如有三列,分别设置为 20,10,50,被转换为相对宽度就是 25%,12.5% 和 62.5%。
看iText5.0.6 简短的 release 说明,iText5.0.6 has been released(http://lowagie.com/node/73): Read More - Struts2 对文件的上传和下载提供了很好的支持,上传时直接用 java.io.File 来接收,下载时也无需自己去设置相应的 Stream 响应头,它提供了 org.apache.struts2.dispatcher.StreamResult 给 Action 使用。它反映到 struts.xml 配置里就是type="stream" 的 result,由 result 去负责把文件内容写入响应中去。Action 的执行方法在 result 之前执行,所以你可以借此控制下载权限,本文也演示了如何判断文件是否存在,不存在则导向到 FileNotFound 页面。StreamResult 中有哪些相关的配置参数可以参考它的源代码: Read More
- 如今,构建网站和开发Web应用程序已经不仅要求开发人员是一名优秀的程序员,更需要聪明的程序员。这也就是说,在可能的情况下,重复使用已有的代 码和应用程序,而不是自己重头开始。开源由来已久,并且很多网站的构建也使用了开源。开发人员都知道Linux、Apache、MySQL及 PHP (LAMP)。 但是除那些之外的其他开源项目呢?作为一名Web开发人员,你可以借助诸多可用的项目,以节省开发时间,或提高程序性能。
下面让我们看一下哪些开源项目可供大家免费使用。
可供使用的新型数据库
传统上讲,你可能习惯使用MySQL。尽管MySQL是一个非常棒的数据库,但诸多试图解决MySQL存在的问题的新型数据库已经问世。 Read More - Hibernate 3 之后,formula(公式,Excel 里常见的) 得到了更广泛的应用,不过这里还是简单记录一下它在 <property> 中的应用。
假如我们要映射这么一个类:
package cc.unmi.model;
public class User {
private int id;
private String name;
Private Set<Order> orders = new HashSet<Order>();
//setter & getter ......
} Read More - 关于把 IP 地址转换为地理位置可以使用网络上很多的 API,好处就是不用在本地存储一个 IP 数据库,而且一般网络上的 IP 库会自动更新,不利的地方就是太依赖于网络,性能表现也可能会弱些。比如像下面的 API:
http://api.hostip.info/get_html.php?ip=58.63.236.31
http://api.hostip.info/flag.php?ip=58.63.236.31
这里介绍 PHP 如何使用 GeoLiteCity.dat 库把 IP 转换为地理位置,GeoLiteCity.dat 可以在 http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 下,解压出 GeoLiteCity.dat,即可,我们可以手动去更新新的 IP 库。
下面 PHP 解析 IP 的过程参考自 WordPress 插件 Visitor Maps and Who's Online 的实现。可以找到该插件的两个文件 include-whos-online-geoip.php 和 visitor-maps.php 告诉了我们怎么做。你可以点击这里的链接下载到这两个文件 Read More - 本文通过一个简单的例子,说明如何去扩展XML配置,它大致需要的几个步骤。具体的需求是使用自定义标签定义一个简单的bean,这个bean有一个或多个属性,标签定义完成后,可以在其他项目中用自定义标签来定义该bean。
Spring 2.0版本支持扩展XML配置,着实兴奋了一下,在我看来,Spring作为目前最流行的框架,不能扩展用户自定义的配置,实在是Spring的一个很不爽的地方,的方式用起来比较通用,起码到目前为止符合大部分人的使用习惯,并且能完成Spring所有的配置操作,但是对于第三方的提供商或则会经常扩展Spring功能的开发者来说,使用这样的配置方式或许不是他们最想要的,他们需要使组件的配置更加直观、易阅读、易扩展……试想使用下面的配置方式。 Read More - 现在越来越多的项目用 Slfj,而与它结合最好的 Log4j 替代品就是 Logback,下面是 Logback 的一个可供参考的基本的配置文件 logback.xml,可以控制台和文件同时输出,文件可进行两种类型的归档,分天存储日志,或按文件大小压缩日志归档。
Logback 和 Log4J 同出一人之手,而作者的专注点也在 Logback,Logback 有更好的性能,特别是在现代 Java 程序中。
一般是 rollingPolicy 和 triggeringPolicy 搭配使用,rollingPolicy 负责做什么,triggeringPolicy 管理什么时候做,而 FixedWindowRollingPolicy 本身就实现了 TriggeringPolicy 接口,所以它能够自我管理,不需要别人来推动就会做的。 Read More - 我们在使用 Struts2 的时候一定有用过它的 ModelDriven 类型的 Action,它适于把零散的属性自动组装到一个 JavaBean 中,它的 Model 就相当于 Struts1 的 FormBean。你的 Action 必须实现 com.opensymphony.xwork2.ModelDriven 接口及它的 getModel() 方法,当然要声明一个存储 Model 对象的属性,这个属性将会被压入到 ValueStack 中。
你也可以自然或不自觉在 Action 中加入一个 setModel() 方法,试图在执行期修改当前的 Model 对象,比如像下面这样的 IndexAction 代码: Read More
导语:jQuery的易扩展性吸引了来自全球的开发者来共同编写jQuery插件。jQuery插件不仅能够增强网站的可用性,有效地改善用户体验,还可以大大减少开发时间。现在的jQuery插件很多,可以根据您的项目需要来选择。这里为您介绍20款非常不错的插件。Creative Radical Web Typography
Lettering.js是一个轻量经的、易于使用的jQuery插件,可创造出极具个性的网页排版,是2010年最佳jQuery插件之一。 Read More