Java 7

advertisement
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
Download