`
hy_zhym
  • 浏览: 15865 次
  • 性别: Icon_minigender_1
  • 来自: 济南
文章分类
社区版块
存档分类
最新评论

在applet中用URLConnection访问servlet为什么没反应?同样的代码在jsp中就可以。

阅读更多
import java.applet.Applet;
import java.io.BufferedInputStream;

import java.io.InputStream;
import java.io.InputStreamReader;

import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;

import javax.swing.JApplet;



public class AppletTest extends JApplet {

	public void init(){
		try{
		String addr = "http://192.168.100.162:8080/Payment/Dser";
	    URL url = new URL(addr);
	    URLConnection conn = url.openConnection();   
	    conn.setDoInput(true);   
	    conn.setDoOutput(true);   
	    conn.setUseCaches(false);   
	    conn.setRequestProperty("Content-Type",   
                "application/x-java-serialized-object");   
	     
	   
	    InputStream inS = conn.getInputStream();
	    String header = conn.getHeaderField(0);
	    inS = new BufferedInputStream(inS);
	    Reader r = new InputStreamReader(inS);
	    int c;
	    System.out.println("===================输出结果======================");
	    while ( (c = r.read()) != -1)
	      System.out.print( (char) c);
	    inS.close();
		}catch(Exception e){
			
		}
	}


}

 上面这是applet代码。

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>here</title>
</head>
<body>
	<APPLET codebase="." code="AppletTest.class" WIDTH=200 HEIGHT=100 >
  </APPLET>
</body>
</html>

 

上面是页面代码。

 

package com.jhhz.test;

import java.io.IOException;
import java.io.PrintWriter;

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

/**
 * Servlet implementation class Dser
 */
public class Dser extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Dser() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setHeader("pragma", "no-cache");
		response.setHeader("cache-control", "no-cache");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		out.print("123456789");
		System.out.println("in!");
		out.flush();
		out.close();
	}

}

 

上面是servlet代码。

 

把applet代码复制到jsp中测试完全成功,可是一用html调用applet,servlet就没反应,这是怎么回事呢?

 

问题解决了servlet应该这样写:

package com.jhhz.test;

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;

/**
 * Servlet implementation class CallServlet
 */
public class Dser extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public Dser(){
		super();
	}

	public void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, java.io.IOException {
		(req.getInputStream());
		resp.setContentType("application/octest-stream");
		ByteArrayOutputStream byteout = new ByteArrayOutputStream();
		DataOutputStream out = new DataOutputStream(byteout);
		out.writeUTF("11232");
		out.flush();
		byte buf[] = byteout.toByteArray();
		resp.setContentLength(buf.length);

		ServletOutputStream servletout = resp.getOutputStream();
		servletout.write(buf);

		servletout.close();
	
		System.out.println("in!");
	}



}

 

而applet应该这样写:

import java.applet.Applet;
import java.awt.Graphics;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;

public class Applet2 extends Applet {
	/**
	 * 
	 */
	private static final long serialVersionUID = -7072407105533722380L;
	String response;

	public void init() {

		try {
			String addr = "http://192.168.100.162:8080/Payment/Dser";
			java.net.URL url = new java.net.URL(addr);
			java.net.URLConnection con = url.openConnection();
			con.setUseCaches(true);
			con.setDoOutput(true);
			con.setDoInput(true);
		
			DataInputStream in = new DataInputStream(con.getInputStream());
			response = in.readUTF();
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	public void paint(Graphics g) {
		g.drawString("read from server :" + response, 10, 20);

	}
}

 

0
1
分享到:
评论

相关推荐

    applet+servlet+jsp描点

    在IT行业中,Web开发是至关重要的领域,而`Applet`、`Servlet`和`JSP`是Java Web开发中的核心组件,它们在构建基于MVC(Model-View-Controller)模式的应用程序时发挥着关键作用。让我们深入探讨这三个概念以及它们...

    Applet与Servlet之间的通信与交互

    在Java编程领域,Applet和Servlet是两种不同的技术,它们分别在Web应用的不同层面发挥作用。Applet是嵌入在HTML页面中的小型Java程序,能够提供客户端的交互功能,而Servlet则是运行在服务器端的Java程序,负责处理...

    applet与servlet通讯

    7. **使用 RMI (Remote Method Invocation)**:虽然 RMI 不是为浏览器环境设计的,但在特定情况下,通过加密和隧道技术,可以实现 Applet 与 Servlet 之间的 RMI 通信。 每种通信策略都有其优缺点,开发者应根据...

    Java Applet与Java Servlet的安全通信策略与实现.rar_applet_applet servlet_jav

    Java Applet与Java Servlet是两种在Web开发中用于交互的技术。Applet是早期Java技术的一种,它允许在浏览器中运行Java代码,而Servlet则是在服务器端处理HTTP请求的Java程序。两者结合,可以构建动态、交互式的Web...

    applet与jsp的交互

    5. **Servlet调用Applet方法**:在服务器端,一个Servlet可以加载并调用Applet的方法,传递参数,然后Applet执行特定的任务,最后将结果返回给Servlet,再由Servlet传递给JSP显示。 6. **使用Java RMI(远程方法...

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

    通过分析这个项目,开发者可以学习到如何在Servlet中创建处理请求的方法,如何在Applet中构造和发送请求,以及如何解析和展示Servlet返回的数据。同时,这也涉及到网络编程的基本概念,如HTTP协议、异步通信和数据...

    applet和servlet的通讯,并打印

    Applet是Java的一种小程序,它可以在用户的Web浏览器中运行,为用户提供交互式体验。而Servlet则是Java Web应用中的服务器端组件,用于处理HTTP请求并生成响应。在Applet和Servlet之间进行通信,通常是为了实现一些...

    Applet and Servlet Communication

    - **JDBC (Java Database Connectivity)**:如果需要访问数据库,Applet可以通过JDBC直接与Servlet共享数据库连接,Servlet执行SQL操作,然后返回结果给Applet。 - **Java Socket编程**:Applet和Servlet可以通过...

    Applet servlet

    Applet通过`URLConnection`对象打开连接,然后通过`ObjectInputStream`反序列化Servlet返回的`CachedRowSet`对象,从而可以在客户端处理查询结果。 ### 关键技术点总结 - **Applet与Servlet通信**:使用HTTP协议,...

    applet与servlet的网络通信

    在Java编程领域,`Applet`和`Servlet`是两种重要的技术,它们分别在客户端和服务器端发挥着关键角色。本篇文章将详细探讨`Applet`与`Servlet`的网络通信,以及它们如何协同工作来实现动态交互。 首先,让我们了解...

    servlet applet通讯的例子

    在Java Web开发中,Servlet和Applet是两种不同的技术,它们可以协同工作以实现特定的交互功能。Servlet是在服务器端运行的Java程序,用于处理HTTP请求并生成响应,而Applet是嵌入在HTML页面中的小Java程序,可以在...

    JSP Applet 源码

    通过深入研究JSP Applet源码,开发者可以更好地理解Java在Web环境中的运行机制,同时也可以为向现代Web技术迁移做好准备。虽然Applet的使用已不如以前广泛,但其背后的原理和编程思想仍具有学习价值。

    基于JSP applet的聊天室

    在Web开发领域,JSP(JavaServer Pages)和Applet是两种常见的技术,它们结合可以创建动态、交互式的在线应用,如我们的主题——“基于JSP Applet的聊天室”。这个聊天室系统利用了JSP的强大服务器端处理能力和...

    java 开发指南_applet和jsp篇

    Java开发指南——Applet与JSP篇主要涵盖了两个核心概念:Java小应用程序(Applet)和Java服务器页面(JSP)。这两个技术都是Java在Web开发中的重要组成部分,它们各自有其独特的作用和应用场景。 首先,Java Applet...

    Servlet和JSP技术简述(英文翻译)

    JSP文件在服务器端被转换为Servlet,然后执行。JSP的主要优点在于它使HTML设计人员和Java程序员能够更有效地协作,因为HTML模板和Java逻辑可以在同一个文件中定义,但逻辑部分可以通过Java脚本元素或JSP标签进行隔离...

    jsp和servlet帮助文档

    3. **JSP内置对象**:JSP提供了九个内置对象,包括request、response、session、application、page、pageContext、out、exception和config,这些对象可以直接在JSP页面中使用,无需显式创建。 4. **EL(Expression ...

    java中通过applet访问本地资源

    Java中的Applet是一种小型的Java程序,它可以在用户的Web浏览器中运行,提供了通过Web应用程序访问本地资源的能力。这种技术在早期的互联网应用中被广泛使用,允许开发者创建交互式的、动态的网页内容。然而,随着...

    Applet与servlet、数据库交互

    材料列表: 1.applet 数字签名 安全问题 2.Applet访问mysql数据库 3.Applet和Servlet利用http对象流通信 4.J2EE企业应用:Applet和Servlet的通信...等等

    jsp和servlet知识点总结

    综上所述,JSP和Servlet在Web开发中扮演着互补的角色,JSP专注于视图展示,Servlet负责逻辑控制。了解和熟练掌握它们的特性及用法,对于构建高效、健壮的Web应用程序至关重要。在实际项目中,常常结合MVC设计模式,...

Global site tag (gtag.js) - Google Analytics