比较使用的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...");
    }

}

 

posted @ 2013-04-22 17:10  雨中雷  阅读(293)  评论(0编辑  收藏  举报