Question

Je veux un Servlet pour traiter les demandes de fichiers en fonction de préfixe et extension, par exemple.

préfixe _ *. Xml

Depuis la cartographie sur le début et la fin du chemin de requête n'est pas possible, je cartographié toutes les demandes * .xml à mon Servlet. La question est maintenant: comment puis-je abandonner mon servlet pour les fichiers XML ne commençant pas par « prefix_ », de sorte que la demande est traitée comme une demande « normale » dans un fichier xml

Ceci est probablement assez simple mais je ne semble pas être en mesure de trouver cela ...: - /

Merci beaucoup à l'avance

Était-ce utile?

La solution

Je suggère fortement l'aide d'un cadre approprié MVC pour cela. Comme vous l'avez découvert, la flexibilité de l'API Servlet standard est très limitée en matière de demander dispatching.

Idéalement, vous seriez en mesure d'utiliser votre code de servlet existant en combinaison avec un framework MVC, le cadre fait le diapcthing basé sur modèle de chemin, et servlets faire la logique métier. Heureusement, Spring MVC vous permet de faire exactement cela, en utilisant le ServletForwardingController. Ce serait une config de printemps très léger.

Alors, vous auriez quelque chose comme ça dans votre web.xml:

<servlet>
   <servlet-name>myServlet</servlet-name>
   <servlet-class>foo.MyServlet</servlet-class>
</servlet>

<servlet>
   <servlet-name>spring</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<url-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>*</url-pattern>
</url-mapping>

Vous auriez alors un fichier servlet.xml printemps WEB-INF / comme ceci:

<beans>
    <bean name="/prefix*.xml" class="org.springframework.web.servlet.mvc.ServletForwardingController">
       <property name="servletName" value="myServlet"/>
    </bean>
</beans>

Et ce serait à peu près tout. Toutes les demandes de /prefix*.xml iraient à myServlet, et tous les autres tomberaient à travers le récipient.

Autres conseils

Une autre solution (convient peut-être pour vous) si vous utilisez / plan pour utiliser un Apache en face de cette instance de conteneur Web, vous pouvez utiliser le module de réécriture de apache. Réécriture l'URL pour quelque chose de plus facile à manipuler pour le conteneur Webapp.

Espérons que cela aide. David.

FCKeditor, mais une fois que vous attrapez toutes les demandes * .xml vous pouvez consulter à nouveau la demande dans votre code via HttpServletRequest.getRequestURI ()

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String uri =req.getRequestURI();
        int i = uri.lastIndexOf('/');
        int j = uri.lastIndexOf('.', i);
        if (uri.substring(i+1, j).startsWith("prefix_")) {
            // your code
        }
    }

(code non testé, seulement une idée ...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top