比较使用的web项目中用到参数的地方的java实现.
/** * Copyright 2013 asto. * All right reserved. * Created on 2013-2-10 */ package com.zz91.util.seo; import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.apache.log4j.Logger; import com.zz91.util.lang.StringUtils; /** * @author leiteng (lvjavapro@163.com) * * created on 2013-2-10 */ public class SeoUtil { private static Logger LOG = Logger.getLogger(SeoUtil.class); public final static String DEFAULT_PROP = "seo.properties"; public final static Map<String, String> TEMPLATE = new HashMap<String, String>(); public static SeoUtil _instance = null; //采用单例模式实现的. public static synchronized SeoUtil getInstance() { if (_instance == null) { _instance = new SeoUtil(); } return _instance; } public void init() { init(DEFAULT_PROP); } public void init(String prop) { LOG.debug("Initializing seo..."); InputStream is = this.getClass().getClassLoader().getResourceAsStream( prop); Properties p = new Properties(); try { p.load(is); } catch (IOException e) { LOG.error("An error occurred when load search properties:" + prop, e); } String tmp = null; for (Object key : p.keySet()) { tmp = String.valueOf(key); if (tmp != null) { TEMPLATE.put(String.valueOf(key), String.valueOf(p.get(key))); } } LOG.debug("Initializing params end..."); } public void buildSeo(String page, String[] title, String[] keywords, String[] desc, Map<String, Object> out) { String titleTmp = TEMPLATE.get(page + ".title"); if (StringUtils.isEmpty(titleTmp)) { titleTmp = TEMPLATE.get("title"); } if (title != null) { MessageFormat titleFormat = new MessageFormat(titleTmp); out.put("seoTitle", titleFormat.format(title)); } else { out.put("seoTitle", titleTmp); } String keywordsTmp = TEMPLATE.get(page + ".keywords"); if (StringUtils.isEmpty(keywordsTmp)) { keywordsTmp = TEMPLATE.get("keywords"); } if (keywords != null) { MessageFormat keywordsFormat = new MessageFormat(keywordsTmp); out.put("seoKeywords", keywordsFormat.format(keywords)); } else { out.put("seoKeywords", keywordsTmp); } String descTmp = TEMPLATE.get(page + ".description"); if (StringUtils.isEmpty(descTmp)) { descTmp = TEMPLATE.get("description"); } if (desc != null) { MessageFormat descriptionFormat = new MessageFormat(descTmp); out.put("seoDescription", descriptionFormat.format(desc)); } else { out.put("seoDescription", descTmp); } } public void buildSeo(Map<String, Object> out) { buildSeo(null, null, null, null, out); } public void buildSeo(String page, Map<String, Object> out) { buildSeo(page, null, null, null, out); } }
下面是配置文件
seo.properties
title=供求相册-产品相册-废金属-废塑料-废纸-废纺织-再生资源-ZZ91再生网 keywords=导购相册,再生资源相册,废料产品相册,废塑料相册,废金属相册,再生回收,公司相册,废料供求图集,废料设备图集 description=ZZ91供求相册频道,ZZ91再生网旗下的一个展示供求相册的精美导购平台,以“相册”为核心,崇尚品质。 index.title=供求相册-产品相册-废金属-废塑料-废纸-废纺织-再生资源-ZZ91再生网 index.keywords=导购相册,再生资源相册,废料产品相册,废塑料相册,废金属相册,再生回收,公司相册,废料供求图集,废料设备图集 index.description=ZZ91供求相册频道,ZZ91再生网旗下的一个展示供求相册的精美导购平台,以“相册”为核心,崇尚品质。 search.title={0}-产品相册-再生资源-ZZ91再生网 search.keywords={0},{0}相册,废料产品相册,再生回收,废料供求图集 search.description=ZZ91供求相册频道,ZZ91再生网旗下的一个展示供求相册的精美导购平台,以“相册”为核心,崇尚品质。 empty.title={0}-产品相册暂无该类型数据-再生资源-ZZ91再生网 empty.keywords={0},{0}相册,废料产品相册,再生回收,废料供求图集 empty.description=ZZ91供求相册频道,ZZ91再生网旗下的一个展示供求相册的精美导购平台,以“相册”为核心,崇尚品质。 detail.title={0}-产品相册-再生资源-ZZ91再生网 detail.keywords={0},{0}相册,废料产品相册,再生回收,废料供求图集 detail.description=ZZ91供求相册频道,ZZ91再生网旗下的一个展示供求相册的精美导购平台,以“相册”为核心,崇尚品质。
在需要用到该逻辑的地方如此调用.,
SeoUtil.getInstance().buildSeo("search", new String[]{searchKey}, new String[]{searchKey}, null, out);
重要的一点是要在web文件中配置该java程序进行初始化,配置的代码为
在spring-front.xml文件中加入以下一行代码
<bean id="initSystem" class="com.ast.ast1949.photos.servlet.InitSystem" init-method="initSystem" destroy-method="destroySystem" lazy-init="false"></bean>
还要建立对应的initSystem.java文件
/** * Copyright 2010 ASTO. * All right reserved. * Created on 2010-2-7 */ package com.ast.ast1949.photos.servlet; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.annotation.Resource; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import com.ast.ast1949.service.auth.ParamService; import com.ast.ast1949.service.facade.CategoryFacade; import com.ast.ast1949.service.facade.CategoryProductsFacade; import com.ast.ast1949.service.facade.MemberRuleFacade; import com.ast.ast1949.service.products.CategoryProductsService; import com.ast.ast1949.service.site.CategoryService; import com.ast.ast1949.service.site.MemberRuleService; import com.zz91.util.cache.MemcachedUtils; import com.zz91.util.param.ParamUtils; import com.zz91.util.search.SearchEngineUtils; import com.zz91.util.seo.SeoUtil; /** * @author Mays (x03570227@gmail.com) * */ public class InitSystem { private static Logger LOG = Logger.getLogger(InitSystem.class); @Autowired private ParamService paramService; @Autowired private CategoryService categoryService; @Autowired private CategoryProductsService categoryProductsService; @Resource private MemberRuleService memberRuleService; final static String WEB_PROP="web.properties"; public void initSystem() { MemcachedUtils.getInstance().init(WEB_PROP); //初始化系统配置 initBaseConfig(); //初始化系统配置 // initParamConfig(); ParamUtils.getInstance().init(paramService.queryUsefulParam(), "memcached"); //初始化系统类别库 CategoryFacade.getInstance().init(categoryService.queryCategoryList(),null); //初始化类别code CategoryProductsFacade.getInstance().init(categoryProductsService.queryAllCategoryProducts(), null); //初始化规则 MemberRuleFacade.getInstance().init(memberRuleService.queryMemberRuleList(), null); // 搜索引擎 SearchEngineUtils.getInstance().init(WEB_PROP); // 这里就是初始化本程序的调用, SeoUtil.getInstance().init(); } public void destroySystem() { MemcachedUtils.getInstance().getClient().shutdown(); } public void initBaseConfig() { LOG.info(">>>>>>>>Init system properties cache start..."); InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("web.properties"); Properties p = new Properties(); try { p.load(inputStream); } catch (IOException e1) { LOG.error("error read web.properties", e1); } String tmp = null; for (Object key : p.keySet()) { tmp = String.valueOf(key); if (tmp != null && tmp.startsWith("baseConfig.")) { MemcachedUtils.getInstance().getClient().set(String.valueOf(key), 0, String.valueOf(p.get(key))); } } LOG.info(">>>>>>>>Init system properties cache end..."); } }
奔跑...