使用WebSphere Portal开发多区域设置网站
2010-09-27 08:17:29 来源:WEB开发网显然,应用程序需要在 WebSphere Portal 处理请求 Header 前对其进行更新。Java Servlet 2.3 规范中提供了此类工具;您可以使用 Servlet 筛选器和请求包装来完成此任务。
在本文的剩下部分,您将了解如何进行以下工作:
开发请求包装来在 Accept-Language 请求 Header 中设置区域设置(在下一步中确定)。
开发和安装 Servlet 筛选器来执行业务逻辑,从而为请求确定区域设置。
配置门户,以使其在处理经过身份验证的请求时不会从用户概要获取区域设置。
开发请求包装
J2EE 规范提供了请求包装机制来修改供下游应用程序或组件使用的请求。本文并不会讨论请求包装和 Servlet 筛选器;有关这两个构件的详细信息,请参见 Java Servlet 2.3 规范。
要设计请求包装,首先需要 Servlet 筛选器能够指定请求包装的区域设置。因此,您需要一个构造函数,该构造函数接受传入请求对象和 Servlet 筛选器所确定的区域设置作为参数。
清单 1. LocaleRequestWrapper
public class LocaleRequestWrapper extends HttpServletRequestWrapper
implements com.ibm.wsspi.webcontainer.servlet.IServletRequest
{
private String locale = null;
private Locale localeObj;
private List locales = new ArrayList(1);
public LocaleRequestWrapper(HttpServletRequest request, Locale locale)
{
super(request);
// validate the locale here…if invalid locale is passed
// throw illegal argument exception
String langCode = locale.getLanguage();
String countryCode = locale.getCountry();
if (langCode != null && langCode.trim().length() > 0 &&
countryCode != null && countryCode.trim().length() > 0) {
this.locale = langCode + "-" + countryCode;
localeObj = new Locale(langCode, countryCode);
}
else if (langCode != null && langCode.trim().length() > 0) {
this.locale = langCode;
localeObj = new Locale(langCode);
}
if (locale != null)
{
locales.add(locale);
}
}
public Object clone() throws CloneNotSupportedException
{
LocaleRequestWrapper crequest = (LocaleRequestWrapper)super.clone();
javax.servlet.ServletRequest inner = crequest.getRequest();
if (inner instanceof IServletRequest)
{
crequest.setRequest(
(HttpServletRequest)((IServletRequest)inner).clone());
} else
{
throw new CloneNotSupportedException();
}
return crequest;
}
}
编缉推荐阅读以下文章
- 扩展WebSphere Portal V6个性化功能
更多精彩
赞助商链接