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??)
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??)
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);
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
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.