频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

在JavaScript程序中整合Java函数

来源:yesky 作者:wayne 出处:巧巧读书 2005-11-22 进入讨论组
上一页 1 2 3 4 5 6 7 8 下一页 

  函数返回的结果问题

  如果Java函数的类型为void的话,那么将返回给JavaScript一个空字符串,在别的情况下(如果不是数组),将返回Java对象的字符型返回值。如果你的Java函数返回数组或者向量(Vector)或枚举(Enumeration),结果将被表示为JavaScript中的数组。例如:在类dbpool中,你如果有某个函数performQuery(some_sql_string)来通过JDBC来调用SQL查询,将转换ResultSet成为数组(或向量)然后把这个数组返回给JavaScript。



res=java.dbpool.performQuery("select * from emp");
first=res[0];
second=res[1];


  程序还应该实现控制台(JINJ控制台),这样你就可以直接从浏览器中运行这个Servlet,并且可以创建/删除对象,相应的命令是: http://your_host/servlet/JINJ?your_password

  或者,如果你使用扩展名映射JinJ的话,则::

  http://your_host/your_file.JinJ?your_password ,这些都应当在程序中体现,你可以在servlet的初始化参数中设置口令,参数名是admin. 如:


JINJ.code=JINJ
JINJ.initparams=admin=secret,
  servlet=http://myhost/servlet/JINJ,
             root=/home/www/pub,
   objects=/home/load/obj.txt,
   codebase=http://myhost/
默认的密码值是abcd,所以使用JINJ?abcd 将运行管理员界面,通过这一页,你可以删除或者创建新的对象的实例。


  下面,然我们来看看具体在Java代码上如何实现我们的构思:

  JinJ.java

import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class JinJ extends HttpServlet
{ public JinJ()
{
}


public void init(ServletConfig servletconfig)//
初始化
throws ServletException
{
super.init(servletconfig);
inst = new Hashtable();
cls = new Hashtable();
NEWLINE = System.getProperty("line.separator"); file://获取行分割符在本系统中的属性值,例如在UNIX下为\n
separator = System.getProperty("file.separator");//获取文件分割符在本系统中的属性值,例如在UNIX下为/

if((THIS_SERVLET = getInitParameter("servlet")) == null)
file://getInitParameter方法,返回一个字符串,包含命名的初始化参数的值,如果参数不存在则为空。
THIS_SERVLET = "";
if((admin = getInitParameter("admin")) == null)
admin = "abcd";
if((DOCUMENT_ROOT = getInitParameter("root")) == null)
DOCUMENT_ROOT = "";
if(DOCUMENT_ROOT.length() > 0 && !DOCUMENT_ROOT.endsWith(separator))
file://如果DOCUMENT_ROOT的长度为正值,并且不以文件分割符结尾则
DOCUMENT_ROOT = DOCUMENT_ROOT + separator;
if((CODEBASE = getInitParameter("codebase")) == null)
CODEBASE = "";
JAVA_FILE = getInitParameter("objects");
if(JAVA_FILE != null && inst != null)
loadJava(JAVA_FILE);
}

private void loadJava(String s)
{
System.out.println("从" + s +"调用Java对象 ");
try
{
BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(new FileInputStream(s)));
file://创建一个文件输入流缓冲区
String s1;
file://开始分析文件
while((s1 = bufferedreader.readLine()) != null)//每次读入一行
{
s1 = s1.trim(); file://把字符串两端的空格去掉
/*********************************************************
* 如果以";"结尾则去掉";"
**********************************************************/
if(s1.endsWith(";"))
s1 = s1.substring(0, s1.length() - 1).trim();
/*****************************************************************************
* 如果s1的长度大于零,并且第一个字符不为#和//,则调用processLine处理这一行参数
******************************************************************************/
if(s1.length() > 0 && s1.charAt(0) != '#' && !s1.startsWith("//"))
processLine(s1);
}

bufferedreader.close();
return;
}
catch(Exception _ex)
{
return;
}
}

private void processLine(String s)
{
/**************************************************************************
*取得这一行中第一次出现等号的下标值,如果没出现等号则返回-1
*如果没有等号,则输出错误信息
**************************************************************************/
int i = s.indexOf("=");
if(i <= 0 || i == s.length() - 1)
{
System.out.println("不能处理此行信息: " + s);
return;
}
String s1 = s.substring(0, i).trim();//s1为s中等号前的字符串
String s2 = s.substring(i + 1).trim();//s2为s中等号后的字符串
if(s2.startsWith("new "))//判断s2是否以new开头,如new class_name(list_of_parameters);
s2 = s2.substring("new".length()).trim();
if(s1.length() == 0 || s2.length() == 0)
{
System.out.println("不能处理此行信息: " + s);
return;
}
if(inst.get(s1) != null) file://为了防止重复定义类名
{
System.out.println("重复命名 " + s1);
return;
}
i = s2.indexOf("(");
if(i <= 0 && !s2.endsWith(")"))
{
System.out.println("不能处理此行信息:" + s);
return;
}
String s3 = s2.substring(0, i).trim();//s3为新定义的类名
s2 = s2.substring(i + 1, s2.length() - 1).trim();//s2为参数列表
if(inst.size() < 5)
processLine1(s1, s3, s2, s);

}

   巧巧读书:http://www.qqread.com/java/e820899060.html

更多文章 更多内容请看Java环境安装配置Java编程开发手册专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 7 8 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章