2009-08-20 10 views
5

Sono nuovo di Spring MVC. Ma avevo una certa esperienza nel lavorare con Struts 1.x. Vorrei sapere se è una pratica comune per personalizzare DispatcherServlet mentre si lavora con Spring MVC, come le persone a volte personalizzare ActionServlet o RequestProcessor in Struts 1.x?La personalizzazione di DispatcherServlet in Spring MVC è una pratica comune?

Oppure estendiamo un po 'la domanda. Dove sono i punti di ingresso per un veterano programmatore Spring MVC per personalizzare il framework MVC?

Grazie.

+1

Si prega di chiarire cosa intendi per personalizzare - intendi specializzare (come ho risposto) o configurare (come risposta adatapost)? –

+0

In realtà intendo entrambi, poiché ho bisogno di tutte le informazioni per estenderlo. Inoltre, sono d'accordo con te punto. Estendere DispatcherServlet ed essere sostituito usando Filtro o Controller. Tuttavia, in questo modo, Spring MVC non è in grado di offrire un'interfaccia plig-in standard per gli sviluppatori plug-in. Nei puntoni, alcuni plug-in vengono eseguiti estendendo "RequestProcessor". –

+0

Non ho molta familiarità con l'architettura plug-in di Struts, ma direi che l'API MVC di Spring è piuttosto semplice.È un po 'errato come imho, in quanto è solo la parte controller del pattern MVC che ti lascia definire le tue viste e il tuo modello come necessario (tipicamente come JSP e POJO). –

risposta

3

Sicuramente è una buona pratica. Spring Framework - Web MVC framework

SOMMARIO: è possibile personalizzare DispatcherServlet di primavera con l'aggiunta di contesto parametri .... particolarmente utile quando si hanno un sacco di funzionalità comuni in un controller.

+1

Grazie, è utile. –

1

Perché vorresti specializzarti nello org.springframework.web.servlet.DispatcherServlet?

Qualsiasi richiesta di pre-elaborazione può/deve essere raggiunta con un javax.servlet.Filter e il resto è ridotto all'implementazione di org.springframework.web.servlet.mvc.Controller.

alternativa vedi s' adatapost risposta, che si riferisce alla configurazione del org.springframework.web.servlet.DispatcherServlet tramite il file web.xml.

+0

Faccio questa domanda per capire meglio questa struttura e per vedere cosa può servire in questo modo. :) –

+0

Perché vorresti specializzare qualcosa? Perché potresti avere bisogno che qualcun altro non l'abbia ancora fatto. Quindi non riesco a capire in che modo tali risposte possano avere comunque un upvote. Se una classe ha metodi "protetti", che DispatcherServlet ha, significa sicuramente che lo sviluppatore crede che potrebbe verificarsi la necessità di sovrascriverlo. Gli sviluppatori di Grails hanno già superato DispatcherServlet e per loro i filtri non sono stati sufficienti per personalizzare alcune funzionalità. –

+0

C'è sempre la possibilità che tu possa specializzarti, ma la domanda chiedeva se fosse comune, quale imho, non lo è e ci sono normalmente modi migliori per ottenere ciò di cui hai bisogno, anche se scontato, questo potrebbe non essere sempre il caso. –

4

DispatcherServlet, come la maggior parte delle API Spring, è progettato per l'estensione. In effetti, se trovi una parte di essa che non è ammessa alla sottoclasse, presenta un problema alla loro JIRA e probabilmente la sistemeranno per te (l'ho fatto in diverse occasioni).

Detto questo, la stragrande maggioranza delle funzionalità può essere ottenuta tramite la configurazione di DispatcherServlet piuttosto che l'estensione di esso.

+0

Hai ragione. Non posso nemmeno nominare una singola cosa che non può essere raggiunta dalla sua attuale implementazione. Grazie del consiglio. Presenterò un problema se trovo la necessità. –

1

Io, per esempio, non ho mai trovato un motivo per estendere DispatcherServlet.

+1

Questo è bello sapere;) –

2

Ecco il mio suggerimento in cui sto pensando che estendere il servlet dispatcher sarebbe una "soluzione".

  1. convalida separato, conversione da controllore (per varie ragioni)
  2. rendono il controllore solo un delegante a livello di servizio.
  3. genera/popola completamente l'oggetto dominio/richiesta "prima" che raggiunge il controller.
+0

Se pensi che sia un buon modo, vai avanti e implementalo. Anche se ho posto questa domanda in primo luogo, non ho trovato un caso in cui devo estendere DispatcherServlet. –

Problemi correlati