Bonjour
Je me heurte à une grosse difficulté dans un programme JAVA, peut-être que quelqu'un a la solution.
J'ai mon application JAVA JSE (pas de serveur d'application)
qui lance un raccourci vers une page Web qui est sur un serveur J2EE.
J'ai une url de ce genre :
http://application.fr:9080/visu/rech...epersonne=toto
Par contre, gros risque de sécurité, il ne faut pas passer mes paramètres dans l'url . codepersonne....
Du coup, j'ai cherché une solution,
je pensais avoir trouvé avec URL connection qui se connecte à l'url de ma servlet (à l'url http://application.fr:9080/visu/SinistresService), passe les paramètres
puis ensuite fait le redirect.
Mais non, le sendredirect abouti mais rien dans le navigateur.
Comme vous voyez, j'ai essayé plusieurs méthode pour la redirection, rien n'y fait, le navigateur ne change pas d'url!!!
Ci dessous mon code coté appli JSE :
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 /** * */ import java.awt.Desktop; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.net.URLConnection; /** * @author slam * */ public class EnvoiPost { public static void affichenavigateur() { //ouvrir l'url connectée sur le navigateur try { Desktop.getDesktop().browse(new URI("http://application.fr:9080/visu/SinistresService")); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("Erreur ouvrir de afficheparametre.jsp sur le navigateur "); } catch (URISyntaxException e) { // TODO Auto-generated catch block System.out.println("Erreur ouvrir de afficheparametre.jsp sur le navigateur "); } } public static void main(String[] args) throws Exception { //Se connecter sur la servlet de l'interface Web //y écrire 3 paramètres en POST //URL url = new URL("http://application.fr:9080/visu/afficheparametre.jsp"); URL url = new URL("http://application.fr:9080/visu"); URLConnection conn = url.openConnection(); //pour envoyer un post, mettre à true conn.setDoOutput(true); //conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5"); OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); //..mettre l'ouverture navigateur avant ou après l'écriture de paramètre? // writer.write("codepersonne=156804&nom=toto&type=titi"); writer.flush(); // LIRE sur la connection : pas utile, je lis dans la servlet les paramètres String line; BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); writer.close(); if (conn != null) { conn=null; } //essai run.getruntime //String cmd = "rundll32 url.dll,FileProtocolHandler " + url; //eg http://...' //Runtime.getRuntime().exec(cmd); affichenavigateur(); } }
Ci-dessous ma servlet qui traite les demandes web
package services;
ma jsp : afficheparametre.jsp sur le serveur
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 import java.awt.Desktop; import java.io.IOException; import java.io.PrintWriter; import java.net.*; import data.Extraitbeneficiaire; import data.Extraitdetaildossier; import data.Extraitsinistres; import beans.Utilisateur; import javax.servlet.RequestDispatcher; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class SanteDataService * @author slam */ public class SinistresService extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String typeParameter = request.getParameter("type"); //http://application.fr:9080/ //Récupérer 3 paramètres passés en post String codepersonne =request.getParameter("codepersonne"); String nom = request.getParameter("nom"); String typedecompte = request.getParameter("typedecompte"); //controler le passage de paramètres System.out.println("codepersonne-->" + codepersonne); if (codepersonne !=null) { //this.attcodepersonne = codepersonne; //response.sendRedirect("/visu/testjsp"); //RequestDispatcher dispatcher=request.getRequestDispatcher("afficheparametre.jsp"); //request.setAttribute("codepersonne",codepersonne); //dispatcher.forward(request, response); //parametrer la prochaine requete car request est gateux! request.setAttribute("codepersonne", codepersonne); response.sendRedirect("http://application.fr:9080/visu/afficheparametre.jsp"); //RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/visu/afficheparametre.jsp"); //dispatcher.forward(request, response); } //response.sendRedirect("/visu/recherche.jsp"); if (typeParameter != null) { response.setContentType("text/plain"); if (typeParameter.equals("getBeneficiaires")) { Extraitbeneficiaire Extract= new Extraitbeneficiaire(); response.getWriter().write(Extract.getfluxbeneficiaire(Integer.valueOf(request.getParameter("id")).intValue())); } else if (typeParameter.equals("getSinistres")) { Extraitsinistres Extract= new Extraitsinistres(); response.getWriter().write(Extract.getfluxsinistres(Integer.valueOf(request.getParameter("codesignataire")).intValue(), Integer.valueOf(request.getParameter("codebeneficiaire")).intValue(), request.getParameter("lettrecle"), request.getParameter("lettreclecomplt"), request.getParameter("datedebutsoins"), request.getParameter("datefinsoins"),request.getParameter("typedecompte"))); } else if (typeParameter.equals("getDetaildossier")) { Extraitdetaildossier Extract= new Extraitdetaildossier(); //789500, "20151113", "RA", "156804") response.getWriter().write(Extract.getfluxdetaildossier(Integer.valueOf(request.getParameter("numsinistre")).intValue(), request.getParameter("codedossier"), request.getParameter("codestatut"), request.getParameter("codepersonne"))); //response.getWriter().write(Extract.getfluxdetaildossier(789500, "20151113", "RA", "156804")); } } response.getWriter().flush(); response.getWriter().close(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <body class="claro"> <%=request.getAttribute("codepersonne") %> <!-- ==+> je le mettrai en hidden ensuite --> </body> </html>
Partager