Comment créer une requete HttpServletRequest ? - Java - Programmation
Marsh Posté le 27-09-2002 à 11:53:41
bin t'as pas besoin d'en créer une nouvelle pour faire un forward. C'est quoi un forward à ton avis ?
Un forward c'est transférer à qqun d'autre (dans le cas du mail par exemple) LE MEME CONTENU + des trucs additionnels
Dans ton cas tu prends la requete que tu veux, tu lui ajoutes ce que tu as envie d'ajouter et puis tu fais ton forward ...
Marsh Posté le 27-09-2002 à 11:56:20
En l'occurence si j'ajoute qqchose a la requete cela ne fonctionne pas.
code :
request.setAttribute("xml",xml);
RequestDispatcher rd = request.getRequestDispatcher("ValidateXML" );
rd.forward(request,res);
Marsh Posté le 27-09-2002 à 11:57:05
touflb a écrit a écrit : En l'occurence si j'ajoute qqchose a la requete cela ne fonctionne pas. code : request.setAttribute("xml",xml); RequestDispatcher rd = request.getRequestDispatcher("ValidateXML" ); rd.forward(request,res); |
Génial. Attends je vais chercher ma boule de cristal et je reviens.
Tu sais pas donner des détails des fois?
Marsh Posté le 27-09-2002 à 11:57:45
quand je récupere la requete dans mon servlet "ValidateXML" par :
String xml=request.getParameter("xml" );
Et bien y aque tchi dedans inside
Marsh Posté le 27-09-2002 à 11:59:48
détail ? ok comme tu veux :
public class ServletMasse extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse res)throws ServletException,IOException {
String client = request.getParameter("client" );
String compte = request.getParameter("compte" );
String pass = request.getParameter("pass" );
String from = request.getParameter("tfrom" );
String to = request.getParameter("tto" );
String message = request.getParameter("tmessage" );
String classe = request.getParameter("tclasse" );
String xml = new String ("" );
System.err.println("tclient : "+client);
System.err.println("compte : "+compte);
System.err.println("tpass : "+pass);
System.err.println("tfrom : "+from);
System.err.println("tto : "+to);
System.err.println("tmessage : "+message);
System.err.println("tclasse : "+classe);
try {
Connection conn = null;
Class.forName("oracle.jdbc.driver.OracleDriver" ).newInstance();
String url = "qqchose";
String username = "untruc";
String password = "fopasrever";
conn = DriverManager.getConnection(url, username, password);
CallableStatement stmt = conn.prepareCall("select nb from list_members where recipient_list_id = ?" );
int k = Integer.parseInt(to);
stmt.setInt(1,k);
ResultSet rs = stmt.executeQuery();
String listeto = new String("" );
while (rs.next()) {
listeto += "<to>"+rs.getString("nb" )+"</to>\n";
}
System.err.println("Liste des to : "+listeto);
xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"+
"<session xmlns=\"http://statsms.jetmultimedia.fr\" "+
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "+
"xsi:schemaLocation=\"http://statsms.jetmultimedia.fr http://statsms.jetmultimedia.fr/sms_session.xsd" "+
"client=\""+client+"\" "+
"account=\""+compte+"\" "+
"password=\""+pass+"\">\n"+
"<message type_id=\"1\" class_type=\""+classe+"\" from=\""+from+"\" validity=\"P200Y\">\n"+
"<gsm_content>"+message+"</gsm_content>\n"+
listeto+
"</message>\n"+
"</session>\n";
} catch(Exception e){
System.err.println("Error" );
}
System.err.println("Message XML : "+xml);
request.setAttribute("xml",xml);
RequestDispatcher rd = request.getRequestDispatcher("ValidateXML" );
rd.forward(request,res);
}
public void doGet(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException {
doPost(req,res);
}
}
Marsh Posté le 27-09-2002 à 12:08:08
mais je m'en fous de ta servlet bordayl. Je veux voir la stacktrace. C'est quoi l'erreur et ca concerne quel partie du code.
Marsh Posté le 27-09-2002 à 12:09:11
touflb a écrit a écrit :
|
y'a pas un truc qui te choque là?
Marsh Posté le 27-09-2002 à 12:11:19
Calm down fellas.
Y a pas d'erreur. Juste que dans mon Servlet "ValidateXML" l'attribut "xml" est null.
Marsh Posté le 27-09-2002 à 12:15:55
--greg-- a écrit a écrit : mais si y'a une erreur setAttribute getParameter .... |
bien vu!
Marsh Posté le 27-09-2002 à 12:16:48
for sure...
Mais le pb c'est que je dois laisser un getparameter() car mon appli n'est pas la seule a faire des requete sur "validateXML", alors comment faire ?
Marsh Posté le 27-09-2002 à 12:17:40
Marsh Posté le 27-09-2002 à 12:17:50
Et puis c'est koi la différence entre un attribut et un parametre ? (facultatif ;o) )
Marsh Posté le 27-09-2002 à 12:19:56
et bien tu fais
Code :
|
La difference entre attribut et paramètre:
un param fait partie de la requete envoyée par le browser, et sera tjs une String
un attribut est setté par toi et ta servlet, et est un Object.
Y'a surement plus à en dire mais l'essentiel est là je pense.
edit: pq mon 2e if est indenté?
Marsh Posté le 27-09-2002 à 12:20:25
Reprenons le pb à la base.
De maniere plus générale.
Je suis dans une servlet java, je veux créer une nouvelle requete HTTP. lui ajouter des trucs et la renvoyer.
Comment fais t'on puisque HttpServletrequest est une interface et HttpServlet aussi.
Do not panic.
Marsh Posté le 27-09-2002 à 12:22:06
evidement un test à la con marche aussi.
Je vous remerçie bien pour votre attention et vos conseils.
Bonne journée.
Tlb.
Marsh Posté le 27-09-2002 à 12:22:18
tu ne peux pas instancier un objet implementant HttpServletRequest, à moins de l'implementer toi meme (bonne chance)
Les instances de HttpServletRequest que tu utilises dans tes servlets sont des "versions" implementées par ton serveur, qui lui sont propres. (l'objet implementant HttpServletRequest dans Tomct n'est pas "compatible" avec celui de Resin par exemple)
Marsh Posté le 27-09-2002 à 12:29:22
touflb a écrit a écrit : Reprenons le pb à la base. De maniere plus générale. Je suis dans une servlet java, je veux créer une nouvelle requete HTTP. lui ajouter des trucs et la renvoyer. Comment fais t'on puisque HttpServletrequest est une interface et HttpServlet aussi. Do not panic. |
Marsh Posté le 27-09-2002 à 12:34:27
DarkLord a écrit a écrit : |
moi je dirais: tain le mec on lui apprend son métier, il va se faire des briques sur notre dos maintenant , en faisant croire à son boss que ouais, j2ee, il assure.
Marsh Posté le 27-09-2002 à 12:34:49
Marsh Posté le 27-09-2002 à 12:37:14
Marsh Posté le 27-09-2002 à 12:46:11
il s'est vraiment cassé en plus hein...
enfin bon, il a dit merci c'est deja ça
Marsh Posté le 27-09-2002 à 12:47:19
n'empeche je ne suis pas sur qu'il ait compris la stupidité de vouloir créer une nouvelle requete dans le cas d'un forward ...
Marsh Posté le 27-09-2002 à 13:45:36
bah je suis passé par la aussi moi
c'est pas completement stupide mais ça n'a guère d'interet, et puis une requete étant ce qu'elle est, il ne serait pas logique d'en créer
Marsh Posté le 27-09-2002 à 11:51:23
Dans mon servlet je veux créer une nouvelle requete et la redirigé vers un url :
HttpServletRequest request = new ....
//le pb c'est que c'est une interface et pas une classe ...
request.setAttribute("xml",xml);
RequestDispatcher rd = request.getRequestDispatcher("monurl" );
rd.forward(request,res);