Rest Webservice, Spring - Tomcat ohne Einsatz von Servlets

LitWeb

Mitglied
Hallo Leute,

ich habe vor eine Client Server Anwendung umzusetzen.

Der Clientseitige Teil wird in reinem Xhtml und JavaScript - Jquery - JQueryUI umgesetzt. Es soll im Client Teil nichts mit Java eingesetzt werden. Das ist kein Problem.

Nun der Serverseitige Teil soll eine Java Anwendung sein die über einen Tomcat läuft und als REST Webservice dienen, Json wird hier als Datenaustauschformat hauptsächlich zum Einsatz kommen.

Es soll Java Seitig auch das Spring Framework zum Einsatz kommen, kein MVC sondern DI und Hibernate soll auch eingesetzt werden.

Nun habe ich reichlich gegoogelt, aber ich komme immer auf Sachen die auf Servlets hinauslaufen, was aber nicht sein soll.

Es soll eine EE Application werden und in Eclipse entwickelt werden.

Habt ihr für mich ne gute Quelle wie ich das aufbauen kann, was ich wie machen muss ohne Servlets einsetzen zu müssen?

Vielen für eure Hilfe Grüß an alle.
 
Genau darum gehts ja, es soll ohne Servlets sein. Und da finde ich momentan auch im Zusammenhang mit Spring nichts dazu.
 
Gibt's nen bestimmten Grund, warum Du keine Servlets einsetzen willst/sollst?

Du kannst das Servlet ja einfach nur als Dateneingang verwenden und den Rest der Applikation in J2EE schreiben. Mit Jscript schießt Du dann einfach einen POST request an das Servlet und sendest Dein Jason Format als Payload mit. Der Vorteil ist, dass das Servlet dir die Daten schon in den Objekten Request/Response kapselt und Du direkt auf z.B. GET Parameter und POST Payload zugreifen kannst.
 
Es soll da eben alles über Controller passieren und ein Servlet ist kein Controller. Heist die Request Eingänge gehen z.B. an einen Rest Controller, dieser lädt einen speziellen Service Controller und so weiter dann.
 
Es soll da eben alles über Controller passieren und ein Servlet ist kein Controller. Heist die Request Eingänge gehen z.B. an einen Rest Controller, dieser lädt einen speziellen Service Controller und so weiter dann.

Wie bitte? Schon mal mit Spring MVC auseinandergesetzt? Du registrierst lediglich ein DispatcherServlet und dieses kümmert sich um alles. Folgendes Beispiel: Du registriest dein Dispatcher auf "/*". Jetzt werden alle einkommenden Request an das DispatcherServlet geleitet und dieses sucht dann den passenden Controller zur URL. Du hast überhaupt nichts mehr mit Servlets zu tun bzw. erstellst nur noch Controller keine Servlets.
 
Ok, ich muss da eben zugeben das ich im gängigen MVC Prinzip schon Ahnung habe, aber mit Spring so eben noch nicht.

Das heist, das Servlet kann da die Funktion eines Front Controllers übernehmen und dieser kann je nach Request dann Controller etc. laden? Richtig, oder verstehe ich das falsch?
 
Ok, ich muss da eben zugeben das ich im gängigen MVC Prinzip schon Ahnung habe, aber mit Spring so eben noch nicht.

Das heist, das Servlet kann da die Funktion eines Front Controllers übernehmen und dieser kann je nach Request dann Controller etc. laden? Richtig, oder verstehe ich das falsch?

Spring MVC funktioniert wie folgt: Du registriest ein DispatcherServlet. Dieses Servlet hängt sich vor jeden Request und dispatched den request zu dem richtigen Controller. Du registrierst jetzt Controller. Sagen wir, du hast ein Registrierformular. Dieses Formular schickt per post (ajax von mir aus) Daten an localhost:8080/registrierung/neu. Dann würde dein Controller wie folgt aussehen:

Code:
@Controller @RequestMapping("registrierung")
public class RegistrierungControllerController {

   @Autowired
   private DeinService deinService;

   @RequestMapping(value= "neu", method = RequestMethod.POST)
   public void doPost() throws Exception {
       deinService.tuEtwas();
   }

}

Kein Servlet.

Edit: Spring ist so gut, dass du deinen Post also deine Daten nicht mappen musst oder konvertieren, sondern das macht Spring für dich. Sagen wir, du hast ein Benutzerobjekt und du schickt ein Jasonobjekt Benutzer, dass dem Java Benutzerobjekt entspricht, per Post, kannst du dieses als Parameter in deiner Methode annehmen also das heißt:

Code:
@Controller @RequestMapping("registrierung")
public class RegistrierungControllerController {

   @Autowired
   private DeinService deinService;

   @RequestMapping(value= "neu", method = RequestMethod.POST)
   public void doPost(Benutzer benutzer) throws Exception {
       deinService.tuEtwas();
   }

}

Hierfür brauchst du nur Jackson im Classpath.. Du kannst auch den HttpServletRequest und HttpServletResponse übergeben bekommen (und vieles mehr).
 
Zuletzt bearbeitet:
Die Methode doPost() in dem Controller, ist das frei gewählt der Name oder hat etwas mit dem Request zu tun falls die Daten per Post geschickt werden?

Wie muss denn so ein DispatcherServlet denn aussehen?
 
Die Methode doPost() in dem Controller, ist das frei gewählt der Name oder hat etwas mit dem Request zu tun falls die Daten per Post geschickt werden?

Wie muss denn so ein DispatcherServlet denn aussehen?

Frei gewählt. Kann alles sein. Eine typische Konfiguration sieht aus:

HTML:
...
  <servlet>
        <servlet-name>deinDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>deinDispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
...

Fertig. Natürlich musst du jetzt das DispatcherServlet konfigurieren. Das ist aber keine Raketenwissenschaft und ist sehr gut dokumentiert und zu Spring MVC gibts es unzählige Tutorials.

Empfehlen würde ich für reinen Code:

https://github.com/SpringSource/spring-mvc-showcase?source=c
https://github.com/SpringSource/greenhouse
 
Zuletzt bearbeitet:
Zurück