`
hy_zhym
  • 浏览: 15666 次
  • 性别: 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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics