1
JAVA – Komunikacja Applet Servlet
Applet
Odpowiedź:
Obiekty Java
Servlet
Przesłanie danych:
GET POST Obiekty Java
http://www.j-nine.com/pubs/applet2servlet/
Applet and Servlet Communication
By Chád Darby
Java Developer's Journal, September 1998
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.
. . .
3
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 ...
JAVA – Applet Servlet (Obiekty do przysyłanie danych)
import java.io.*;
import javax.servlet.*; // HttpServlet
import javax.servlet.http.*; // 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 ();
5
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();
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) { ... } ...
}
7
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();
} }
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();