在 Java 中操作 Windows 注册表

想做个东西,要获IE的代理设置,看网上介绍基本都是读取注册表的方式,没提到说借助于特定的 Win32 API。而 JDK 提供操作 Windows 的 API 也就是 Preferences,因为这个 API 也是跨平台的,所功能比较弱,在 Win32 下只能用来操作 HKCU\Software\JavaSoft 和 HKLM\Software\JavaSoft 下及子节点的数据。

自由访问注册表其他键的值光用 Java 是做不到的,必然方案就是 JNI,一开始也自己来实现这个 JNI 动态库,后来懒了一下,想着网上应该用现成的实现,Google 了一下,果然不出所望,就是 http://www.trustice.com/java/jnireg/index.shtml 下的 registry-3.1.3.zip(包含源代码)。可以利用它访问、修改、导出注册表项到文件等。解开 registry-3.1.3.zip,在 bin 目录中可以看到两个文件 ICE_JNIRegistry.dll 和 registry.jar,动态库就是本地代码实现。

阅读全文 >>

java版本的escape和unescape函数

有时候我们在处理页面提交过来的中文产生乱码不容易解决时,比如页面选择了别的编码,而 AJAX 是用的 UTF-8 字符集,我们可以对要发送到服务器的中文用 Javascript 的 escape 函数进行编码,然而 Java 中又没有相应的 unescape 函数。

而且 Java 中的 java.net.URLDecoder/java.net.URLEncoder 也对应不上 javascript 的 encodeURI/decodeURI 和 encodeURIComponent/decodeURIComponent 函数。

所以我去网上找来了一段能够与 Javascript 的 escape/unescape 函数的代码。 阅读全文 >>

Spring 整合 Hibernate 的一处简化配置[转]

在过去使用 Spring 整合 Hibernate 的时候,都是用这样的配置方式。

阅读全文 >>

jsp:include page="" 和 include file="" 的区别

下面用三个实验,更清淅的理解 <jsp:include page=""/> 和 <%@ include file="" %> 的区别。
<jsp:include page=""/> 包含被 include 文件的输出
<%@ include file="" %> 包含被 include 文件的代码

a.jsp 内容:

b.jsp 内容:(空)

_a.class a.jsp编译成类的内容: 阅读全文 >>

Hibernate 保存对象出现 org.hibernate.NonUniqueObjectException 及解决

Hibernate save 在 session 中已存在相同 OID(主键) 的对象,会出现异常,详细内容如下:

Exception in thread "main" org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [com.unmi.LoanDetail#1]
 at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:168)
 at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
 at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
 at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
 at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient 阅读全文 >>

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)

第七章. 访问企业服务

阅读全文 >>