Java 通过dataInputStream将一些值从servlet传递给小程序

Java 通过dataInputStream将一些值从servlet传递给小程序,java,servlets,applet,communication,Java,Servlets,Applet,Communication,我有一个servlet,我想将一些值从该servlet传递给applet 水流是这样的 dataInputStream : java.io.DataInputStream@9abc69 servlet Values : 1010792557 <servlet-mapping> <servlet-name>MyApplet</servlet-name> <url-pattern>/MyApplet</url-p

我有一个servlet,我想将一些值从该servlet传递给applet

水流是这样的

dataInputStream : java.io.DataInputStream@9abc69
servlet Values : 1010792557
<servlet-mapping>
        <servlet-name>MyApplet</servlet-name>
        <url-pattern>/MyApplet</url-pattern>
</servlet-mapping>
  • 调用servlet的小程序
  • servlet为小程序提供了一些值
  • 小程序从servlet中检索值
  • 这是我的小程序代码:

    public void start() {
      URL url = new URL(getCodeBase(), getParameter("URL"));
      System.out.println("opening url : " + url);
      URLConnection con = url.openConnection();
      con.setDoInput(true);
    
      DataInputStream obIn = new DataInputStream(con.getInputStream());
      System.out.println("dataInputStream : " + obIn);
    System.out.println("servlet Values : " + obIn.readInt());
    }
    
    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException,ServletException {
         DataOutputStream dos = new DataOutputStream(res.getOutputStream());
         dos.writeInt(100);
         dos.close();
       }
    
    它从applet.html中获取的URL值

    这是我的servlet代码:

    public void start() {
      URL url = new URL(getCodeBase(), getParameter("URL"));
      System.out.println("opening url : " + url);
      URLConnection con = url.openConnection();
      con.setDoInput(true);
    
      DataInputStream obIn = new DataInputStream(con.getInputStream());
      System.out.println("dataInputStream : " + obIn);
    System.out.println("servlet Values : " + obIn.readInt());
    }
    
    public void service(HttpServletRequest req, HttpServletResponse res) throws IOException,ServletException {
         DataOutputStream dos = new DataOutputStream(res.getOutputStream());
         dos.writeInt(100);
         dos.close();
       }
    
    我在java控制台中发现的结果如下

    dataInputStream : java.io.DataInputStream@9abc69
    servlet Values : 1010792557
    
    <servlet-mapping>
            <servlet-name>MyApplet</servlet-name>
            <url-pattern>/MyApplet</url-pattern>
    </servlet-mapping>
    
    我已经在web.xml中编写了servlet名称,如下所示

    dataInputStream : java.io.DataInputStream@9abc69
    servlet Values : 1010792557
    
    <servlet-mapping>
            <servlet-name>MyApplet</servlet-name>
            <url-pattern>/MyApplet</url-pattern>
    </servlet-mapping>
    
    
    MyApplet
    /MyApplet
    
    这件事让我感到很紧张,为什么小程序不能从servlet接收值

    我的代码有什么问题吗?还是我遗漏了什么

    现在我正在使用Spring、jsf和Tomcat7.0.20

    非常感谢你的帮助

    问候

    阿尔伯特

    已解决

    原因是

    tomcat 7默认使用HttpOnly会话cookie(这些cookie在tomcat 5.5和6中可用,但在默认情况下是关闭的)。这导致浏览器中的Java插件出现问题,它无法获取会话ID cookie并将其传递给小程序代码

    我在这个链接中找到了答案

    我已经在tomcat 6.0.32上尝试过了,它在tomcat 6.0.32上运行良好,所以问题是,如何使它在tomcat 7.0.20上运行。