Home | Syndication | Delicious | Douban | Twitter

Archive for June, 2005

UrlRewriteFilter

June 12th, 2005

Based on the popular and very useful mod_rewrite for apache, UrlRewriteFilter is a Java Web Filter for any J2EE compliant web application server (such as Resin, Orion or Tomcat), which allows you to rewrite URLs before they get to your code. It is a very powerful tool just like Apache's mod_rewrite.

使用非常简单:

1,把 urlwrite-2.4.jar 放置到 CLASSPATH 中,比如 WEB-INF/lib

2,修改webapp的部署描述文件 web.xml

 <filter>
  <filter-name>UrlRewriteFilter</filter-name>
  <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  <init-param>
    <param-name>logLevel</param-name>
    <param-value>DEBUG</param-value>
  </init-param>
  <init-param>
    <param-name>statusEnabled</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>statusPath</param-name>
    <param-value>/rewrite-status</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>UrlRewriteFilter</filter-name>
  <url-pattern>/show/*</url-pattern>
</filter-mapping>

3,在 WEB-INF 下建立文件 urlrewrite.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.4//EN" "http://tuckey.org/res/dtds/urlrewrite2.4.dtd" >
<urlrewrite>
  <rule>
    <from>/show/u([0-9]+).html</from>
    <to>/user.nv?m=show&amp;u=$1</to>
  </rule>
  <rule>
    <from>/show/t([0-9]+),([0-9]+).html</from>
    <to>/thread.nv?m=show&amp;t=$1&amp;page=$2</to>
  </rule>
</urlrewrite

这将会把:
/user.nv?m=show&u=96 转化成 /show/u96.html
/thread.nv?m=show&t=7879&page=3 转换成 /show/t7879,3.html

Struts application i18n

June 8th, 2005

Java 为应用程序的国际化提供了良好的支持, Struts 也继承了这一优点。通过全程使用 unicode 编码可以非常简单地实现应用的国际化。

1,全部页面声明使用 UTF-8
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

2,建立一个 filter 来过滤所有页面文件,以确保始终使用 UTF-8 来分析所有的 incoming request.

4,以 English 来编写 default 的消息资源(message resources)文件 ApplicationResources.properties (文件名可以自行在 struts-config.xml 中指定),然后再基于这个消息资源文件翻译成想要的语言。

5,以翻译成简体中文为例子。
先新建一个文本文件 ApplicationResources_zh_CN_original.properties,将其中的英文翻译成中文,然后用 native2ascii 指令转换之:
# native2ascii -encoding GB18030 ApplicationResources_zh_CN_original.properties ApplicationResources_zh_CN.properties
注:翻译文件(original)一定要在使用“本地”字符集的系统上建立,比如我使用 Windows XP Simplified Chinese 来翻译,所以我的文本文件的缺省编码就是 GB18030.  若我们需要一个繁体中文的翻译,那么应该确保使用的系统缺省编码是 big5.

4,把生成的 ApplicationResources_zh_CN.properties 放到相应的位置下即可。

注意:
启动 tomcat 的用户的环境变量中的 LANG 一定要设置为 en_US.UTF-8