salut,
j'ai un problème je veux savoir comment récupérer les données de servlet vers une page jsp
mais le problème est que la servlet dois récupérer les donnés d'un fichier .xml
grâce a l'url de l'emplacement de fichier .xml
après je dois afficher ses donnes dans la page jsp
selon mon besoin
si je vous donne un exemple de fichier .xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?xml version="1.0" encoding="UTF-8"?>
<applications>
<application>
<nom>firefox</nom>
<nombre>45</nombre>
</application>
<application>
<nom>chrome</nom>
<nombre>15</nombre>
</application>
</applications> |
et un la class java qui recupere les donnés de fichier .xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.io.*;
import org.jdom.*;
import org.jdom.input.*;
import java.util.List;
import java.util.Iterator;
public class Exemple_XML{
static org.jdom.Document document;
static Element racine;
public static void main(String[] args){
SAXBuilder sxb = new SAXBuilder();
try{
document = sxb.build(new File("Application.xml"));
}
catch(Exception e){}
racine = document.getRootElement();
afficheALL();
}
static void afficheALL(){
List listApplications = racine.getChildren("application");
Iterator i = listApplications.iterator();
while(i.hasNext()){
Element courant = (Element)i.next();
// System.out.println(courant.getValue()); //Afficher les noms + nombre
System.out.println("\n"+courant.getChild("nom").getValue()+" \n"+courant.getChild("nombre").getValue());
// System.out.println(courant.getChild("nom").getValue());
}
}
} |
et j'ai un exemple de class java qui est nécessaire pour mon exemple qui sert à récupérer les donnes grâce à un URL donnés
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
import java.io.*;
import java.net.*;
public class HttpClient
{
private static HttpClient instance;
protected URL url;
protected HttpURLConnection server;
public HttpClient() {}
/**
* @param method: String object for client method (POST, GET,...)
*/
public void connect(String method,String szUrl) throws Exception
{
try
{
url = new URL(szUrl);
server = (HttpURLConnection)url.openConnection();
server.setDoInput(true);
server.setDoOutput(true);
server.setRequestMethod(method);
server.setRequestProperty("Content-type",
"application/x-www-form-urlencoded");
server.connect();
}
catch (Exception e)
{
throw new Exception("Connection failed");
}
}
public void disconnect()
{
server.disconnect();
}
public String displayResponse() throws Exception
{
String line;
String result = null;
try
{
BufferedReader s = new BufferedReader(
new InputStreamReader(
server.getInputStream()));
line = s.readLine();
while (line != null)
{
result+=line;
line = s.readLine();
}
s.close();
}
catch(Exception e)
{
throw new Exception("Unable to read input stream");
}
return result;
}
public void post(String s) throws Exception
{
try
{
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(
server.getOutputStream()));
bw.write(s, 0, s.length());
bw.flush();
bw.close();
}
catch(Exception e)
{
throw new Exception("Unable to write to output stream");
}
}
public static HttpClient getInstance() {
if (instance==null)
instance=new HttpClient();
return instance;
}
} |
et pour la servlet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpClient c = HttpClient.getInstance();
String v="";
try {
String message="";
c.connect("GET","http://www.google.fr");
//"?data="+message.toString()
v=(c.displayResponse());
c.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
PrintWriter out=response.getWriter();
String s= "# ----------------------------------------\n";
s+=v;
out.write(s);
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
} |
le changement qui je dois fiare pour traiter le fichier .xml
est au niveau de l'URL par exemple
c.connect("GET","http://localhost/www/test.xml");
pour résumer je veux par exemple grâce au fichier test.xml
je veux récupérer les donnes grâce a servlet qui contient l'URL de l'emplacement de fichier de fichier test.xml et qui fait appel a la class HttpClient et la class qui parcour le fichier pour recuperer les donnés sous forme d'Objet
je vous donne un exemple de class java qui fait parser le fichier .xml
par exemple voila un sénario de test : par exemple dans un page index.jsp
contenant un bouton et si clique sur ce bouton il me dirige vers un autre page acceul.jsp cette page contient par exemple
un menu ; firefox et chrome
donc la modification dois se faite dans ce bout de code de la page acceuil.jsp
1 2 3 4 5 6 7 8
| <h:selectOneMenu >
<f:selectItem itemLabel="firefox" itemValue="firefox" />
<f:selectItem itemLabel="chrome" itemValue="chrome" />
</h:selectOneMenu> |
on dois normalement mettre
itemValue="#TestServlet.nomObjet.nomAttribut"
selon le nom de l'objet ércit dans la servlet
j'espère qui j'arrive à rendre le problème claire
merci d'avance
Partager