javacode durch Html ausfuehren

dany

Mitglied
Halli, hallo,

Ich moechte gerne eine kleine remote-app schreiben,
die moeglichst SIMPEL und klein ist und plattformunabhaengig ist.

Daher habe ich mir folgendes ueberlegt:

Den remote-server als Java-servlet (im Glassfish)

und

den Remote-client als Html5.

Folgenden Code habe ich schon zusammen:

HTML:
index.html

<form>
  <button name="ALT+CTRL+L" action="http://localhost:8080/TestRobotKeys">
  Desktop sperren</button>
</form>

und:
Java:
TestRobotKeys.java

import java.awt.Robot;
import java.awt.*;
import java.awt.event.KeyEvent;

public class TestRobotKeys {

    private Robot robot;

    public static void main(String[] args) {
        new TestRobotKeys();
    }

    public TestRobotKeys() {
        try {
            robot = new Robot();
            robot.keyPress(KeyEvent.VK_ALT);
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_L);
            
        } catch (AWTException ex) {
            ex.printStackTrace();
        }
    }

}

Wie kann ich den Javacode per Button ausfuehren lassen?

Vielleicht kann mir jemand helfen dies zum laufen zu bringen?

Mfg dan

(Und vielleicht geht das auch ohne awt, halt so einfach wie moeglich, damit das auch ein Java-Anfaenger wie ich versteht🙂)
 
Zuletzt bearbeitet:
Wie du schon geschrieben hast, musst du dir ein Java Servlet erstellen.
Dieses soll dann bei GET Aufrufen das html zurückgeben und bei POST Aufrufen den von dir gezeigten Code ausführen.

Hierzu solltest du dir vill Tutorials für Servlets ansehen.
 
@dany
HTML-Formulare werden standardmäßig als HTTP-GET-request an den Server gesendet. Wenn du einen HTTP-POST absetzen willst, dann musst du das explizit angeben

<form action="...." method="post" target="....">

Das sind aber HTML/HTTP-Grundlagen und geht an deiner eigentlichen Frage vermutlich vorbei. Anti-Held hat schon Servlets angesprochen. Diese sind Grundlagen für alles Weitere, wenn du HTTP-request serverseitig verarbeiten willst.

Vielleicht kommunizierst du noch einmal etwas genauer, was du tatsächlich genau vorhast... HTML/HTTP-Grundlagen sollten aber schon vorhanden sein, sonst ist das hier (zunächst noch) das falsche Forum.


Falls du jedenfalls wirklich vorhaben solltest Client-seitig den Desktop zu sperren, dann vergiss dein Vorhaben. Das wird durch Server-seitig laufenden Java-Code niemals funktionieren.
 
Zuletzt bearbeitet:
Hallo, hatte leider die letzten Tage noch viel zu tun, aber ich wuerde das Problem immer noch gerne loese.

Daher erklaer ich es vielleicht nochmal genauer.

Also ich moechte gerne einen Schalter in HTMl haben auf dem client (Ein button, besser aber ein Image oder link😉
HTML:
<a href="http://localhosts:8080/TestRobotKeys"><img src="button.png" /></a>

oder

HTML:
<form method="post" action="http://localhost:8080/TestRobotKeys">

  <input type="submit" value="Display sperren"/>
</form>

Ein klick auf den Button (auf dem Client) soll die Funktion TestRobotKeys auf dem Server starten.

Ware schon wenn da einer eine einfache Moglichkeit hatte 🙂
 
Frage:

1. Welcher Bildschirm soll den gesperrt werden?
2. Wer klickt auf den Button?
3. Anwendungsebiet ? (Büro, Privat)

Irgendwie ist hier kein Plan, weil je nachdem wer da draufklickt und welcher Bildschirm gesperrt wird, gibt es verschiedenste Möglichkeiten.
 
Zuletzt bearbeitet:
Da es hier scheinbar nicht um die Frage geht ob die Geschichte Sinn macht oder nicht, würde ich das ganze mit einem Rest Service nutzen.

Den Sinn deiner Applikation verstehe ich nicht so ganz, aaaber das ist ja nicht die Frage 😉

Liebe Grüße
 
@dany:
Leider fehlt uns hier eine genauere Beschreibung was du als Ziel hast.
Du redest etwas von Server, Client und Remote und HTML.

Du hast anscheinend eine Serveranwendung und willst diese "steuern" können. Durch eine Clientanwendung oder eine Webseite?

Wenn du es als Webseite haben willst kann ich dir Vaadin empfehlen:

Dieses Framework ermöglicht eine ganz simple Programmierung von Webanwendungen durch Java.
Hier werden Anwendung inkl UI normal in Java programmiert, die UI wird vom Framework automatisch in HTML inkl JavaScript (wenn gebraucht) umgewandelt. Und kann von jedem X-beliebigen Browser aufgerufen werden.
Es kann ganz einfach auf Klicks reagiert werden, welche per Event an den Server weitergereicht werden.
 
@Joose
Du hast anscheinend eine Serveranwendung und willst diese "steuern" können. Durch eine Clientanwendung oder eine Webseite?
Genau, Der Client (in Html) steuert den Server(das Servlet). Ich klicke also auf meinem Tablet einen Button und auf dem Server wird der Bilschirm gesperrt.

das hoert sich schonmal gut an.

Habe aber schon weiter gemacht, das sieht jetzt so aus:

index.html
HTML:
<form method="post" name="postform" action="/WebApp/NewServlet">

web.xml
HTML:
<servlet-name>NewServlet</servlet-name>
        <servlet-class>javax.NewServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>NewServlet</servlet-name>
        <url-pattern>/NewServlet</url-pattern>

und Servlet:
NewServlet.java: !!!Hier ist mein Problem

[Java]
public class NewServlet extends HttpServlet {

private Robot robot;


@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

try {

robot = new Robot();
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_L);

} catch (AWTException ex) {
}


}

}
[/code]

Gibt zwar keinen Error, macht aber auch nichts..

(Muss ich im Netbeans vllt. noch den CP fuer die Servlet-api angeben?)
 
Zuletzt bearbeitet von einem Moderator:
Mal ein paar Fragen:
a) Welche Projektabhängigkeiten definierst du?
b) Hast du deine Tastatur-Steuerung schon in einem lokalen Projekt ausprobiert?
c) Hast du schon ein Hello-World-Servlet deployt?

Falls du eine der Fragen nicht beantworten kannst, würde ich dir erstmal stark empfehlen ein paar Grundlagen zu schaffen, dann müsstest du deinem Fehler sehr schnell auf die Spur kommen, denn viel Code ist es ja nicht.
Und Literatur / Tutorials gibt es zu genüge.
Ob eine Tastatur-Steuerung grundlegend vom Applikationsserver erlaubt ist, weis ich nicht, ich finde auch leider nichts dazu, aber mit Hardware-Zugriffen habe ich schon gearbeitet, daher könnte auch dies klappen.

Viel Erfolg!
 
Zuletzt bearbeitet:
@JeromeC
zu:

a) Welche abhängigkeiten meinst du (imports), servlet-api oder was?
b) ja, hat geklappt, siehe ersten Code. Bei dem erweitern des HtttpServlet hat sich ein Fehler eingeschlichen(oder mehre)
cja hat auch geklappt.

Ich würde den Code nun gerne zum Laufen bringen, möglichst ohne irgendwelche Abhängigkeiten, ich will auch kein Java-Programmierer werden, mit "javac -cp $Glassfish... NewServlet.java" von der konsole kompilieren würde schon reichen, ohne Netbeans und Eclipse, wäre schön, einfach ein simpler Code,ohne Gedöns und so.
 
Aber eben deswegen nutzt man IDE's, damit man nicht soviel (Gedönß) machen muss.
Am einfachsten wäre es, wenn du es wie in diesem Tutorial machst. Die dann exportiere .war-Datei musst du in den Deploy-Ordner deines Applikationsservers schmeißen und dann die URL aufrufen. Einfacher wäre es natürlich noch gleich komplett in der IDE zu arbeiten, dann müsstest du nur auf das Projekt rechtsklicken -> Run as -> Run on Server machen.

Den Weg ohne IDE kann ich dir leider nicht sagen, ich kenne ihn nicht, aber da mir z.B. ANT das Projekt baut und kompiliert denke ich nicht, dass es so trivial sein wird.
 
Zuletzt bearbeitet:

Zurück
Oben