JAVA – Komunikacja Applet Servlet Applet Przesłanie danych: GET POST Obiekty Java Servlet Odpowiedź: Obiekty Java Applet and Servlet Communication By Chád Darby Java Developer's Journal, September 1998 http://www.j-nine.com/pubs/applet2servlet/ 173 JAVA – Applet Servlet metoda GET String location = "http://localhost:8080/servlet/TestServlet?Param1=Value1&Param2=Value2"; URL testServlet = new URL( location ); URLConnection servletConnection = testServlet.openConnection(); inputStreamFromServlet = servletConnection.getInputStream(); // Odczyt danych z servletu. ... 174 JAVA – Applet Servlet metoda POST // Łączenie z servletem String location = "http://localhost:8080/servlet/TestServlet"; URL testServlet = new URL( servletLocation ); URLConnection servletConnection = testServlet.openConnection(); // Zaznaczamy, że chcemy zarówno nadawać ja i odbierać servletConnection.setDoInput(true); servletConnection.setDoOutput(true); // Wyłącz cache w obiekcie connection servletConnection.setUseCaches (false); servletConnection.setDefaultUseCaches (false); // Określamy jaki rodzaj danych będziemy wysyłać servletConnection.setRequestProperty ("Content-Type", "<Wybrany typ MIME>"); // tworzenie strumieni we/wy do komunikacji z servletem. . . // wysyłanie danych na servlet ... 175 JAVA – Applet Servlet (Obiekty do przysyłanie danych) import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // HttpServlet // interfejsy HttpServletRequest, HttpServletResponse public class DataObject implements Serializable { public double P1,P2; public int n; ..... } public class ResultObject implements Serializable { public DataObject inputData; // obiekty muszą dać się serializować !!! public double [] t; public double [] A; ..... } .... DataObject dataObject = new DataObject(); ResultObject resultObject = new ResultObject (); 176 JAVA – Applet przesłanie serializowanego obiektu URL servletURL = new URL( servletLocation ); URLConnection servletConnection = servletURL.openConnection(); // Zaznaczamy, że chcemy zarówno nadawać ja i odbierać servletConnection.setDoInput(true); servletConnection.setDoOutput(true); // Wyłącz cache w obiekcie connection servletConnection.setUseCaches (false); servletConnection.setDefaultUseCaches (false); // TRZEBA Ustawić typ żądania jako strumień binarny servletConnection.setRequestProperty ("Content-Type", "application/octet-stream"); // wysyłanie do servletu z wykorzystaniem serializacji outputToServlet = new ObjectOutputStream(servletConnection.getOutputStream()); outputToServlet.writeObject(dataObject); outputToServlet.flush(); outputToServlet.close(); 177 JAVA – Applet Servlet Odbiór obiektu przez servlet public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ObjectInputStream inputFromApplet = null; DataObject dataObject = null; PrintWriter out = null; BufferedReader inTest = null; try { daneZAppletu = new ObjectInputStream(request.getInputStream()); dataObject = (DataObject ) daneZAppletu .readObject(); daneZAppletu.close(); } catch(Exception e) { ... } .............. } 178 JAVA – Applet Servlet Odpowiedź Servletu public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { .............. ObjectOutputStream outputToApplet; try { wynikiDlaAppletu = new ObjectOutputStream(response.getOutputStream()); //Wysyłanie obiektu wynikiDlaAppletu.writeObject(resultObject); wynikiDlaAppletu.flush(); wynikiDlaAppletu.close(); } catch (IOException e) { e.printStackTrace(); } } 179 JAVA – Applet Servlet Odebranie odpowiedzi przez Applet URL testServlet = new URL( servletLocation ); URLConnection servletConnection = studentDBservlet.openConnection(); ....... servletConnection. servletConnection.setUseCaches (false); servletConnection.setDefaultUseCaches(false); ........ // Odczyt obiektu przesłanego przez servlet inputFromServlet = new ObjectInputStream(servletConnection.getInputStream()); resultObject = (ResultObject) inputFromServlet.readObject(); 180