1 Applet对Servlet的访问及参数传递的实现

2.1.1创建URL对象

在JAVA程序中,可以利用如下的形式创建URL对象

URL servletURL = new URL( "http://localhost:8080/servlet/dbServlet.DbServlet" );

2.1.2 与URL地址建立连接

在成功的创建了URL对象之后,可以调用URL类中的openConnection()函数来建立连接。openConnection()函数在建立连接的同时,进行通信连接的初始化工作。

URLConnection servletConnection = servletURL.openConnection();

2.1.3 利用URLConnection对象进行读写操作

2.1.3.1 利用URLConnection对象读取Servlet返回的信息

在获得URLConnection对象之后,如果Servlet向Applet传送的是JAVA对象,则可以利用URLConnection对象的openStream()方法获得输入流,然后新生成一个ObjectInputStream对象,利用ObjectInputStream对象的readObject()方法即可得到Servlet传回的JAVA对象。

ResultSet rs = null;


URL servletURL = null;
.

URLConnection servletConnection = null; 


ObjectInputStream dbStream = null; 

try

{

servletURL = new URL( "http://localhost:8080/servlet/dbServlet.DbServlet" );

servletConnection = servletURL.openConnection();

dbStream = new ObjectInputStream( servletURL.openStream() );

data = (ResultSet) dbStream.readObject();

}

catch( Exception e )

{

。。。

}

如果Servlet向Applet传送的是普通的文本,则可以利用URLConnection对象的getInputStream()方法获得输入流,然后新生成一个DataInputStream对象,利用DataInputStream对象的readLine()方法依次取得Servlet传回的文本。


DataInputStream dbStream = new DataInputStream( servletURL.getInputStream() );


While((inputLine= dbStream.readLine())!=null)

{

••••••.

}

2.3.1.2利用URLConnection对象对Servlet的传值操作

Applet向Servlet的有关参数传递,可以通过下面两种方法实现:

可以通过在URL地址后附加参数以GET的方式实现参数的传递:


servletURL = new URL( "http://localhost:8080/servlet/dbServlet.DbServlet?sql=select * from hklhzsj where total>100" )

另一种方法是从URLConnection连接获得输出流,这个输出流被连接到公共网关程序的(服务器端)的标准输入流上,然后把要传送的有关数据写入输出流,发送完毕关闭输出流。

String url1 = "http://localhost:8080/myApplet/servlet/SavePointToDBServlet";//servlet的地址

URL servletU = new URL(url1);

URLConnection servletC = servletU.openConnection();

servletC.setDoOutput(true);//允许输出

servletC.setDoInput(true);//允许写入

servletC.setUseCaches(false);

servletC.setRequestProperty("Content-Type","application/x-java-serialized-object");

OutputStream out = servletC.getOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(out);

oos.writeObject(newLocation);//向servlet输出一个对象

oos.flush();

oos.close();

servletC.getHeaderField(0);//这句话是很重要的,没有它服务器是没有反应的

2.2 Servlet向Applet的数据传递的实现

1.可以通过Servlet对象的request参数的getParameter()获得Applet传递过来的参数:

String sql=request.getParameter("newLocation");//引号里放参数的名称

2.可以通过request的getIntputStream()获得IO流连接

ObjectInputStream oin = new
ObjectInputStream(request.getInputStream());//获得连接 Map newPoint
=
(Map)
oin.readObject();
;

3.通过Servlet对象的request参数的getOutputStream()所得到的输出流新生成一个对象输出流ObjectOutputStream类型的对象,然后通过该对象的writeObject()方法输出JAVA类型的对象。

Class.forName(“sun:jdbc:odbcdriver”);

Connection conn =DriverManager.getConnection(connetionString)

Statement st=conn.createStatement()

ResultSet rs=st.execute(sql)

dbStream = new ObjectOutputStream( response.getOutputStream() );

// Write the object...

dbStream.writeObject(rs );

4.通过request参数的getWriter ()方法得到PrintWriter类型的输出,通过此对象的println()方法可以从Servlet向Applet输出文本:

PrintWriter out = response.getWriter();

out.println("

");

通过上面的分析我们通过Servlet 实现了对非宿主机上的数据库的访问,Servlet 与Applet通信提供了语言级别上的互相传递JAVA对象的便利,我们同样可以利用Applet通过CGI对各种服务器端的CGI程序或其它脚本应用程序(如ASP、JSP等)提供访问,以文本的方式实现通信。

最新文章

  1. jQuery-1.9.1源码分析系列(十) 事件系统——事件包装
  2. Thrift的TCompactProtocol紧凑型二进制协议分析
  3. Digital root(数根)
  4. springmvc图片文件上传接口
  5. NOIP总结
  6. 网站导航不止有hao123!
  7. WebViewJavascriptBridge 原理分析
  8. GNU/Linux下Freeplane的界面渲染问题
  9. IMCP网际控制协议
  10. 《Web Scraping With Python》Chapter 1的学习笔记
  11. NOIP2014-11-3模拟赛
  12. java I/O流详解
  13. 大数据 - Java基础:读取键盘输入的方法
  14. shell脚本学习-练习写一个脚本1
  15. Python3 字典 setdefault() 方法
  16. Linux系统编程——信号
  17. PHP开发——进制转换
  18. linux源码Makefile详解(完整)
  19. Linux alias别名命令
  20. 在 Ubuntu 上使用微信客户端

热门文章

  1. 我的sql数据库存储过程分页- -
  2. Sec site list
  3. Wex5执行Class[search.login__do] Method[login]失败
  4. .Net MVC5异步请求Entity Framework 无限循环解决方法
  5. windows下注册表的操作
  6. SSM框架下声明式事务管理(注解配置方式)
  7. gawk编程语言
  8. python实现四则运算和效能分析
  9. VM虚拟机链接克隆及linux eth0网卡的快速设置方法
  10. 你可能不知道的 JavaScript 中数字取整