函数返回的结果问题
如果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); } |
- 用Photoshop给漂亮的烫发MM抠图
- Photoshop透明婚纱抠图大法
- Photoshop:让MM做个“变色龙”
- 用Photoshop来制作一款精美的宝宝照片墙
- Photoshop绝色美女通道抠图法
- 用Photoshop教你打造绚丽光芒效果
巧巧读书:http://www.qqread.com/java/e820899060.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5627篇文章)
- Java编程开发手册 (8276篇文章)
- 掌握JAVA的标准 (26次浏览)
- Ubuntu Linux系统中Java环境的安装配置 (25次浏览)
- JAVA编译时的常见错误 (25次浏览)
- 系统构建高性能J2EE应用的五种核心策略 (18次浏览)
- 如何在MyEclipse快速搭建Hibernate应用 (15次浏览)
- Nhibernate与代码生成器介绍 (14次浏览)
- 高手为你分析类的设计方法 (12次浏览)
- Java中利用反射实现类的动态加载 (12次浏览)
- JAVA运行时的产间错误 (11次浏览)
- J2SE综合:浅谈java程序发布之 jre 篇 (11次浏览)



