Salut a tous,
J'ai developpe 2 servlets et 1 JSP qui communique entre elles.
La 1ere servlet (AGSenderServlet) appelle la 2eme servlet (AGReceiverServlet) pour lui envoyer un fichier.
Ensuite, une fois le fichier recu, la 2eme servlet appelle la page JSP.
Tout marche bien sauf le dernier appel pour la JSP. Rien ne se passe en fait. Pas d'erreur ou d'exception. Le code de la JSP n'est meme pas parcouru.
Voici mes 2 servlets:
- AGSenderServlet »
- AGReceiverServlet »
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.io.File; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.params.HttpMethodParams; //This servlet sends a file to another server public class AGSenderServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filename = request.getParameter("filename"); String ext = request.getParameter("ext"); String serverName = request.getParameter("serverName"); String port = request.getParameter("port"); String path = null; String uri = "http://"+serverName+":"+port+"/AGReceiverServlet"; //System.out.println(this.getServletContext().getRealPath("/")); File file = new File((this.getServletContext().getRealPath("/sync/out"))+"\\"+filename+'.'+ext); System.out.println("Test = "+file.getAbsolutePath()); PostMethod post = new PostMethod(uri); Part[] parts = new Part[] { //new StringPart("hostname", hostname), new FilePart(file.getName(), file) // File you want to upload }; post.setRequestEntity(new MultipartRequestEntity(parts, post.getParams())); //MultipartRequestEntity multipart = new MultipartRequestEntity(parts, post.getParams()); // Now perform the POST and check for errors HttpClient http = new HttpClient(); post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false)); int status = http.executeMethod(post); //if (status != HttpStatus.SC_OK) { // throw new IOException("Received HTTP status code " + status); //} } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
J'ai poste mon probleme sur le forum Java mais y a qu'une personne qui m'a repondu et je comprend pas vraiment ce qu'il a voulu m'explique. Apparemment ca viendrait de la reponse envoyee par response.sendRedirect(redirectURL); de ma 2eme servlet qui n'est bien interprete par ma 1ere servlet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.FilenameUtils; //This servlet receives a file from another server public class AGReceiverServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(factory); String realPath = this.getServletContext().getRealPath("sync/in"); List items = null; try { items = upload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } // Process the uploaded items Iterator iter = items.iterator(); try { String fileName = "blabla"; while (iter.hasNext()) { FileItem item = (FileItem) iter.next(); // Process a file upload if (!item.isFormField()) { fileName = item.getName(); long sizeInBytes = item.getSize(); //Write to File if (fileName != null) { fileName = FilenameUtils.getName(fileName); } File uploadedFile = new File(realPath); if (!uploadedFile.exists()) uploadedFile.mkdirs(); System.out.println("PATH = "+realPath+"/"+fileName); uploadedFile = new File(realPath+"/"+fileName); item.write(uploadedFile); } } System.out.println("http://"+request.getServerName()+':'+request.getServerPort()+"/upTool/filereceived.jsp?filename="+fileName); String redirectURL = "http://"+request.getServerName()+':'+request.getServerPort()+"/upTool/filereceived.jsp?filename="+fileName; response.sendRedirect(redirectURL); //response.sendRedirect("http://www.google.com"); } catch (Exception e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
J'ai essaye d'utiliser la fonction forward du dispatcher mais ca me donne le meme resultat.
Voici la conversation: http://forums.sun.com/thread.jspa?me...47964#11047964
Partager