Linux/Unix下读取lib目录下所有包生成classpath的Shell

做了一个 Java 程序放在 Solaris 下运行,用到许多的第三方包,有 *.zip 的和 *.ja r的,放在 lib 目录下,然后写了一个 shell 脚本来运行那个 java 程序,那就要在 classpath 中包含所有在 lib 中的第三方包。

原来的做法是在 classpath中把lib目录中一个个的包文件名用冒号连缀起来,比如
classpath=.:lib/a.jar:lib/b.jar:lib/c.jar:lib/d.zip
java -classpath $classpath com.unmi.Main 阅读全文 >>

较为完美的一种标题缩略显示方法

通常在网页里都有一种这样的需求,为了界面整洁,在显示标题时需要把长标题以部分加省略号连缀显示,就比如中国博客网显示日志标题--下面那样

·在VC6中使用正则表达式解析...(2007-06-24)
·VC中使用CInternet...(2007-06-23)
·开源嵌入式数据库 SQLit...(2007-06-23) 

问题一是前面那部分字符串怎么来确定,上面很明显示的看得出来,因为标题中混杂着中英文,仍然没有达到初衷。 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(六)

  1. Spring 提供了丰富的控制器层次,方便根据实际需求选择实现或继承那一种控制器。不像 Struts 和 WebWork 比较平坦的 Action 层次。比如 ThowawayController/MultiActionController/SimpleFormController 等。 (P254)

82. 继承 AbstractController 要覆盖的方法是 handleRequestInternal(request,response);new ModelAndView("counrseList","courses",courses) 第一个参数是 view 的逻辑名,第二第三个参数是传递给 view 的名称/数值对,那要向 View 传递多个参数就还是要用 request.setAttribute() 了。(P256) 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(五)

第八章. 建立 Web 层


71. Spring 的 MVC 和 Struts 的 MVC 基本一致
    Spring 的控制流程是:请求->DispatcherServlet->从 HandlerMapping 中查询到处理该请求的 Controller-> Controller 的 handleRequest 方法调用业务方法,最后返回 ModelAndView (ModelAndView告诉了 DispatcherServlet 转向到哪个视图)
    Struts 的控制流程是:请求->ActionServlet->从 ActionMapping 中查询到处理该请求的 Controller (Action类)->Action 的execute 方法调用业务方法,最后返回 ActionForward (ActionForward告诉了 ActionServlet 该转向到哪个视图)(P243) 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(四)

  1. 更为精彩的是自动代理的方式来总体配置各分散类中方法的事物属性,结合使用 DefaultAdvisorAutoProxyCreator, TransactionAttributeSourceAdvisor 和 TransactionInterceptor (我还需要详细理清楚)(P181)

62. 当使用自动代理时,MethodMapTransationAttributeSource 就能很多的派上用场了,它的 methodMap 属性中可以指定哪个类的哪个方法,可以使用通配符(P182)

第七章. 访问企业服务

阅读全文 >>

掌握一种Java模板技术 – Velocity

原来的项目中基本都是用 JSP+Tag  来展示内容,有时也有 Jasper Report 做报表,报表也算是一种模板技术,只是有些重量级。看过 Spring 的书籍,都会对 Velocity 和 FreeMaker 有介绍,带动了我对先前看过的 *.vm 文件的研究提上了日程,了解之后,已觉相见恨晚。

下面讲利用 Velocity 怎么更好解决目前项目的一个简单问题:系统在进行支付了支付后,自己按设定的信息模板发送一条短信给责任人。信息模板是:

{单据责任人}:您的 {单据号} 号{单据类型}在 {操作日期} 日已支付 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(三)

第十章. 使用其他 Web 框架


41. Spring 提供了两种与 Struts 集成的方式
    1) 让你的 Action 继承 org.springframework.web.struts.ActionSupport
    2) 将请求委托给作为 Spring Bean 管理的 Struts action 来自理(P312)

42. 为了让 Struts 能访问 Spring 管理的 Bean,必须在 struts-config.xml 中注册一个知道 Spring 上下文的 ContextLoaderPlugIn,用的是 WebApplicationContext:(P312) 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(二)

第四章. 征服数据库


31. Spring 把数据访问流程中的固定部分和可变部分分开,分别映射成两截然不同的类,模板(Template)和回调(Callback),模板管事物控制、资源管理以及异常处理;回调实现特定于应用的部分--创建 statement、绑定参数、以及整理结果集。模板方法模式的优秀应用(P123)

32. JdbcTemplate template = new JdbcTemplate(myDataSource); 构造。 所有 Spring Dao 模板类是线程安全的,可以为每一个 DAO 配置一个 JdbcTemplate 属性,也可以让 DAO 类继承 JdbcDaoSupport,然后在 DAO 类中用 getJdbcTemplate() 获取到 JdbcTemplate 进行数据库操作。书中的做法是给每个 Dao 加一个 JdbcTemplate 属性,记录的日志略有不同,实际中注意(P127) 阅读全文 >>

Spring 学习点滴,《Spring in Action》笔记(一)

第二章:装配 Bean


 

1. <ref>标签中的 bean, local, parent 三个属性的区别(P53)

2. <list><value...</list>和<set><value...</set>可以换着用都可以为 List, Set 以及数组属性赋值(P55)

3. <map>属性用 spring  进行装匹时 key 值只能是字符串类型,不过一般能满足要求(P55)

4. 装配 map 属性要用 <entry key="key1"><value>foo</value></entry>, 而装匹 properties 属性可以写成 <prop key="key1">foo</prop>, 这是因为 properties 的值总是字符串,而 map 中很随意(P55) 阅读全文 >>

试图在不修改Log4J源码情况下,用静态方法打印正确日志信息失败

在开源的项目中使用 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 阅读全文 >>