通过dataInputStream将一些值从servlet传递给applet

时间:2014-12-15 07:40:40

标签: java servlets applet communication

我有一个servlet,我希望将该servlet中的一些值传递给applet。

流程就像这样

  1. 调用servlet的applet
  2. servlet为applet提供了一些值
  3. applet从servlet中检索一个值。
  4. 这是我的小程序代码:

    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());
    }
    

    applet.html 获取的网址值                                     

    这是我的 servlet代码:

    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
    

    我已经在web.xml中编写了servlet名称,就像这个

    一样
    <servlet-mapping>
            <servlet-name>MyApplet</servlet-name>
            <url-pattern>/MyApplet</url-pattern>
    </servlet-mapping>
    

    这件事让我感到有压力,为什么applet无法从servlet中接收到值?

    我的代码有什么问题吗?或者是那种我失踪的配置?

    现在我正在使用Spring,jsf和tomcat 7.0.20

    非常感谢你的帮助。

    问候

    阿尔伯特。

1 个答案:

答案 0 :(得分:0)

解决,

原因是

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

我在这个链接中找到了答案 Issues with Tomcat 7