【问题标题】:Programming Applet with servlet in Netbeans在 Netbeans 中使用 servlet 编程 Applet
【发布时间】:2014-03-10 06:34:01
【问题描述】:

我使用 Netbeans 7.4 通过创建 jApplet 文件来构建 Web 应用程序,该文件通过 Serializable 对象与 servlet 进行通信。 Servlet 文件将与 DB 通信并将结果发送到 applet,而且 applet 必须使用 Serializable 对象从 servlet 发送和接收数据。我实际上在源文件夹目录下创建了 servlet 和 JApplet 文件。错误是我无法在JApplet 和 servlet 之间获得任何通信,并且一直给我“协议不支持输出”。这是我连接到 servlet 的 Applet 代码:

    myObject = new ExpertDataObject();

    ((ExpertDataObject) myObject).setSession("EnterUser");

    ((ExpertDataObject) myObject).setUser(userText.getText());
    ((ExpertDataObject) myObject).setPassword(passText.getText());
    URL currentPage = getCodeBase();
    System.out.println(currentPage);

    String urlSuffix = "Server";
    URL urlServlet = new URL(getCodeBase(), "Server");
    System.out.println(urlServlet);

    URLConnection con = urlServlet.openConnection();

    con.setUseCaches(false);
    con.setDoOutput(true);
    con.setDoInput(true);
    con.setRequestProperty("Content-Type", "application/x-java-serialized-object");

    myOutputStream = new ObjectOutputStream(con.getOutputStream());

    myInputStream = new ObjectInputStream(con.getInputStream());

    myOutputStream.writeObject(myObject);

    myObject = (DataObject) myInputStream.readObject();
    if (myObject.getMessage().equals("success")) {
        dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");

....

谁能帮我展示在Netbeans 中创建jApplet 与servlet +mySQL 作为Web 应用程序通信的步骤。

提前致谢

阿瓦

这是我在服务器日志中找到的 2014 年 2 月 12 日上午 11:53:23 org.apache.catalina.core.StandardWrapperValve 调用 严重:servlet [Server] 的 Servlet.service() 在路径 [/ExpertToolAppletServlet2] 的上下文中抛出异常 java.io.EOFException 在 java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2325) 在 java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2794) 在 java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801) 在 java.io.ObjectInputStream.(ObjectInputStream.java:299) 在 Server.processRequest(Server.java:73) 在 Server.doGet(Server.java:177) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

这是我在 processRequest 下的 servlet 代码

   String contentType = "application/x-java-serialized-object";
   response.setContentType(contentType);
   InputStream inputStream = request.getInputStream();
   ObjectInputStream in = new ObjectInputStream(inputStream);
   myObject = (DataObject) in.readObject();
   String process= ((ExpertDataObject) myObject).getSession();

【问题讨论】:

  • System.out.println(urlServlet); 的输出是什么?
  • 嗨,peeskillet,感谢您的回复,它是文件:/Users/arwawali/Documents/NetBeansProjects/ExpertToolAppletServlet/build/web/WEB-INF/Server,Server 是我的 servlet 类名,我查看了到路径,我没有在那里找到类,除了使用getCodeBase()之外,我们如何在服务器上获取servlet类路径?
  • file:/ 协议不允许写入。在此处进一步阅读:stackoverflow.com/questions/4975743/…
  • 感谢 PeterMmm 的回复,我已将 urlServlet 更改为 URL urlServlet = new URL("localhost:8080/ExpertToolAppletServlet2/Server"); 现在我收到此错误:服务器返回 HTTP 响应代码:500 for URL:localhost:8080/ExpertToolAppletServlet2
  • 500 - Internal Server Error 查看服务器日志查找原因。

标签: java servlets web-applications netbeans japplet


【解决方案1】:

关于服务器的 500 错误消息:正如 EOFException 的文档所说:This exception is mainly used by data input streams to signal end of stream. 您可以尝试捕获异常:

   String contentType = "application/x-java-serialized-object";
   response.setContentType(contentType);
   InputStream inputStream = request.getInputStream();
   ObjectInputStream in = new ObjectInputStream(inputStream);

   myObject = null;
   try {
        myObject = (DataObject) in.readObject();
   } catch (EOFException ignore) {
   }

   if (myObject!=null) { 
      String process= ((ExpertDataObject) myObject).getSession();
   }

【讨论】:

  • 我捕获了异常,但我真的不知道是否有任何其他方法可以从 jApplet 读取对象。这是否意味着我必须只从 index.jsp 文件运行代码,或者我可以从源文件夹本身运行它,知道 jApplet 和 servlet 在 Web 应用程序项目下的同一文件夹中?再次感谢您的帮助。
  • 小程序正在浏览器中运行,客户端带有 Java 插件。
  • 这是从index.jsp引用源文件夹中jApplet的正确方法吗,localhost:8080/ExpertToolAppletServlet2/MainScreen" width="700" height="500"> , (MainScreen 是 jApplet 类) ?
  • 不,code 是 JApplet 类的 FQN。在此处进一步阅读:docs.oracle.com/javase/tutorial/deployment/applet/html.html
  • 非常感谢 PeterMmm。我会尝试你捕捉异常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多