- 浏览: 581525 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (268)
- ext基础 (72)
- Java基础 (68)
- jquery (14)
- oracle (21)
- sqlserver (7)
- linux (2)
- webserver (1)
- C/C++ (1)
- sql (9)
- IDE (2)
- java 智能卡 (1)
- mysql (6)
- ibatis (2)
- struts2 (3)
- cvs (1)
- 服务器 (1)
- html (11)
- freemarker (4)
- liferay (2)
- jMS (1)
- iphone (1)
- c# (1)
- Android (11)
- wince (6)
- javascript (4)
- ps (1)
- hibernate (1)
- 其他 (3)
最新评论
-
ilyq:
请问,px.gif 在哪里
斜线表头 -
jisang:
没看懂,第一个org.js和最后的js什么关系,可否发我一份完 ...
用ExtJS 实现动态载入树(Load tree) -
JavaStudyEye:
我去,能否搞个正确点的,,,
<#list ...
freemarker 遍历map 对象 -
PangSir:
大爱,简直是大爱!!困扰这么久以来的问题,虽然知道是CSS的问 ...
ExtJs checkbox radiobox 问题 汇总 -
skynet_java:
有demo嘛!邮箱:think_world@foxmail.c ...
消息推送服务需求 - 服务器开发、客户端开发
最近,在这里看到了几篇关于在applet中使用JDBC访问数据库的帖子,觉得大侠们有的回复很绝对,说applet不能访问数据库,不敢苟同,于是参照Sun的网上教程"[url=http://cn.sun.com/developers/onlineTraining/Programming/BasicJava1/data.html]Java程序设计语言基础: 实践指南,第1部分",做了一些实验,总结出来与大家分享,也请多多指教。
实验环境
DB Server #1: Solairs 8 + Oracle 8.1.7 + apache
DB Server #2: Solairs 8 + Oracle 8.1.7
Client: Windowsxp SP3 + J2SE6.0+ Oracle JDBC Driver
实验中使用的数据表的结构
运行此applet的html文件DbaAppl.html
<HTML>;
<BODY>;
<APPLET CODE=DbaAppl.class
WIDTH=200
HEIGHT=100>;
</APPLET>;
</BODY>;
</HTML>;
首先,DbaAppl.java中_url串指定的是与Web Server在同一台主机上(server1)的Oracle,编译后把DbaAppl.class和DbaAppl.html
一起放在Web Server的同一目录下,在客户机的浏览器里访问DbaAppl.html,查看Java控制台,得到如下信息
Cannot find driver
oracle.jdbc.driver.OracleDriver
java.lang.NullPointerException
这一出错信息的意思是,DriverManager 已在 applet HTML和类文件所在的目录以及当前JRE使用的本地CLASSPATH中没有找到 JDBC 驱动程序。
解决办法,将JDBC 驱动程序oracle-jdbc-driver.jar文件放在客户机当前使用的JRE的${JRE_HOME}/lib/ext目录下,或者用jar工具将oracle-jdbc-driver.jar解压,把解压后得到的oracle目录也放在Web Server上applet所在
的目录中。
更正后,重新访问DbaAppl.html,查看Java控制台,得到如下信息
java.security.AccessControlException: access denied(java.net.SocketPermission server1 resolve)
这个错误的通知你访问被拒绝。这就是说,由于 applet 程序试 图在没有获得正确的权限的情况下访问系统资源,括号中代码表示,若要纠正这种情况,您需要一个向数据库所在计算机(主机名为server1) 授予 applet 访问权限的 SocketPermission。
解决办法,利用 Policy 工具生成你所需要的策略文件,或者用一个 ASCII 编辑 器生成该策略文件。
下面的代码是名为 DbaApplPol 的、获得上述权限的策略文件的内容
创建了策略文件后,还要修改${JRE_HOME}/lib/security/java.security文件
在
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
下添加一行
policy.url.3=file:/path/to/DbaApplPol
再次访问DbaAppl.html,成功运行。
再将DbaAppl.java中_url串改为指定另一台主机(server2)上的Oracle,编译,上传,访问得到如下错误信息
java.security.AccessControlException: access denied(java.net.SocketPermission 10.6.1.16:1521 connect,resolve)
这回的意思是需要一个允许在数据库所在的server2上访问IP地址和端口的SocketPermission。在前面生成的策略文件中加入
permission java.net.SocketPermission "10.6.1.16:1521", "connect, resolve";
后,成功运行。
总结一下,通过applet访问数据库不是不可以的,但确实不太方便,某些特殊环境下可能值得使用。
[list=1]客户端要有JRE支持,可以在客户机访问applet所在页面是提示安装Java Plug-in,这样的页面可以通过HTMLConvert工具生成
JDBC驱动要么放在客户机JRE的CLASSPATH下,要么与applet放在一起,注意如果驱动是jar文件的话,要解开
通过设置正确的策略文件,applet不仅可以访问与自己在同一台机器上的数据库,也可以访问其他远程数据库。不过,需要每个想要成功运行applet的客户机修改其本地JRE的java.security文件
转:http://bbs.chinaunix.net/viewthread.php?tid=256602
作者:wolfg
实验环境
DB Server #1: Solairs 8 + Oracle 8.1.7 + apache
DB Server #2: Solairs 8 + Oracle 8.1.7
Client: Windowsxp SP3 + J2SE6.0+ Oracle JDBC Driver
实验中使用的数据表的结构
TABLE DBA ( TEXT varchar2(100), primary key (TEXT) )
import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.*; import java.applet.Applet; import javax.swing.*; import java.sql.*; import java.net.*; import java.io.*; public class DbaAppl extends Applet implements ActionListener { JLabel text, clicked; JButton button, clickButton; JTextField textField; private boolean _clickMeMode = true; private Connection c; final static private String _driver = "oracle.jdbc.driver.OracleDriver"; final static private String _url = "jdbc:oracle:thin:username/password@(description=(address_list=(address=(protocol=tcp)(host=developer)(port=1521)))(source_route=yes)(connect_data=(sid=ansid)))"; public void init(){ setBackground(Color.white); text = new JLabel("Text to save to file:"); clicked = new JLabel("Text retrieved from file:"); button = new JButton("Click Me"); button.addActionListener(this); clickButton = new JButton("Click Again"); clickButton.addActionListener(this); textField = new JTextField(20); setLayout(new BorderLayout()); setBackground(Color.white); add(BorderLayout.NORTH, text); add(BorderLayout.CENTER, textField); add(BorderLayout.SOUTH, button); } public void start(){ System.out.println("Applet starting."); } public void stop(){ System.out.println("Applet stopping."); } public void destroy(){ System.out.println("Destroy method called."); } public void actionPerformed(ActionEvent event){ try{ Class.forName (_driver); c = DriverManager.getConnection(_url); }catch (java.lang.ClassNotFoundException e){ System.out.println("Cannot find driver"); System.out.println(e.getMessage()); }catch (java.sql.SQLException e){ System.out.println("Cannot get connection"); System.out.println(e.getMessage()); } Object source = event.getSource(); if(source == button){ if(_clickMeMode){ JTextArea displayText = new JTextArea(); try{ //Write to database String theText = textField.getText(); Statement stmt = c.createStatement(); String updateString = "INSERT INTO dba VALUES ('" + theText + "')"; int count = stmt.executeUpdate(updateString); //Read from database ResultSet results = stmt.executeQuery("SELECT TEXT FROM dba "); while(results.next()){ String s = results.getString("TEXT"); displayText.append(s + "\n"); } stmt.close(); }catch(java.sql.SQLException e){ System.out.println("Cannot create SQL statement"); System.out.println(e.getMessage()); } //Display text read from database text.setText("Text retrieved from file:"); button.setText("Click Again"); _clickMeMode = false; //Display text read from database } else { text.setText("Text to save to file:"); textField.setText(""); button.setText("Click Me"); _clickMeMode = true; } } } }
运行此applet的html文件DbaAppl.html
<HTML>;
<BODY>;
<APPLET CODE=DbaAppl.class
WIDTH=200
HEIGHT=100>;
</APPLET>;
</BODY>;
</HTML>;
首先,DbaAppl.java中_url串指定的是与Web Server在同一台主机上(server1)的Oracle,编译后把DbaAppl.class和DbaAppl.html
一起放在Web Server的同一目录下,在客户机的浏览器里访问DbaAppl.html,查看Java控制台,得到如下信息
Cannot find driver
oracle.jdbc.driver.OracleDriver
java.lang.NullPointerException
这一出错信息的意思是,DriverManager 已在 applet HTML和类文件所在的目录以及当前JRE使用的本地CLASSPATH中没有找到 JDBC 驱动程序。
解决办法,将JDBC 驱动程序oracle-jdbc-driver.jar文件放在客户机当前使用的JRE的${JRE_HOME}/lib/ext目录下,或者用jar工具将oracle-jdbc-driver.jar解压,把解压后得到的oracle目录也放在Web Server上applet所在
的目录中。
更正后,重新访问DbaAppl.html,查看Java控制台,得到如下信息
java.security.AccessControlException: access denied(java.net.SocketPermission server1 resolve)
这个错误的通知你访问被拒绝。这就是说,由于 applet 程序试 图在没有获得正确的权限的情况下访问系统资源,括号中代码表示,若要纠正这种情况,您需要一个向数据库所在计算机(主机名为server1) 授予 applet 访问权限的 SocketPermission。
解决办法,利用 Policy 工具生成你所需要的策略文件,或者用一个 ASCII 编辑 器生成该策略文件。
下面的代码是名为 DbaApplPol 的、获得上述权限的策略文件的内容
引用
grant {
permission java.net.SocketPermission "server1", "resolve";
};
permission java.net.SocketPermission "server1", "resolve";
};
创建了策略文件后,还要修改${JRE_HOME}/lib/security/java.security文件
在
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
下添加一行
policy.url.3=file:/path/to/DbaApplPol
再次访问DbaAppl.html,成功运行。
再将DbaAppl.java中_url串改为指定另一台主机(server2)上的Oracle,编译,上传,访问得到如下错误信息
java.security.AccessControlException: access denied(java.net.SocketPermission 10.6.1.16:1521 connect,resolve)
这回的意思是需要一个允许在数据库所在的server2上访问IP地址和端口的SocketPermission。在前面生成的策略文件中加入
permission java.net.SocketPermission "10.6.1.16:1521", "connect, resolve";
后,成功运行。
总结一下,通过applet访问数据库不是不可以的,但确实不太方便,某些特殊环境下可能值得使用。
[list=1]
转:http://bbs.chinaunix.net/viewthread.php?tid=256602
作者:wolfg
发表评论
-
springboot 发布
2022-01-08 16:53 131java -jar spring-boot-druid-0.0 ... -
List 边遍历,边删除?
2020-07-17 16:51 393新手常犯的错误 可能很 ... -
servlet 文件上传
2012-08-10 10:52 1092org.apache.commons.fileupload 文 ... -
pdf 简单连接servlet
2012-07-25 10:05 1062protected void doGet(HttpSe ... -
应用 HttpClient 来对付各种顽固的WEB服务器
2012-04-11 17:38 937一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
MAVEN2入门学习心得(4)-知识汇集
2012-01-11 14:16 964一、创建Spring+Hibernate+Activiti+V ... -
MAVEN2入门学习心得(3)-仓库管理器Nexus相关
2012-01-11 14:11 1288以前觉得Nexus搭建太简单,没有留下学习重点,重新温习起来又 ... -
MAVEN2入门学习心得(2)-仓库相关
2012-01-11 14:08 1244MAVEN2的仓库基本可以分为主机仓库、代理仓库、本地仓库。 ... -
MAVEN2入门学习心得(1)-插件相关
2012-01-11 14:02 1111MAVEN2涉及到很多插件,掌握插件的学习方式很重要,要不然接 ... -
restful webserice
2011-08-11 20:06 901package com.onetown.action.admi ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-08-05 10:00 835这个问题是我的工程中 ... -
ibatis 一级缓存 功能
2011-01-28 15:50 2055前几天和朋友讨论数据库Cache的时候,谈到了iBatis框架 ... -
内存溢出的解决
2011-01-28 15:07 1030内存溢出虽然很棘手 ... -
oracle sql 基础
2010-12-25 14:52 836视图; create or replace view my_v ... -
计算 上一个 工作日的 自定义函数
2010-09-06 10:31 1751算法描述 1.获取日期参数,然后自减一 2.判断该日期是否是 ... -
Java 简单 计算任意两个日期之间的工作天数
2010-09-06 09:20 1726主要思路: 对于任意2个日期比如:date_start=201 ... -
java file
2010-09-05 21:37 1239追加文件尾部 public void testPrintWri ... -
验证码
2010-08-31 09:07 1000package com.pa.util; import ... -
java List与Array 转换
2010-08-31 08:57 35417public static void main(String[ ... -
java property 配置文件 用法
2010-08-14 18:12 4937在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我 ...
相关推荐
5.2 Applet访问数据库实例 5.3 Application访问数据库实例 5.4 使用Jdevelpoer工具的数据库开发实例 5.5 二层结构开发数据库的优缺点 5.6 本章小结 第6章 三层结构数据库开发实例 6.1 三层结构原理 6.2 JSP...
企业也可以用 JDBC 通过 Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用Java 编程语言,对从 Java ...
Java IDL 用连接池提高Servlet访问数据库的效率 在 ASP 文件中调用 Servlet Java Applet介绍 Applet与Servlet通讯的四种方法及其比较 在Applet中应用JDBC访问数据库 用XML与Servlet构建在线问答...
通过JDBC可以使用Java应用程序或Java applet访问网络上的各种数据库。本书首先介绍了JDBC的概念、结构和特点。然后逐步讲解了如何编写JDBC程序。最后给出了JDBC API的详细说明。附录中给出了JDBC的获取与安装的方法...
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法 模型 JDBC API 既支持数据库访问的两层模型(C...
在上面这个程序中我想你展示了如何使用JDBC-ODBC连接数据库,使用SQL语句生成一个表,使用SELECT、INSERT 、UPDATE语句取的、插入和更新一个表中的数据,如何通过字段名和字段索引访问数据库中的东东!我希望你能从...
案例5 利用DES加密解密 第七章 Java与数据库 案例1 在Applet中应用JDBC访问数据库 案例2 通过JDBC-ODBC桥连接数据库 案例3 通过tomcat数据源访问数据库 案例4 JDBC连接池的实现 案例5 用...
JAVA基础知识课件 适合初学者 包括 ch1 Java概述 ch2 Java基本语法 ch3 类与对象 ch4-1 继承、接口和多态 ...ch11 JDBC与数据库访问 ch12 Java网络编程 看完受益匪浅,对JAVA有新认识,大学生期末考试可90+
17.3 用jdbc实用工具简化数据库访问 17.4 使用预备语句 17.5 创建可调用语句 17.6 使用数据库事务 17.7 使用orm框架将数据映射到对象 第18章 配置msaccess,mysql和oracle9i 18.1 配置microsoftaccess与...
JDBC(Java DataBase connectivity, ... 从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件,例如: Java 应用程序 Java Applet
实例76 在APPLET中使用SWING 实例77 应用JAR包 实例78 播放声音 实例79 一个简单的SERVLET 实例8 类的标识和访问控制 实例80 使用SERVLET获取客户表单 实例81 SERVLET读取COOKIE数据 实例82 SERVLET读取SESSION数据 ...
在已有的 J2EE 项目中使用刚才创建的报表,需要如下步骤: (1) 导入 jar 包和相关文件 (a)将快逸报表安装目录\quieeReport\webapps\quiee\WEB-INF\lib中的 jar 包导入项目,并且导入所需要的mysql驱动包. (b)将\...
从MySQL数据库中获取数据。 b)取款:只能以50的倍数提取现金。 如果余额少于所需金额,则提示。 c)管理员访问权限:管理员访问权限可以查看所有帐户,添加帐户,删除帐户,操作记录。 #步骤运行该应用程序:1....
5.4.2 使用访问控制符 132 5.4.3 package和import 135 5.4.4 Java的常用包 140 5.5 深入构造器 140 5.5.1 使用构造器执行初始化 141 学生提问:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java...
图书详细描述: 本书将Java语言作为大学生的计算机程序设计入门语言,其特色是内容全面、深入浅出、辅助教材立体...多线程第9章 图形用户界面第10章 JDBC与数据库访问第11章 Servlet程序设计第12章 JSP程序设计参考文献
是Visual C++ 6.0程序设计学与用教程(起跑线)的源码.本书包括内容 Java语言是目前最为流行和通用的网络编程设计语言,在...19.2 访问数据库的步骤 19.3 JDBC的特性 19.4 获取数据库信息 附录A JDK新特性简介
在JSP中使用对象 181 隐式对象 181 特定应用程序对象 181 共享对象 182 JSP scripting 元素 182 声明 182 脚本(scriptlets) 183 表达式 184 在JSP页面中包含内容 185 转换控制到另一网络组件 185 参数元素 185 ...
6.4.1使用内部类访问对象状态 6.4.2内部类的特殊语法规则 6.4.3内部类是否实用、必要和安全 6.4.4局部内部类 6.4.5匿名内部类 6.4.6静态内部类 6.5代理 第7章图形程序设计 7.1 Swing概述 ...