原来的项目中基本都是用 JSP+Tag 来展示内容,有时也有 Jasper Report 做报表,报表也算是一种模板技术,只是有些重量级。看过 Spring 的书籍,都会对 Velocity 和 FreeMaker 有介绍,带动了我对先前看过的 *.vm 文件的研究提上了日程,了解之后,已觉相见恨晚。
下面讲利用 Velocity 怎么更好解决目前项目的一个简单问题:系统在进行支付了支付后,自己按设定的信息模板发送一条短信给责任人。信息模板是:
{单据责任人}:您的 {单据号} 号{单据类型}在 {操作日期} 日已支付 Read More
在开源的项目中使用 Log4j一般 都是在类中添加一静态变量,如
protected static Log log = LogFactory.getLog(RequestProcessor.class); //通用日志组件
或
protected static Logger log = Logger.getLogger(RequestProcessor.class); //直接申明为Log4j的logger
原来有一个项目是做了一个自定义了 MyLogger 类, 其中的 debug, info 等到方法直接就是调用 log4j 的 logger 的对应方法. 别的代码中调用 MyLogger 的静态方法打印日志时, 依据log4j.properties的配置显示 %l 定位信息就始终是 MyLogger
如: 2007-05-23 12:18:46,828 [DEBUG] com.unmi.MyLogger.debug(MyLogger.java:12) Hello MyLogger Read More这是当年用 JBuilder 的时候,创建测试用例自动建立的代码布局。 Read More
原来项目中都是自己拿到 mail.jar 和 activation.jar 两个包编写发送Email的代码,虽然不难,但也有些麻烦。
现在好了,在 apache 站点有一个 jarkata/commons/email 子项目,也为我们实现了发送 Email 的功能,在 http://jakarta.apache.org/commons/email/ 把包 commons-email-1.0.jar 下来,自己要写的代码就十分少了,并且非常明了。
这个包的大小只有23K,也就是9个类而已,却能让您省不少事。 Read More
部署一个 Web 应用到 WebSphere Application Server 中,浏览 index.jsp 页面时而正常,时而出现500错误,查看服务器输出日志可以看到以下错误,
E SRVE0026E: [Servlet Error]-[This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application]: org.apache.jasper.JasperException: This absolute uri (http://jakarta.apache.org/struts/tags-logic) cannot be resolved in either web.xml or the jar files deployed with this application Read More- 有两个java类,源代码如下:
//没指定包名,也就是在默认包中public class B {
public void print(){
System.out.println("Printed By B Class");
}
}package com.unmi;
import B; //引用默认包中的B类
public class A {
public static void main(String[] args) {
B b = new B(); //在A中想要引用默认包中的B类
}
}
先不说在IDE中如何编译它们以及会提示什么语法错误,只是用命令javac来编译它们,先是把它们放在同一个目录下,注意的是,虽然A.java有package unmi.com;声明,我们还是先把它放在下B.java同一目录,希望由javac命令来生成相对应的包目录。 Read More
记得最早在项目中用Log4j的时候,也是觉得在每一个要记载日志的类中或者某个上层类中要声明一个Logger属性挺麻烦的
注(2018-06-30):本文所展示的 Log4J 如何定们位置信息可参考 Log4J 1.2.13 的源代码,新代码可能有出入。1protected static Log log = LogFactory.getLog(Test.class);
或者1protected static Logger log = Logger.getLogger(Test.class);
于是就写了一个自己的Logger类UnmiLogger,也就是把Log4j的Logger包装一下,直接调用Logger的日志输出方法,info、debug、warn等,只不过在UnmiLogger中把日志输出方法都改为静态的,让在别的代码中方便使用。 Read More- 1. Chinese Word Splitter(中文分词) (*)
2. 猎兔--中文分词技术文档 (*)
3. Lucene中文分词组件 JE-Analysis 1.3.1 (*)
4. 几个免费的中文分词模块
5. 计算所汉语词法分析系统 ICTCLAS (*)
6. fenci,Java 的 ICTCLAS
7. AutoSplit,另一个 Java 的 ICTCLAS
8. 小叮咚中文分词 介绍页面 Read More - 在Think In Java里有一个示例 RMI 的代码 PerfectTime, 可是其中并没有把有些执行细节说明了,也就可以造成新手运行它会出某些异常而不知所措。下面将列出可能产生的异常,并说明解决办法,如读者在执行当中还遇到其他未列出的异常,可留言告知,吾将尽力而为。
首先把代码PerfectTime和DisplayPerfectTime 中的//colossus:2005/PerfectTime改为//localhost:2005/PerfectTime ,因为colossus为机器名,所以改为localhost指向本机,不然找不到主机colossus的。
已经用命令 RMIC 生成PerfectTime_Stub.class,并且执行了命令 rmiregistry 2005 Read More - 本实例为参考多篇文章写就而成,网上及书上各类文章介绍如何使用RMI有多种实例可参考,譬如有:
1. 用命令rmiregistry启动RMI注册服务的
2. 同时创建存根(stub)和骨架(skeleton)的
3. 只创建存根类的(jdk1.2以后版本)
4. 通过RemoteRef和rmi://协议字串方式的
5. 比较少讲到的用LocateRegistry直接在代码上启动RMI注册服务的。
以上描述并非明显分类,比如,你总是可以选择用rmiregistry或者代码LocateRegistry启动RMI注册服务
下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用。
分为以下四个步骤 Read More