`

URLConnection访问servlet无反应

阅读更多

这样完整的回路是ok的

 

客户端

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

public class Test {

	public static void main(String[] args) {
		try {
			new Test().go();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	public void go() throws Exception {
		try {
			URL clssURL = new URL("http://localhost:8080/WebTest/MyServlet");
			URLConnection connect = clssURL.openConnection();
			connect.setDefaultUseCaches(false);
			connect.setUseCaches(false);
			connect.setDoInput(true); 
			connect.setDoOutput(true); 
			connect.connect(); 
			OutputStream ops = connect.getOutputStream();
			ObjectOutputStream objout = new ObjectOutputStream(ops);
			objout.writeObject("xyz");
			ops.flush();
			
			InputStream in = connect.getInputStream();
			
			ObjectInputStream objStream;
			objStream = new ObjectInputStream(in);
		
			try {
				String obj = (String) objStream.readObject();
				System.out.println("the returned object:" + obj);
			} catch(java.lang.ClassNotFoundException ysy) {
			}
			in.close();
			ops.close();
		} catch(Exception e) {
			
		}

	}

}
 

servlet

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		try {
			System.out.println("doGet");
			ObjectOutputStream out = new ObjectOutputStream(res.getOutputStream());
			ObjectInputStream in = new ObjectInputStream(req.getInputStream());

			String string = (String)in.readObject();  
			
			out.writeObject(string + "server");
			out.flush();
			out.close();
			in.close();
		} catch(ClassNotFoundException e) {
			e.printStackTrace();
		}

	}

	public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		System.out.println("doPost");
		this.doGet(req, res);
	}

}

 

这样子,客户端能收到servlet的回应:"xyzserver",但如果屏蔽了客户端接收部分的代码后,servlet毫无反应

InputStream in = connect.getInputStream();
			
ObjectInputStream objStream;
objStream = new ObjectInputStream(in);
		
try {
    String obj = (String) objStream.readObject();
    System.out.println("the returned object:" + obj);
} catch(java.lang.ClassNotFoundException ysy) {
}
in.close();

 这是why?难道说非得要完整的消息发送接收回路吗?

 

调试下来是需要有这一句:connect.getInputStream();

servlet端才会有反应,但这还只是现象,隐藏在现象背后的本质是什么?servlet是提供service的,所以只对输入流即获取服务的流有反应?

分享到:
评论

相关推荐

    URLConnection进行网络编程

    在本文中,我们将深入探讨如何使用`URLConnection`进行网络编程,并结合提供的文件"4.3使用URLConnection进行网络编程"和"ConnectionServlet"来构建一个简单的客户端-服务器通信示例。 首先,了解`URLConnection`的...

    URLConnection的使用(1)

    对于那些希望实现客户端与服务器端(如网页或Servlet等)交互的应用开发者来说,理解并掌握`URLConnection`的使用方法至关重要。 #### 一、基本概念 1. **URL (Uniform Resource Locator):** 统一资源定位符,是...

    使用URL和URLConnection(多线程下载)

    为了提高效率,我们通常使用`RandomAccessFile`类,它可以随机访问文件的任意位置,非常适合这种场景。 4. **合并文件块** 所有线程完成下载后,如果文件是按照顺序分块下载的,那么通常情况下,它们会被自动合并...

    URL以及URLConnection的使用

    在Java编程语言中,URL(Uniform Resource Locator)和URLConnection是两个关键的概念,它们在处理网络资源的访问和交互中起到核心作用。本文将深入探讨URL的构造与解析、URLConnection的功能和使用方法,以及如何...

    客户端页面截取!URLCONNECTION

    在Java编程语言中,我们可以使用多种方法来实现这一功能,其中URLConnection是Java标准库提供的一种网络通信接口,虽然HttpClient更为流行,但URLConnection在某些场景下依然具有实用性。下面我们将深入探讨...

    java URL URLConnection

    在Java编程语言中,`URL`(统一资源定位符)和`URLConnection`是网络编程中的核心类,用于访问和交互互联网上的资源。这篇博客文章可能深入解析了这两个类的使用和内部工作原理。 `URL`类是Java.net包中的一个关键...

    UrlConnection连接和Socket连接的区别

    在使用`UrlConnection`时,我们通常会通过`openConnection()`方法创建连接,然后调用`setRequestProperty()`设置请求头,最后通过`getInputStream()`或`getOutputStream()`读写数据。 相比之下,`Socket`是更底层的...

    基于Servlet发送、接收SOAP消息的java源程序

    - 发送SOAP请求:Servlet可以使用`java.net.URLConnection`或Apache的 HttpClient库来构造和发送HTTP POST请求,其中请求体包含SOAP消息。 - 处理SOAP响应:接收到响应后,Servlet可以使用XML解析器解析响应体,...

    okhttp-urlconnection:3.10.0.jar

    okhttp-urlconnection:3.10.0

    java中用URLConnection_类post方式提交表单

    java中用URLConnection类post方式提交表单 java中用URLConnection类post方式提交表单是指在java应用程序中使用java.net.URLConnection类来实现POST方式的表单提交。POST方式是HTTP协议中的一种常见的请求方法,它...

    swing与servlet通信

    这可以通过`java.net.URLConnection`或Apache HttpClient等库实现。 - **Servlet处理请求**:服务器接收到请求后,根据URL映射找到相应的Servlet实例,调用其`service()`方法处理请求。 - **数据交换**:数据可以...

    Applet与Servlet之间的通信与交互

    1. **通过HTTP请求**:Applet可以使用URLConnection或HttpClient类向Servlet发送HTTP GET或POST请求。Servlet接收请求后处理数据,并通过HTTP响应将结果返回给Applet。这种方法简单直观,但可能会暴露敏感信息。 2....

    例10.03 使用URLConnection对象访问远程文件.rar_remote access java_url_远程文件

    总结,使用`URLConnection`访问远程文件涉及多个步骤,包括创建URL对象,建立连接,设置请求属性,读取或写入数据,并处理响应。通过熟练掌握这些概念和方法,开发者可以构建功能强大的网络应用程序,轻松地与远程...

    JDK中的URLConnection参数详解

    Java JDK 中的 `URLConnection` 是一个非常重要的网络通信接口,它是`java.net.URL`类的主要功能接口,用于打开和管理到互联网对象的连接。在本文中,我们将深入探讨`URLConnection`的一些关键特性和参数,特别是在...

    通过java.net.URLConnection发送HTTP请求

    首先,当我们需要向一个HTTP服务器发送请求时,我们可以创建一个URL对象,它代表了我们要访问的资源的地址。例如: ```java URL url = new URL("http://example.com"); ``` 接下来,我们需要通过URL对象打开一个...

    Okhttp-urlconnection

    同时使用picasso和OKHttp的时候,需要加入OKHttp-urlconnection

    servlet applet通讯的例子

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

    applet与servlet通讯

    3. **使用 URLConnection**:Applet 可以使用 `java.net.URLConnection` 类与 Servlet 进行通信,这允许发送自定义头和数据。 4. **使用 JNLP (Java Web Start)**:Java Web Start 提供了一种安全的机制,通过 JNLP...

    深入Java Servlet网络编程

    2 URLConnection类 第6章 利用Servlet上传和下载文件 6. 1 得到HTTP请求消息的内容 6. 2 利用Servlet得到上传的文件 6. 2. 1 上传文件及表单域的请求实体的分析 6. 2. 2 得到上传文件的编程实例 6. 3 使用...

Global site tag (gtag.js) - Google Analytics