private DataRow setStringValue(DataRow dataRow,String tmp){
if(tmp!=null&&tmp.indexOf(":")>0){//至少有一个键:值
dataRow=new DataRow();
String[] items=tmp.split("\\|");
for (int i = 0; i < items.length; i++) {
if(items[i].indexOf(":")>0){
String[] item=items[i].split(":");
if(item!=null && item.length==1)
dataRow.set(item[0], "");
else
dataRow.set(item[0], item[1]);
}
}
}
return dataRow;
}
private DataRow getClientInfoFromCookie(HttpServletRequest request){
// 判断cookie,看用户是否已经登陆
String cookieStr= CookieHelper.getCookieValue(request,WebConstants.COOKIE_CLIENT_INFO_KEY);
try {
cookieStr=new String(Base64.decode(cookieStr),Configuration.getString("sso.charsetName"));
} catch (UnsupportedEncodingException e) {
cookieStr=null;
logger.warn("["+Configuration.getString("sso.charsetName")+"] 不是一个标准的字符格式");
}
DataRow cookieInfo=null;
return setStringValue(cookieInfo,cookieStr);
}
<category name="sso" description="用户中心数据表">
<item name="domain" value="dgzq.com.cn" description="用户中心的表前缀" />
<item name="cookiename" value="sso_cookie" description="用户中心的表前缀" />
<item name="keypath" value="D:/dgzq/service/src/Key.dat" description="key路径,可用|分隔从多个路径来取" />
<item name="clientEmailDomain" value="dgzq.com" description="邮件系统,客户默认的邮件域名" />
<item name="charsetName" value="UTF-8" description="保存cookie中字符的编码,一般使用utf-8" />
</category>
if(tmp!=null&&tmp.indexOf(":")>0){//至少有一个键:值
dataRow=new DataRow();
String[] items=tmp.split("\\|");
for (int i = 0; i < items.length; i++) {
if(items[i].indexOf(":")>0){
String[] item=items[i].split(":");
if(item!=null && item.length==1)
dataRow.set(item[0], "");
else
dataRow.set(item[0], item[1]);
}
}
}
return dataRow;
}
private DataRow getClientInfoFromCookie(HttpServletRequest request){
// 判断cookie,看用户是否已经登陆
String cookieStr= CookieHelper.getCookieValue(request,WebConstants.COOKIE_CLIENT_INFO_KEY);
try {
cookieStr=new String(Base64.decode(cookieStr),Configuration.getString("sso.charsetName"));
} catch (UnsupportedEncodingException e) {
cookieStr=null;
logger.warn("["+Configuration.getString("sso.charsetName")+"] 不是一个标准的字符格式");
}
DataRow cookieInfo=null;
return setStringValue(cookieInfo,cookieStr);
}
<category name="sso" description="用户中心数据表">
<item name="domain" value="dgzq.com.cn" description="用户中心的表前缀" />
<item name="cookiename" value="sso_cookie" description="用户中心的表前缀" />
<item name="keypath" value="D:/dgzq/service/src/Key.dat" description="key路径,可用|分隔从多个路径来取" />
<item name="clientEmailDomain" value="dgzq.com" description="邮件系统,客户默认的邮件域名" />
<item name="charsetName" value="UTF-8" description="保存cookie中字符的编码,一般使用utf-8" />
</category>
{
private static Logger logger = Logger.getLogger(Configuration.class);
private static Map items = new HashMap();
private static String CONFIG_FILE_NAME = "configuration.xml"; static
{
loadConfig();
} /**
* 读入配置文件
*/
private static void loadConfig()
{
try
{
InputStream is = Configuration.class.getResourceAsStream("/" + CONFIG_FILE_NAME);
SAXReader reader = new SAXReader(); Document document = reader.read(is);
Element systemElement = document.getRootElement();
List catList = systemElement.elements("category");
for (Iterator catIter = catList.iterator(); catIter.hasNext();)
{
Element catElement = (Element) catIter.next();
String catName = catElement.attributeValue("name");
if (StringHelper.isEmpty(catName))
{
continue;
} List itemList = catElement.elements("item");
for (Iterator itemIter = itemList.iterator(); itemIter.hasNext();)
{
Element itemElement = (Element) itemIter.next();
String itemName = itemElement.attributeValue("name");
String value = itemElement.attributeValue("value");
if (!StringHelper.isEmpty(itemName))
{
items.put(catName + "." + itemName, value);
}
}
}
}
catch (Exception ex)
{
logger.error("", ex);
}
} /**
* 获得字串配置值
*
* @param name
* @return
*/
public static String getString(String name)
{
String value = (String) items.get(name);
return (value == null) ? "" : value;
} /**
* 获得字串配置值,若为空,则返回缺省值
*
* @param name
* @param defaultValue
* @return
*/
public static String getString(String name, String defaultValue)
{
String value = (String) items.get(name);
if (value != null && value.length() > 0)
return value;
else
return defaultValue;
} /**
* 获得整型配置值
*
* @param name
* @return
*/
public static int getInt(String name)
{
String value = getString(name);
try
{
return Integer.parseInt(value);
}
catch (NumberFormatException ex)
{
return 0;
}
} /**
* 获得整型配置值
*
* @param name
* @return
*/
public static int getInt(String name, int defaultValue)
{
String value = getString(name);
try
{
return Integer.parseInt(value);
}
catch (NumberFormatException ex)
{
}
return defaultValue;
} /**
* 获得布尔型配置值
*
* @param name
* @return
*/
public static boolean getBoolean(String name)
{
String value = getString(name);
return Boolean.valueOf(value).booleanValue();
}
public Map getItems(){
return items;
}
}
* 根据cookie名称,得到cookie的值
*
* @param request HttpServletRequest对象
* @param cookieName Cookie的名称
* @return cookie的值,若不存在,则返回空字串
*/
public static String getCookieValue(HttpServletRequest request, String cookieName)
{
String value = ""; Cookie cookie = getCookieByName(request, cookieName);
if (cookie != null)
{
value = cookie.getValue();
} return value;
}
/**
* 根据cookie名称,得到对应的cookie值
*
* @param request HttpServletRequest对象
* @param cookieName cookie的名称
* @return 对应cookie的值,若不存在,则返回null
*/ public static Cookie getCookieByName(HttpServletRequest request, String cookieName)
{
Cookie cookies[];
if ((cookies = request.getCookies()) != null)
{
for (int i = 0; i < cookies.length; i++)
{
if (cookies[i].getName().equalsIgnoreCase(cookieName))
{
return (Cookie) cookies[i].clone();
}
}
}
return null;
}