在前端的JavaScript脚本中,如何高效率的使用数据库中的配置信息

简介: 在前端的JavaScript脚本中,如何高效率的使用数据库中的配置信息

在有些场景下,我们需要在前端的JavaScript脚本中,使用数据库中的配置信息,该怎么做呢?


第一步、Servlet启动的时候把数据库信息写入到前端的JavaScript文件中


首先,在Servlet启动的时候(web.xml的尾部)加入listener。


<listener>
  <listener-class>com.honzh.common.listener.SpringContextInitListener</listener-class>
</listener>


然后,SpringContextInitListener 内容如下:


public class SpringContextInitListener implements ServletContextListener {
  protected Logger logger = LoggerFactory.getLogger(getClass());
  public void contextInitialized(ServletContextEvent servletContextEvent) {
  ServletContext servletContext = servletContextEvent.getServletContext();
  Variables.servletContextRealPath = servletContext.getRealPath("");
  logger.info("网站realPath{}", Variables.realPath);
  logger.info("数据库配置常量信息初始化");
  Variables.INSTANCE.getStocksConfig();
  }
  public void contextDestroyed(ServletContextEvent servletContextEvent) {
  }
}


要先从ServletContext获得项目的真实路径,比如说c:/run/webapps/。这一点很重要,因为接下来要把数据库的信息写入到该路径下的文件内。


然后,你懂的,关键的地方来了:

public enum Variables {
  INSTANCE;
  protected Logger logger = LoggerFactory.getLogger(getClass());
public ConfigDto getStocksConfig() {
    if (config == null) {
      // 获取数据库配置文件的service
      // 这里用到了spring,你可以按照自己的方式
      // 只要获取到数据库配置信息就好了
      StocksConfigService stocksConfigService = SpringContextHolder.getBean(StocksConfigService.class);
      config = stocksConfigService.getConfig();
      try {
        // 这里请注意路径哦
        // servletContextRealPath 的值就是上文提到的c:/run/webapps/,项目war包运行的所在地
        // 对应的项目路径就是WebContent下
        File configPath = new File(
            servletContextRealPath + File.separator + "components" + File.separator + "common");
        String fileName = "config.js";
        File configFile = new File(configPath, fileName);
        Files.createParentDirs(configFile);
        logger.info("文件路径创建成功");
        // 写入的时候需要用到json转换,我这里用的是fastjson,你也可以使用jackjson等
        // 最好是把配置文件的json对象复制到一个config变量中,前台使用起来方便。
        Files.write("var CONFIG=" + JSON.toJSONString(config ) + ";\n", configFile, Charsets.UTF_8);
        logger.info("前端配置文件生成完毕");
      } catch (IOException e) {
        logger.error("前端配置文件生成出错");
        logger.error(e.getMessage(), e);
      }
    }
}


第二步,将config.js文件在jsp页面中引用,然后就可以使用该文件的json对象了。注意,引用路径一定要匹配上啊,components的路径在第一步中生成config.js文件时已经注明,它的相对路径就是WebContent(Maven 项目和此类似)。


<script type="text/javascript" src="/components/common/config.js"></script>


然后使用:


$(function() {

alert(CONFIG.wx_focus_url);

});


这是一篇很简单的文章,旨在介绍方案。但这种技巧真的非常有用,一个月以前,我是不知道还有这种操作的,常常需要通过controller将数据库参数带回到对应的jsp页面中,然后再通过jQuery获取到该值——糟糕的做法。


现在,我把这种做法介绍给你,希望对你有所帮助。


相关文章
|
8月前
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
156 0
|
8月前
|
JavaScript 前端开发 API
|
7月前
|
关系型数据库 MySQL Linux
实现MySQL数据库的定时自动备份脚本。
拿走,不谢,这个脚本配方(指引)保证你的数据库数据像蛋糕店一样地天天更新,还能确保老旧的蛋糕(数据)不会堆积满仓库。这下可好,数据安全有保障,数据库管理员也能轻松一点,偶尔闲下来的时候,煮杯咖啡,看个剧岂不美哉?别忘了偶尔检查一下你的自动备份是否正常工作,以防万一蛋糕机器出了点小差错。
388 20
|
8月前
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
186 10
|
8月前
|
Java 关系型数据库 MySQL
Java汽车租赁系统源码(含数据库脚本)
Java汽车租赁系统源码(含数据库脚本)
215 4
|
9月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
8378 23
|
10月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
303 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
9月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
9月前
|
SQL 关系型数据库 数据库连接
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
168 3