0

I'm having some troubles in a JAVA programm, maybe someone has a solution.

I have my JSE JAVA application (not a J2EE server-side application) that launch a shortcut to a web page on a J2EE server.

I have an url like this one : http://application.fr:9080/visu/recherche.html?codepersonne=toto

But the problem is : high risk of security , so I need to hide the parameters, with a POST. But how to simulate the post.

On internet, I found a solution , with URLconnection that connect to my servlet's url (http://application.fr:9080/visu/SinistresService)) and pass parameters and try to redirect to my final page.

But no, the sendredirect seems to work but nothing happens on the web browser. As you can see, I tried several methods for the redirection, but nothing works, the web browser don't want to display my fresh new URL!!

My application JSE code :

/**
 *
 */

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();   




          }
}

My servlet on my J2EE appli (appart the other JSE applciation):

package services;

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);

    }


}

my jsp : afficheparametre.jsp on the server.

<body class="claro">
<%=request.getAttribute("codepersonne") %>
</body>
</html>

thanks for help

bat
  • 1
  • 3
  • you should not user URLConnection, but HttpURLConnection and then set the request method as post... Then, don't append parameters to the url. Loads of example on the internet, e.g. http://stackoverflow.com/questions/4205980/java-sending-http-parameters-via-post-method-easily – Paolof76 Feb 10 '16 at 11:39
  • OK. how to display it in a web browser. And how to retrieve the post parameters? – bat Feb 10 '16 at 13:39
  • thanks for help. I've found a solution. – bat Feb 10 '16 at 15:01

0 Answers0