web项目开发,字典表信息工具类

17 篇文章 0 订阅
4 篇文章 0 订阅

在进行web项目开发时,一个系统往往有一些数据不是经常变化的,我们可以采用web项目启动服务时就加载,这样避免多次操作数据库。

1、定义ContextLoaderListener,我们在启动服务时就加载数据

InitSysDictListener.java

 

package com.ww.commons.web;

import java.util.List;

import javax.servlet.ServletContextEvent;

import org.springframework.web.context.ContextLoaderListener;

import com.ww.commons.utils.Constants;
import com.ww.commons.utils.SpringContextHolder;
import com.ww.mbuy.domain.SysDict;
import com.ww.mbuy.service.SysDictService;

public class InitSysDictListener extends ContextLoaderListener {

	private SysDictService sysDictService;

	@Override
	public void contextDestroyed(ServletContextEvent event) {

	}

	@Override
	public void contextInitialized(ServletContextEvent event) {
		// WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());
		sysDictService = SpringContextHolder.getBean(SysDictService.SERVICE_NAME);
		// sysDictService = (SysDictService) context.getBean(SysDictService.SERVICE_NAME);
		// 获得字典中的所有信息
		List<SysDict> sysDictList = sysDictService.findAll();
		event.getServletContext().setAttribute(Constants.SYSDICT, sysDictList);
	}

}

 

2、web.xml中配置Listener

<listener>
        <listener-class>com.ww.commons.web.InitSysDictListener</listener-class>
</listener>

3、为了方便对字典表的操作,定义了一个工具类:SysDictUtil.java

 

/*
 * Copyright @ 2014 com.ww.trains
 * mbuy 下午8:11:25
 * All right reserved.
 *
 */
package com.ww.commons.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;

import com.ww.mbuy.domain.SysDict;

/**
 * 字典表工具类
 * 
 * @desc: mbuy
 * @author: 
 * @createTime: 2014年12月28日 下午8:11:25
 * @history:
 * @version: v1.0
 */
public class SysDictUtil extends HttpServlet {

	/**
	 * 根据字典表type和lable字段,获得一条字典记录
	 * 
	 * @author: 
	 * @createTime: 2014年12月29日 上午9:04:00
	 * @history:
	 * @param request
	 * @param type
	 * @param lable
	 * @return SysDict
	 */
	public static SysDict getSysDictObject(HttpServletRequest request, String type, String lable) {
		List<SysDict> list = getSysDictList(request);
		Map<String, Object> map = getSysDictMap(list);
		SysDict obj = (SysDict) map.get(type + "-" + lable);
		return obj;
	}

	/**
	 * 根据字典表type字段,获得该类型下的所有字典信息
	 * 
	 * @author: 
	 * @createTime: 2014年12月29日 上午9:04:48
	 * @history:
	 * @param request
	 * @param type
	 * @return List<SysDict>
	 */
	public static List<SysDict> getSysDictObject(HttpServletRequest request, String type) {
		List<SysDict> list = getSysDictList(request);
		List<SysDict> sysDictByType = getSysDictByType(list, type);
		return sysDictByType;
	}

	/**
	 * 根据字典表单type字段获得list集合
	 * 
	 * @author: 
	 * @createTime: 2014年12月29日 上午8:55:51
	 * @history:
	 * @param list
	 * @param type
	 * @return List<SysDict>
	 */
	private static List<SysDict> getSysDictByType(List<SysDict> list, String type) {
		List<SysDict> nowDicts = new ArrayList<SysDict>();
		for (SysDict sysDict : list) {
			if (sysDict.getType().equals(type)) {
				nowDicts.add(sysDict);
			}
		}
		return nowDicts;
	}

	/**
	 * 从application获得字典表中的数据
	 * 
	 * @author: 
	 * @createTime: 2014年12月29日 上午8:51:32
	 * @history:
	 * @param request
	 * @return List<SysDict>
	 */
	private static List<SysDict> getSysDictList(HttpServletRequest request) {
		ServletContext application = request.getSession().getServletContext();
		List<SysDict> list = (List<SysDict>) application.getAttribute(Constants.SYSDICT);
		return list;
	}

	/**
	 * 将list结合转化为map集合
	 * 
	 * @author: 
	 * @createTime: 2014年12月28日 下午8:03:48
	 * @history:
	 * @param sysDictList
	 * @return Map<String,Object>
	 */
	private static Map<String, Object> getSysDictMap(List<SysDict> sysDictList) {
		Map<String, Object> map = new HashMap<String, Object>();
		for (SysDict sysDict : sysDictList) {
			map.put(sysDict.getType() + "-" + sysDict.getLabel(), sysDict);
		}
		return map;
	}

}

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时间辜负了谁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值