2010-07-01 2 views
1

J'ai un formulaire/calculatrice, qui enregistre lui-même certaines données, ces données sont ensuite calculées en envoyant une servlet et les résultats sont affichés en tant que xml. Le code répartiteur est indiqué ci-dessous:Traitement des données XML pour JSP

//create instance 
ServletContext sc = this.getServletContext(); 
//create dispatcher 
RequestDispatcher rd = sc.getRequestDispatcher("/ProCalcServlet"); 

rd.include(request, response); 

ont quelques problèmes avec ce que je fais en ce moment même. Premièrement, est-il possible d'utiliser une URL distante plutôt que locale? Et comment puis-je traiter les données, puisque je suppose que parce que c'est une servlet, je ne peux pas simplement l'appeler un document XML et utiliser le DOM pour récupérer les données que je veux.

Tout nouveau pour ce genre de choses Java, je ne sais même pas quoi faire exactement pour google, donc je suis en train de photographier dans le noir avec mes méthodes actuelles. Toute aide ou instruction serait grandement appréciée: P accue

Répondre

1

J'espère que je comprends bien vos questions.

Il est possible d'utiliser une URL distante. Dans ce cas, vous devez appeler l'URL via le style de service Web. Vous pouvez utiliser HttpClient pour appeler l'URL. L'URL vous renverra ensuite les données au format XML (en une seule grande chaîne).

Pour que vous puissiez traiter le fichier XML, il existe de nombreuses bibliothèques qui vous permettent de le faire facilement. Vous pouvez coller l'analyseur DOM ou SAX de JDK, mais à mon avis c'est désordonné. Pensez à utiliser Castor, JDom, ou Dom4J ... certains d'entre eux vous permet d'interroger les données en utilisant XPath aussi.

1

Vous ne pouvez pas utiliser RequestDispatcher pour transmettre une requête à une URL différente. Cela vous permet uniquement de transférer des demandes à la même application Web sur le même conteneur. Vous pouvez cependant utiliser response.sendRedirect() pour envoyer une redirection vers un autre site/URL. En faisant cela, cependant, vous ne serez pas en mesure de passer des objets - vous devrez compter sur les paramètres d'argument. Je ne suis pas sûr de comprendre ce que vous faites avec XML. Votre première déclaration semble impliquer que vous voulez afficher la réponse en XML, qui est certainement assez facile, il suffit d'utiliser:

response.setContentType("text/xml;charset=utf-8");