Je souhaite définir l'un des fichiers jsp de mon dossier jsps en tant que vue par défaut pour l'application. Existe-t-il un moyen de préciser dans <welcome-file-list>
que abc.jsp
doit être défini par défaut et qu'il peut être trouvé dans tel ou tel chemin. De plus, le modèle d'URL est html, donc existe-t-il un moyen de le mapper dans Spring MVC.
Par exemple, lorsqu'un utilisateur tape www.example.com
, je souhaite que l'application accède à la page abc.jsp
et également lorsque quelqu'un tape www.example.com/something
, même dans ce cas, l'application doit accéder à abc.jsp
, mais le modèle d'URL ne doit pas être compromis.
Ajouter
<mvc:view-controller path="/" view-name="abc"/>
dans le fichier de configuration. Ensuite, la racine se résoudra à la vue abc. Puis ajouter
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
dans le fichier de configuration. Cela résoudra l'affichage dans /WEB-INF/view/abc.jsp.
Par exemple - Lorsqu'un utilisateur tape www.example.com, je souhaite que l'application soit dirigée vers la page abc.jsp
Configurez-le en tant que <welcome-file>
dans le web.xml
comme suit:
<welcome-file-list>
<welcome-file>/abc.jsp</welcome-file>
</welcome-file-list>
et aussi lorsque quelqu'un tape www.example.com/quelque chose, même dans ce cas, l'application doit être dirigée vers abc.jsp, mais le motif de l'URL ne doit pas être compromis.
En d'autres termes, vous souhaitez transférer des ressources non existantes (ce qui entraînerait donc une erreur HTTP 404 Page Not Found) dans le même fichier? Puis définissez-le comme un <error-page>
dans le web.xml
également:
<error-page>
<error-code>404</error-code>
<location>/abc.jsp</location>
</error-page>
Mais votre question est en fait un peu ambiguë. Si vous ne vouliez vraiment pas dire ce qui précède et que vous voulez réellement utiliser /abc.jsp
comme "contrôleur de page", vous devez le définir en tant que <servlet>
dans web.xml
à la place:
<servlet>
<servlet-name>controller</servlet-name>
<jsp-file>/abc.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
(le <welcome-file>
et le <error-page>
ne sont pas nécessaires ici)
Ceci est cependant une faille dans la conception du MVC (utiliser une vue en tant que contrôleur). Mais si vous le demandez réellement ..
Résolu -
Un fichier dans la liste de fichiers de bienvenue doit être un fichier réel, donc abc.htm ne fonctionnait pas . Le seul moyen de le faire était de créer un fichier index.jsp et de le rediriger à l'aide de
<jsp:forward page="abc.html" />
également dans yourapplication-servlet.xml, vous devez spécifier le mappage de bean comme
<bean name="/abc.html" class="package.mypack.someController">
<property name="commandClass" value="package.mypack..something"/>
<property name="formView" value="abc"/>
<property name="successView" value="abc.htm"/>
</bean>
Un fichier de bienvenue doit être un fichier REAL sur le système de fichiers, il ne fonctionne pas avec les URL mappées. Vous pouvez créer un fichier index.jsp qui redirige vers l'URL mappée, mais il doit s'agir d'un fichier réel. Cela n'a rien à voir avec spring, il est indiqué dans la spécification de servlet qu'il doit en être ainsi, bien que le comportement puisse varier sur différents serveurs d'applications en général, il doit s'agir d'un fichier réel.
J'espère que cela aide quelqu'un
Tout ce comportement peut être résolu en ajoutant
<mvc:default-servlet-handler>
à votre printemps ../WEB-INF/dispatcher-servlet.xml
Cela arrangera tout pour vous.