`

applet与servlet的网络通信

阅读更多
applet与servlet的网络通信的例子

新建web项目,项目结构如下图:



package client;

import java.applet.Applet;
import java.awt.Button;
import java.awt.HeadlessException;
import java.awt.Label;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class NetEcho extends Applet implements ActionListener {

	TextField txtOutput;
	Button btnOutput;
	TextArea txtInput;
	Label lblOutput;
	Label lblInput;
	int turnOutput = 0;

	public void actionPerformed(ActionEvent arg0) {
		// TODO Auto-generated method stub

		if (txtOutput.getText() == null || txtOutput.getText().equals("")) {
			return;
		}

		try {
			URL url = new URL(
					"http://localhost:8080/appletServlet/NetEchoServlet"); // 打开连接
			URLConnection con = url.openConnection();
			con.setUseCaches(false); // 不用浏览器缓存
			con.setDoOutput(true);
			con.setDoInput(true);
			// 设置请求消息头
			con.setRequestProperty("Content-type", "application/octet-stream");
			turnOutput += 1;
			ByteArrayOutputStream byteOut = new ByteArrayOutputStream();

			DataOutputStream out = new DataOutputStream(byteOut);
			out.writeInt(turnOutput);
			out.writeUTF(txtOutput.getText());
			out.flush();

			byte[] buff = byteOut.toByteArray();
			// 设置请求消息中数据长度
			con.setRequestProperty("Content-length", "" + buff.length);
			DataOutputStream buffout = new DataOutputStream(con
					.getOutputStream());
			buffout.write(buff); // 将缓冲区中数据发出
			buffout.flush();
			buffout.close();
			// 读取输入
			DataInputStream in = new DataInputStream(con.getInputStream());
			txtInput.append(in.readInt() + ":" + in.readUTF() + "\n");
			in.close();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	public NetEcho() {
		super();
	}

	public void destroy() {
		// Put your code here
	}

	public String getAppletInfo() {
		return "This is my default applet created by Eclipse";
	}

	public void init() {
		// Put your code here
		lblOutput = new Label("发送的数据");
		lblInput = new Label("接收的数据");

		txtOutput = new TextField();
		txtOutput.setColumns(10);

		this.add(lblOutput);
		this.add(txtOutput);
		btnOutput = new Button("发送");
		this.add(btnOutput);
		txtInput = new TextArea("", 20, 30);
		this.add(lblInput);
		this.add(txtInput);
		btnOutput.addActionListener(this);

	}

	public void start() {
		// Put your code here
	}

	public void stop() {
		// Put your code here
	}

}


嵌入applet的html文件

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>applet发送至servlet例子</title>
    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
    
  </head>
  
  <body>
    
    <applet codebase="." 
            code="client.NetEcho.class" 
            name="NetEcho" 
            width="320" 
            height="240">
      
        
    </applet>
  </body>
</html>


servlet的源码:

package server;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class NetEchoServlet extends HttpServlet {

	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
//设置响应头MIME类型
		response.setContentType("application/octet-stream");
		
		DataInputStream in = new DataInputStream(request.getInputStream());
		ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
		
		DataOutputStream out = new DataOutputStream(byteOut);
		
//		读
		int i = in.readInt();
		String j = in.readUTF();
		
		out.writeInt(i); //写回客户端
		out.writeUTF(j);
		out.flush();
		
		byte[] buff = byteOut.toByteArray();
		response.setContentLength(buff.length);
		
//		取得输出流
		ServletOutputStream httpOut = response.getOutputStream();
		httpOut.write(buff); //发送
		httpOut.close();
	}

}


配置文件:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>NetEchoServlet</servlet-name>
    <servlet-class>server.NetEchoServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>NetEchoServlet</servlet-name>
    <url-pattern>/NetEchoServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


在tomcat中部署后的目录结构:


其中classes目录下的结构:


双击html文件,执行结果如下:



所有源码见附件:
  • 大小: 13.1 KB
  • 大小: 18.4 KB
  • 大小: 6.5 KB
  • 大小: 15.2 KB
分享到:
评论
3 楼 zhulin0504 2015-02-06  
怎么访问NetEcho.html页面呀???
2 楼 jiao_zg22 2014-03-31  
applet到servlet之后,我想在servlet里面用session回话,为什么总是为null?
1 楼 tokay 2012-08-15  

permission java.security.AllPermission;
才可以运行

相关推荐

    Applet与Servlet之间的通信与交互

    通过阅读《Applet与Servlet之间的通信与交互》系列文档,我们可以深入理解这两种技术的协作机制,从而更好地设计和实现动态Web应用。文档中的实例代码和解释可以帮助开发者掌握具体的实现细节,提升开发效率。同时,...

    Applet与Servlet的通信技术.pdf

    【Applet与Servlet的通信技术】是Java编程中的一种重要机制,主要应用于基于Browser/Server模式的应用系统开发。Applet是运行在用户浏览器上的小型Java应用程序,能够提供丰富的用户交互体验,而Servlet则是运行在...

    基于Java Applet与servlet通信技术的Web文本页面保护方法.pdf

    同时,该方法也使用了Java API提供的与网络通信相关的类来建立Applet与Servlet之间的通信。通过这种方式,可以实现Web文本页面的保护,并防止用户随意地下载和传播文本信息。 本文还讨论了该方法的实现过程,包括...

    applet与servlet通讯

    在构建多层网络应用时,Java Applet 和 Servlet 常常被一起使用。Applet 提供了构建强大、动态的界面到应用程序的便捷方法,而 Servlet 则为我们提供了高效处理 Web 或应用服务器请求的方式。Sun 的应用编程模型推荐...

    jasperreport报表模板预览 applet与servlet通信

    **jasperreport报表模板预览:applet与servlet通信详解** JasperReport是一款强大的开源报表工具,它允许开发者创建复杂、美观的报告,并能够轻松地集成到Java应用程序中。在JasperReport中,预览报表是开发过程中...

    Applet and Servlet Communication

    - **Java Socket编程**:Applet和Servlet可以通过自定义的Socket协议进行通信,这种方式灵活,但需要处理网络连接和数据编码解码的问题。 4. **实例分析** 包含的文档"Applet与Servlet通讯的四种方法及比较.doc...

    J2EE企业应用之Applet和Servlet间的通信

    由于浏览器的安全模型,Applet在与Servlet通信时面临一些限制。Applet只能与发布它的服务器进行通信,不能直接访问本地文件系统或执行本地程序,也不能创建或接受非源服务器的socket连接。这使得直接从Applet访问...

    Applet与Servlet的通讯.txt

    下面将详细介绍Applet与Servlet如何通过网络进行数据交换,以及涉及到的关键技术点。 ### Applet与Servlet通信概述 Applet是一种可以在Web页面上运行的小型Java应用程序。Servlet则是一种服务器端的技术,用于处理...

    Applet servlet

    标题与描述概述的知识点主要集中在Applet与Servlet之间的通信机制,以及如何利用这一机制操作数据库。这涉及到Java的网络编程、数据库访问技术以及Applet与Servlet的交互方式。以下是对这些知识点的详细解析: ### ...

    一个servlet 和 applet 通讯的完整项目

    1. **初始化通信**:Applet通过HTTP请求与服务器上的Servlet建立连接,可能通过URL或者AJAX请求进行。 2. **数据交换**:Applet发送数据到Servlet,可能是用户输入或者Applet内部计算的结果。Servlet接收到数据后,...

    深入java servlet网络编程

    理论结合实际,分门别类讲述了Servlet编程方法、会话管理、服务器端图形生成、网络编程、上传和下载文件、使用数据库、在数据库中存取图象、Servlet链、Servlet服务器端包含、Applet和Servlet通信、在Servlet中发送...

    servlet applet通讯的例子

    另一种方式是Applet直接通过URLConnection或HttpURLConnection与Servlet通信,发送请求并接收响应。 2. **URLConnection类**: - TestURLConnection这个文件可能是一个演示如何使用URLConnection来建立Servlet和...

    深入Java Servlet网络编程

    1 初识Applet和Servlet网络通信 11. 2. 2 Applet和Servlet之间传递对象 11. 3 Applet和Servlet之间实现远程方法调用 11. 3. 1 远程方法调用中的设计模式 11. 3. 2 设计应用程序子协议 11. 3. 3 远程方法调用的...

    A-S.rar_servlet applet

    本案例中,"A-S.rar_servlet applet"是一个示例项目,展示了如何利用序列化对象在Servlet和Applet之间进行通信,这对于理解Java网络编程以及Web应用程序的交互机制具有很高的学习价值。 首先,让我们深入了解一下...

    Java Applet与浏览器间的通信技术.pdf

    本文档主要探讨的是Java Applet如何与浏览器进行通信,这是理解Web应用程序交互机制的关键部分。 一、Java Applet的基本概念 Java Applet是一种小型的Java程序,它可以被浏览器执行,提供动态的、交互式的网页内容...

    JAVA SERVLET 高级编程

    本教程将深入探讨Java Servlet在处理多媒体信息、集成Java Server Pages (JSP)技术、实现Servlet与Applet的通信以及Servlet间的通信等高级主题。 1. **处理多媒体信息** 在Servlet中处理多媒体信息通常涉及到读取...

    applet图片扫描程序

    - 交互与通信:如果需要将扫描的图片上传到服务器,Applet可以通过`doGet()`或`doPost()`方法与Servlet进行通信,将图片数据作为HTTP请求的一部分发送。 5. **安全性和限制**:由于Applet运行在客户端,因此存在...

    Servlet教程.pdf

    Servlet的框架设计使得开发者能够专注于业务逻辑,而无需关心低级别的网络通信细节。Servlet API还提供其他辅助方法,如获取Servlet配置信息、参数、日志记录等,极大地提高了开发效率和灵活性。 总的来说,Servlet...

    Servlet

    容器能够确保Servlet对象对每个请求进行正确处理,从而实现高效且安全的网络通信。 #### 二、Tomcat配置与启动 Tomcat作为广为使用的开源Web服务器,基于Java语言编写,需配置特定环境才能正常运行。配置的关键...

Global site tag (gtag.js) - Google Analytics