科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件在Web applications间共享数据

在Web applications间共享数据

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文依据ClassLoader的装载类的原理,提出了如何做到在web applications间共享数据.

作者:Nurhachi Jang 来源:CSDN 2008年3月29日

关键字: 数据 APP web Web开发 软件

  • 评论
  • 分享微博
  • 分享邮件
      根据 ClassLoader 的装载顺序,首先装载那些最基础的类,然后才轮到web app中的类,而且基础类装载以后可由多个web app使用,因此,可以设想,如果我们把存储共享数据的util类打包与基础类放在一起,如classpath, 应用服务器的包文件存放处(这里使用的是tomcat,因此放在common/lib/下),就可以在各个web app中向这个类填充数据或者读取数据。

        为什么这里说的是向类填充或读取数据呢?因为如果创建这个类的对象,势必这个对象要处于某个web app的context中,其它的web app必然无法访问到这个web app的context。那么怎么解决呢? 既然这些web app能使用到这个类,那么如果我们把这个类的所有的数据和方法都设置为static,那么自然web app们就可以直接访问到这些数据和方法,从而达到共享之目的。

        经过我的测试,这样的共享是完全没问题的,只是要注意一下并发访问的情况。

基础类:
================================
package org.openthoughts.util;

import Java.util.Hashtable;

public class ShareableRepository {
  private static Hashtable shared = new Hashtable();

  public static Object get(String key) {
    Object value = null;
    synchronized(shared) {
      value = shared.get(key)
    }
    return value;
  }

  public static void put(String key, Object value) {
    synchronized(shared) {
      shared.put(key, value);
    }
  }
}

=================================

第一个JSP:
=================================
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="org.openthoughts.util.ShareableRepository" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1 align="center">You use this form to insert values to shared repository.</h1>
   
    <%
      String key = request.getParameter("key");
      String value = request.getParameter("value");
     
      if(null != key && value != null) {
          ShareableRepository.put(key, value);
      }
    %>
        <form action="index.jsp" method="POST">
            <label for="key">Key:</label>
            <input type="text" name="key" value="" /><br>
            <label for="value">Value:</label>
            <input type="text" name="value" value="" /><br>
            <input type="submit" value="Submit" name="submit" />
        </form>
    </body>
</html>
====================================


第二个JSP:
====================================
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="org.openthoughts.util.ShareableRepository" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

    <h1 align="center">You use this form to get values from shared repository.</h1>
   
    <form action="index.jsp" method="POST">
        <label for="key">Key:</label>
        <input type="text" name="key" value="" /><br>
        <input type="submit" value="Submit" name="submit" />
    </form>
   
    <%
      String key = request.getParameter("key");
     
      String value = "";
      if(null != key) {
          value = (String)ShareableRepository.get(key);
      }
    %>
    The value you want to fetch is <%=value==null?"":value%>
    </body>
</html>
=====================================

All these files are powerd by NetBeans IDE.
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章