可以从applet调用servlet

时间:2013-10-11 07:16:25

标签: java javascript servlets applet

我不熟悉java和applet,所以任何人请告诉我以下我的任务的可能性。

  1. 我想从applet调用Servlet ..这可能吗?

  2. 如果第一个可以,我们可以将Servlet输出像XML数据或字符串一样存储在applet变量中吗?

  3. 如果第二个是可能的,那么可以使用JavaScript或J Query获取该变量值吗?

  4. 如果可能的话请给我一个简单的例子。

    提前致谢。

3 个答案:

答案 0 :(得分:1)

一:是的,你可以从applet调用servlet进行http调用

第1步:对您的servlet进行http调用

第2步:让你的servlet返回XML响应

第3步:解析xml响应

使用此程序可以调用servlet

package com.hussain;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;
import java.util.ArrayList;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class callServlet {

    public static void main(String[] args) 
    {
        String servletResponse = callServlet.sendRequest("http://gdata.youtube.com/feeds/base/videos?max-results=10&start-//index=1&alt=json&orderby=published&author=astrobixweb");
        callServlet.parseFromXMLResponse(servletResponse);
    }
    public static String sendRequest(String url) {
        String result = "";
        try {
            HttpClient client = new DefaultHttpClient();
            HttpParams httpParameters = client.getParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
            HttpConnectionParams.setSoTimeout(httpParameters, 5000);
            HttpConnectionParams.setTcpNoDelay(httpParameters, true);
            HttpGet request = new HttpGet();
            request.setURI(new URI(url));
            HttpResponse response = client.execute(request);
            InputStream ips = response.getEntity().getContent();
            BufferedReader buf = new BufferedReader(new InputStreamReader(ips,"UTF-8"));
            StringBuilder sb = new StringBuilder();
            String s;
            while (true) {
                s = buf.readLine();
                if (s == null || s.length() == 0)
                    break;
                sb.append(s);
            }
            buf.close();
            ips.close();
            result = sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    public static void parseFromXMLResponse(String respo) 
    {
        // parse your XML response here
    }   
}

答案 1 :(得分:1)

  1. 是的,你可以。 servlet公开了一个URL,您可以在URLConnection类的帮助下获得该URL。
  2. 您可以再次执行此操作,请参阅here了解如何使用网址连接。
  3. 您也可以这样做,创建一个applet来获取applet字段,然后查看here如何调用该方法。
  4. 但所有这些听起来都非常复杂。你为什么不告诉我们你想要达到的目标,也许有一种更简单的方法可以做。

答案 2 :(得分:0)

移入你的问题,

  1. 您可以从小程序中调用servlet:

    • 构建将触及您的servlet的url
    • 使用java.net.URLConnection对象保存小程序的连接,URLConnection con = urlToServlet.openConnection()
    • 'con.setDoOutput(true)'=>应用程序打算将数据写入URL连接。
    • 使用输入和输出流与Servlet进行通信 con.getInputStream()con.getOutputStream()

    [注意:不要忘记关闭所有连接和流]

  2. 现在,使用您从InputStream获得的数据,以您想要的形式。

  3. 极其简单,使用此代码:
    在Applet中:
       public String getYourString(){ return responseFromServlet;}
    在Javascript中:
       var jsResp = document.name_of_your_applet.getYourString();

  4. 希望,你得到了答案!