首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

2012-12-20 
在applet中用URLConnection访问servlet为什么没反应?同样的代码在jsp中就可以。import java.applet.Applet

在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 stubresponse.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);}}

?

热点排行