Servlet aus programm abfragen

  • Themenstarter Themenstarter grayson
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

grayson

Gast
hallo,

ich habe ein servlet, bei dem ich mit 2 knöpfen eine variable auf true oder false setzen kann.

jetzt möchte ich aus einem javaprogramm heraus auf das servlet zugreifen und herausfinden, ob die variable true oder false ist.

momentan hab ich grad sowas von keinen plan wie ich das anstellen soll..... :?
 
HÄ?

wie willst du "von einem javaprogramm" aus auf ein servlet zugreifen? lass das mal lieber (wer soll dir denn eine Referenz auf das Servletobjekt geben??)

auf ein servlet greift man über HTTP zu!
 
Bleiglanz hat gesagt.:
HÄ?

wie willst du "von einem javaprogramm" aus auf ein servlet zugreifen? lass das mal lieber (wer soll dir denn eine Referenz auf das Servletobjekt geben??)

auf ein servlet greift man über HTTP zu!

In JAVA können Programme per HTTP auf Servlets zugreifen, und sogar Datenströme öffnen!
Aber du hast Recht was das HTTP angeht!


Programm:
Code:
URL myUrl = new URL(Url zum Servlet);

try
    {

      // Verbindung zum Servlet aufbauen

      HttpURLConnection con = (HttpURLConnection) myURL.openConnection();

      con.setRequestMethod("POST");
      con.setDoInput(true);
      con.setDoOutput(true);
      con.setUseCaches(false);

      // Daten zum Servlet senden(hier Text)

      BufferedOutputStream bus = new BufferedOutputStream(con.getOutputStream());
      DataOutputStream dos = new DataOutputStream(bus);
      dos.writeBytes("test\n");

      dos.flush();
      dos.close();

      // Daten vom Servlet empfangen

      DataInputStream result = new DataInputStream(new BufferedInputStream(con.getInputStream()));
      
       String text = result.readLine();
      

      result.close();
      myURL.disconnect();

    }catch(IOException conny){}

Servlet:
Code:
    // Daten vom Programm empfangen

    ServletInputStream sir = request.getInputStream();
    DataInputStream dis = new DataInputStream(sir);

    String text = dis.readLine();
   
    // Zurücksenden zum Programm

    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println(text);
 
lern erst mal die Servlet API

und google dann nach Java+HTTP+POST+HttpUrlConnection

wenn du einen Post machst, dann übergibst du einfach beliebige

key=value

als Strings und kannst dann im Servlet mit

getParameter(key)

diese werte wieder auslesen

[mann muss nicht den rohen eingabestrom dekodieren, das mach i.A. der Webcontainer]
 
Sind das den etwa keine Params?
Diese Parameter lassen sich auch in der URL angeben, d.h. jeder der die Param-keys kennt, kann dein Servlet über einen normalen Webbrowser benutzen.
Mit den Streams lassen sich übrigens nicht nur Strings senden! Die hab' ich hier nur im Beispiel benutzt!
 
wollte nur sagen, dass das HTTPServlet eben vom Webcontainer die eingabeparameter kostenlos als key-value paare auf dem präsentierteller erhält (das ist eine gewisse erleichtung beim Proggen)

wenn du beliebige inputs machen willst, dann implementier doch lieber das generische servlet und überschreib die service methode, ist natürlich geschmacksache
 
Kian hat gesagt.:
Diese Parameter lassen sich auch in der URL angeben, d.h. jeder der die Param-keys kennt, kann dein Servlet über einen normalen Webbrowser benutzen.

jein. parameter in der url werden per GET übertragen. wenn du im servlet nur POST erlauben willst, dann brauchst du im HttpServlet auch nur die doPost() implementieren. mal ganz davon abgesehen: wäre das denn schlimm? imo ist der webbrowser als thin client bei servlets die ideale schnittstelle zum anwender.
 
jo, habs auch so gemacht... war halt schon ein paar jährchen her das ich was mit servlets gemacht hab 😉 danke für eure antworten, hatmir sehr geholfen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben