2017-04-18 3 views
0

Ich habe viele Beispiele gesehen, wo die @Controller Annotation in Web-Anwendungen verwendet wird, die mit Feder f/w bauen. Außerdem habe ich @RestController für das Erstellen einer Webanwendung im Frühjahr gesehen. Und drittens, was ich in der Regel Web-Anwendung zu erstellen bin, ist durch Angabe von Feder Servlet in web.xml und Erstellen von Controller-Klassen durch Implementierung der Controller-Schnittstelle oder durch Erweiterung entweder AbstractController. Was ist der Unterschied in diesen Ansätzen? Gibt es noch andere Ansätze als das, was ich erwähnt habe?Wie viele Möglichkeiten können wir Web-Anwendung im Frühjahr erstellen

Antwort

0

@Controller wird normalerweise für ein MVC-Controller-System verwendet und ermöglicht Ihnen, ein Modell aus der Steuerung in Ihre Ansicht zurückzugeben.

@RestController wird normalerweise für REST-konforme Web-Services verwendet und gibt normalerweise XML oder JSON aus, die Sie von POJOs mit Bibliotheken entfernen oder die ToString() - Methode des POJO überschreiben können.

In allen Fällen (außer Sie verwenden Spring Boot) verwenden Sie in der Regel immer noch eine web.xml. Ich bevorzuge den Annotation-Ansatz (@Controller und/oder @RestController), da dies bedeutet, dass man sich nicht mit XML-Dateien herumärgern muss.

Ich ziehe es vor, die dritte Methode, die Sie erwähnt haben, nicht zu verwenden, da sie sich für mich weniger flexibel und komplizierter anfühlt.

+0

Können wir die Anmerkung ** Controller ** mit ** RequestMapping ** zum Erstellen von RESTful-Webdiensten verwenden? – Ankit

+0

Ja du kannst, ich benutze es die ganze Zeit. –

0

Abgesehen von der obigen Antwort möchte ich einige Anwendungsfälle von @Controller Annotation hinzufügen, die für Sie hilfreich sein könnten.

1) Mehrere URL-Muster können mit einer einzigen Methode behandelt werden.

@RequestMapping({"/hello", "/hi", "/greetings"}) 

2) Controller bei der Klasse und Methode Ebene

@Controller 
@RequestMapping("/admin") 
public class AdminController { 


    @RequestMapping("/listUsers") 
    public ModelAndView listUsers() { 

    } 

    @RequestMapping("/saveUser") 
    public ModelAndView saveUser(User user) { 

    } 

    @RequestMapping("/deleteUser") 
    public ModelAndView deleteUser(User user) { 

    } 
} 

Hinweis:

@RequestMapping("admin/getVendorDetails") 
    public @ResponseBody <Return Type> getVendorDetails(HttpServletRequest request){ 
... 
} 
: Wenn Sie statt @RestController verwenden @Controller möchten Sie @ResponseBody Anmerkung wie unten hinzufügen müssen
Verwandte Themen