Carte / (racine de l'URL) dans Spring MVC
C'est quelque chose qui, je pense, devrait être très facile, mais jusqu'à présent, je n'ai pas été en mesure de l'obtenir pour fonctionner.
Ce que je veux faire est la carte de mon chemin de la racine à un Contrôleur Spring MVC. Avec une normale Servlet
, je voudrais juste ajouter un mappage pour "/
" dans mon web.xml
, et il serait de ramasser assez bien. Mais avec Spring MVC, pas tellement.
J'ai essayé de nombreuses combinaisons, mais aucune ne semble fonctionner. Je pense que la suivante devrait fonctionner.
Dans web.xml
:
<servlet-mapping>
<servlet-name>myDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Dans mon contextConfigLocation
fichier:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="mappings">
<util:map>
<entry key="/" value-ref="rootController"/>
</util:map>
</property>
</bean>
<bean id="rootController" class="my.package.RootController">
Alors évidemment, il y a le cas du contrôleur lui-même. Je n'ai pas la moindre idée de comment carte la méthode de la racine du chemin. Ma tentative est quelque chose comme ceci:
public class RootController extends MultiActionController {
@RequestMapping("/")
public ModelAndView display(HttpServletRequest request, HttpServletResponse response) throws Exception {
final Map<String, Object> model = new HashMap<String, Object>();
model.put("someVariable", "Hello, MVC world.");
return new ModelAndView("rootPage", model);
}
}
Donc, disons que mon application fonctionne sur http://localhost:8080/app/
, je veux que l'URL exacte à exécuter la méthode display
. Je ne veux pas taper quoi que ce soit après /app/
. En fait, certaines choses après /app/
sont mappés à d'autres contrôleurs, et que tous fonctionne très bien (et ils doivent continuer à travailler).
Ce qui me manque ici? Pourquoi n'est-ce pas tout simplement de travailler? Si j'utilise le même url-pattern
de carte ordinaire Servlet
exemple, il fonctionne très bien et j'arrive à la doGet
méthode, mais avec Spring MVC me semble manquer de certains particulier de la magie noire pour obtenir que cela fonctionne.
OriginalL'auteur pbean | 2012-08-30
Vous devez vous connecter pour publier un commentaire.
À la place de la cartographie pour
/
vous pouvez déclarer une page d'accueil dans votreweb.xml
fichier:de sorte que votre
/
chemin sera traitée comme/welcome.htm
et alors si votre contrôleur est correctement mappé/welcome.htm
il sera procédé à/
comme si c'était un/welcome.htm
demande, sans apporter de modifications à d'autres de configuration.OriginalL'auteur Boris Treukhov
Je recommande de se débarrasser de la SimpleUrlHandlerMapping et faire juste le suivant:
Cela devrait obtenir le résultat que vous souhaitez. Aussi, ajouter
<mvc:annotation-driven/>
à votre servlet contexte, avec une<context:component-scan base-package="some.package.path.to.controller" />
d'avoir un fil Ressort jusqu'à ce contrôleur.Sinon, vous pouvez probablement correspondre l'URL avec le SimpleUrlHandlerMapping de la manière suivante:
Si c'est fait de cette façon, vous pouvez garder le bean défini pour rootController.
RootController
", nous avons quelques autresControllers
qui sont mis en place par le biais de ceSimpleUrlHandlerMapping
. Ou alors vous suggérons d'avoir unDispatcherServlet
juste pour cetteRootController
?eh bien garder le mappage d'url, mais de supprimer l'entrée pour "/"
Donc vous voulez dire, garder le
SimpleUrlHandlerMapping
, mais sans l'entrée "/
", ainsi que d'ajouter le<mvc:annotation-driver/>
et<context:component-scan...
?Ouais, j'avais commencer à essayer de faire la transition vers les annotations, rend les choses plus facile et permet à votre XML cleaner.
Il ne semble pas fonctionner pour ce
RootController
, et il fonctionne très bien avec monResteasy
servlet, mais il ne casse tous mes autresSpring
Controllers
. Je vais quitter ce ouvert pendant un certain temps pour voir si je reçois d'autres réponses, notamment en soutenant mon (même ancienne) de configuration XML. Sinon, je ne marquez votre réponse acceptée et essayer de passer progressivement de ce projet à une annotation.OriginalL'auteur dardo
Pour Spring Webflow, la suggestion de la part de Boris Treukhov utiliser web-file-list ont abouti à la découverte d'un hack qui a travaillé pour weblogic. Par exemple, si l'accueil est un flow.xml fichier, effectuez les opérations suivantes: Modifier l'url-pattern à partir de\*.html dans web.xml. La Place d'un mannequin(vide) fichier welcome.htm dans le dossier src\main\webapp\WEB-INF. Dans SimpleUrlHandlerMapping carte de la valeur /la bienvenue.htm=flowController. Enfin, compléter le registre, le débit-emplacement path="welcome.xml". Consultez le lien: http://forum.spring.io/forum/spring-projects/web/50547-welcome-file-list-with-spring.
OriginalL'auteur westcoastmilt