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

简介: 版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/79010349 在有些场景下,我们需要在前端的JavaScript脚本中,使用数据库中的配置信息,该怎么做呢? 第一步、Servlet启动的时候把数据库信息写入到前端的JavaScript文件中 首先,在Servlet启动的时候(web.xml的尾部)加入listener。
+关注继续查看
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/79010349

在有些场景下,我们需要在前端的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获取到该值——糟糕的做法。

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


朝闻道夕死可矣!你理解这句话真正的含义吗?

相关文章
|
25天前
|
算法 JavaScript
W3Cschool编程实战JS脚本算法挑战:寻找数组中的最大值算法挑战
在右边的大数组中包含了4个小数组,请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。
|
25天前
|
算法 JavaScript
W3Cschool编程实战JS脚本算法挑战:设置首字母大写算法挑战
返回一个字符串,确保字符串的每个单词首字母都大写,其余部分小写。
|
25天前
|
算法 JavaScript
|
29天前
|
JavaScript Windows
nodemon 监听失败 卡在[nodemon] restarting due to changes... 重新启动js脚本失败
在网上搜索了大半天方法,汇总一下....可能对你们有效 1. 重启电脑(对我无效) 2. 重装nodemon,删掉之后,全局安装和项目本地安装(对我无效) 3. 安装supervisor(个人还是喜欢用nodemon,比较简便) 4. 添加系统环境变量后重启电脑(解决了我的问题)
|
2月前
|
JavaScript
|
4月前
|
JavaScript 前端开发
前端祖传三件套JavaScript的DOM之DOM操作的动态脚本
在前端开发中,动态脚本是一种非常重要的技术。它可以通过 DOM 操作来动态地创建和加载 JavaScript 脚本,并实现一些特殊的功能。本文将介绍如何使用 DOM 操作进行动态脚本的创建和加载。
55 0
|
4月前
|
XML 存储 缓存
在 Java 代码中来一段 JavaScript?聊聊 Flowable 中的脚本任务
在 Java 代码中来一段 JavaScript?聊聊 Flowable 中的脚本任务
|
4月前
|
JavaScript 前端开发 编译器
你可曾见过如此简单粗暴的JavaScript解说 -- js脚本运行机制
首先,上几道我编写的 js 题,作为分析的样本。 请根据代码,选择正确的选项。
|
5月前
|
JavaScript
js:动态import导入script脚本文件
js:动态import导入script脚本文件
115 0
|
7月前
|
JavaScript 前端开发
HTML中的JavaScript中script元素 动态加载脚本
本文介绍了HTML中JavaScript的动态加载脚本的概念、优势和实现方式,并结合实例讲解了如何通过动态加载脚本实现更加灵活的控制和优化。
262 0
相关产品
云迁移中心
推荐文章
更多