`

WEB容器启动的时候,加载常用数据到内存

 
阅读更多

项目中,有很多数据是基本上不变的,同时用到的频率还比较高,如果每次都从数据库读取,不但浪费资源,还影响了系统执行的速度。

所以对于这种数据,基本上是在WEB容器启动的时候,就去数据库读取,放到内存中,用的时候直接从内存里面拿就OK了。

这里有个例子,省市的级联信息,对应的code,name都保存在数据库中的一个地区代码表中,其他表中保存的省市信息,如果没有冗余名称的话,一般都保存地区信息的对应代码。
那么在页面显示的时候,需要把相关的代码转换成省市的名称。这个时候就需要把省市的code--->name对应信息查询出来。

首先在service层配置初始化的bean:

Java代码 复制代码 收藏代码
  1. <bean id="regionService" class="com.xxx.service.impl.RegionServiceImpl"  
  2.         init-method="initRegion" lazy-init="true"/>  
<bean id="regionService" class="com.xxx.service.impl.RegionServiceImpl"
		init-method="initRegion" lazy-init="true"/>


再看RegionServiceImpl.java的代码:

Java代码 复制代码 收藏代码
  1. import java.util.HashMap;   
  2. import java.util.List;   
  3. import java.util.Map;   
  4.   
  5. public class RegionServiceImpl implements RegionService {   
  6.   
  7.     public RegionDAO       regionDAO;   
  8.     public static Map<String,String> regionMap = new HashMap<String,String>();   
  9.        
  10.     public void initRegion(){   
  11.         if(regionMap.isEmpty()){   
  12.             List<Region> regionList = regionDAO.getRegions();   
  13.             for(Region r : regionList){   
  14.                 regionMap.put(r.getCode(),r.getName());   
  15.             }   
  16.         }   
  17.     }   
  18.        
  19.     public Map<String,String> getAllRegionMap(){   
  20.         return getRegionMap();   
  21.     }   
  22.        
  23.     public static Map<String, String> getRegionMap() {   
  24.         return regionMap;   
  25.     }   
  26.   
  27.     public static void setRegionMap(Map<String, String> regionMap) {   
  28.         RegionServiceImpl.regionMap = regionMap;   
  29.     }   
  30.   
  31. }  
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RegionServiceImpl implements RegionService {

    public RegionDAO       regionDAO;
    public static Map<String,String> regionMap = new HashMap<String,String>();
    
    public void initRegion(){
    	if(regionMap.isEmpty()){
    		List<Region> regionList = regionDAO.getRegions();
    		for(Region r : regionList){
    			regionMap.put(r.getCode(),r.getName());
    		}
    	}
    }
    
    public Map<String,String> getAllRegionMap(){
    	return getRegionMap();
    }
	
    public static Map<String, String> getRegionMap() {
		return regionMap;
	}

    public static void setRegionMap(Map<String, String> regionMap) {
		RegionServiceImpl.regionMap = regionMap;
	}

}



Action里面,从service层取到regionMap,在put到前端页面jsp或者vm

Java代码 复制代码 收藏代码
  1. Map<String,String> regionMap = regionService.getAllRegionMap();   
  2. model.addAttribute("regionMap", regionMap);  
Map<String,String> regionMap = regionService.getAllRegionMap();
model.addAttribute("regionMap", regionMap);



前端页面velocity:

Java代码 复制代码 收藏代码
  1. $regionMap.get(code)  
分享到:
评论

相关推荐

    Tomcat与Java.Web(源文件)

    【标题】:Tomcat与Java.Web(源文件) ...综上所述,Tomcat与Java.Web的结合是开发和部署Java Web应用的常用方式,通过深入理解这些知识点,开发者能够有效地构建、运行和维护高质量的Web应用程序。

    web项目思路及主要内容.docx

    Web服务器方面,Tomcat是最常见的选择,它也被称为JSP容器,需要配置启动和发布项目,并设置环境变量。 数据库管理是Web项目中不可或缺的一部分,涉及MySQL、SQL Server和Oracle。安装、卸载和配置这些数据库以及...

    圣思园 Java web 课件7

    - **自动加载Servlet**:通过在`&lt;servlet&gt;`元素中添加`&lt;load-on-startup&gt;`子元素,可以让容器在启动时自动加载指定的Servlet并调用其`init()`方法完成初始化。这有助于提高首次访问Servlet的速度,适用于需要提前...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    【How Tomcat Works】【一】最简服务器原理

    - **Context**:Context 容器代表一个 Web 应用,它负责加载应用的 `web.xml` 配置文件,并管理所有与该应用相关的请求。 - **Wrapper**:Wrapper 容器对应于一个 Servlet,它负责实例化 Servlet 对象并调用其服务...

    EasyUI分页,编辑

    它通过与后台服务进行交互,每次只请求并显示一部分数据,而不是一次性加载所有数据,降低了页面加载时间和浏览器内存消耗。 #### 1.2 使用步骤 1. 引入 EasyUI 的 CSS 和 JS 文件。 2. 在 HTML 中创建分页容器,并...

    AS3的常用类和函数大全

    - **`flash.net.URLLoader`**:加载URL中的数据到内存中。 - **`flash.net.URLVariables`**:存储与URL相关的变量,通常用于发送表单数据或查询字符串。 - **`flash.net.URLRequestMethod`**:指定请求方法,如GET或...

    EHCache 详解

    - **缓存预热**: 提供预加载机制,启动时自动加载预先定义的数据,减少启动时间。 - **分布式缓存**: 支持多节点环境,可以创建分布式缓存,提高系统可扩展性。 ### 3. 核心组件 - **Cache**: 缓存对象,是数据...

    tomcat常用配置信息详解

    Tomcat是Apache软件基金会的Jakarta项目下的一个开源Web服务器和Servlet容器,它以其轻量级、高效和可扩展性而受到广大Java开发者和运维人员的喜爱。本资料详细解析了Tomcat的常用配置信息,对于Java开发面试者和Web...

    dojo开发帮助文档

    `dojo/ready`函数确保在DOM加载完成和模块加载后执行代码,是启动应用的常用入口点。 总之,“dojo开发帮助文档”将全面覆盖这些主题,并提供详细的API参考和示例,帮助开发者熟练掌握Dojo 框架,提升Web应用程序的...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    开发常用jar1-1-1

    - **优化加载**:JAR文件可以被Java虚拟机(JVM)一次性加载,减少启动时间和内存占用。 - **版本控制**:通过版本号管理不同的JAR,避免版本冲突。 - **安全**:JAR文件可以设置签名,确保代码的完整性和来源。 - *...

    精品资料(2021-2022收藏)JAVA+android-.pdf

    通过以上知识点的学习,开发者可以构建完整的Web应用程序,从数据库设计到前端展示,再到后端处理,实现数据的存储、检索、更新和删除,以及安全性和性能优化。这些技能对于在互联网领域,尤其是CS(计算机科学)...

    Java高并发编程与JVM性能调优实战 视频教程 下载下载因为太大存百度云盘4.zip

    9. **JVM参数调优**:掌握常用JVM启动参数,如-Xms、-Xmx、-XX:NewRatio、-XX:SurvivorRatio等,以及如何根据系统需求进行参数调整。 10. **实战演练**:通过实际案例,如Web服务器负载测试、大数据处理场景等,...

    java面试题

    **延迟加载**是一种优化技术,用于减少应用程序启动时的内存消耗和提高性能。当Hibernate查询数据时,默认情况下只会加载对象的代理实例,而不会立即加载实际的数据。只有当程序真正访问对象的属性时,才会从数据库...

    最新大厂Java面试题(上).pdf

    对象在JVM中创建,首先通过类加载器加载相应的类信息到方法区,然后在Java堆中分配内存,之后进行对象初始化。 #### 内存溢出异常 内存溢出异常指的是程序在申请内存时,没有足够的空间分配给请求的内存区域,导致...

    java面试宝典

    - **Spring** 的核心控制器是 `ContextLoaderListener`,它在Web应用启动时加载Spring的IoC容器,初始化应用上下文。 配置示例: ```xml &lt;!-- Struts2配置 --&gt; &lt;filter-name&gt;struts2 &lt;filter-class&gt;org....

    JAVA经典面试题

    1. **加载与初始化**:当Web容器启动时加载Servlet,此时调用`init()`方法进行初始化。 2. **服务阶段**:客户端发送请求,Web容器根据配置将请求转发给相应的Servlet,调用`service()`方法处理请求。根据HTTP请求的...

    学习资料大全v3.7.docx

    4. **数据仓库与ETL过程**:数据清洗、转换、加载的过程以及相关工具的介绍。 5. **数据可视化与分析**:使用Tableau、Power BI等工具进行数据分析与展示的方法。 ### Python3数据科学入门与实战 **知识点概述:**...

    Tomcat安装与配置要点和难点以及常见报错和解决方案.zip

    在IT行业中,Apache Tomcat是一个广泛应用的开源Web服务器和Java Servlet容器,它实现了Java EE的Web部分,包括Servlet、JSP和WebSocket等规范。Tomcat的安装与配置是Java Web开发者必须掌握的基础技能之一。 一、...

Global site tag (gtag.js) - Google Analytics