Как использовать HttpURLConnection для отправки сериализованного объекта сервлету из класса Java?
Я хочу отправить сериализованный объект из класса Java в сервлет, где сервлет должен получить и сохранить объект в виде файла. Я знаю, что мне нужно использовать HttpURLConnection для запроса POST на сервлет, но я не знаю, является ли приведенный ниже код правильным.
private static HttpURLConnection urlCon;
private static ObjectOutputStream out;
public static void main(String[] args) {
Names names = new Names();
names.setName("ABC");
names.setPlace("Bangalore");
URL url;
try {
url = new URL("http://localhost:6080/HttpClientSerializable/HttpPostServlet");
try {
out = (ObjectOutputStream) urlCon.getOutputStream();
out.writeObject(names);
urlCon = (HttpURLConnection) url.openConnection();
urlCon.setRequestMethod("POST");
urlCon.setDoOutput(true);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
}
и в сервлете, у меня есть следующий код:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ObjectInputStream in = new ObjectInputStream(request.getInputStream());
try {
names = (Names) in.readObject();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
in.close();
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("C:/Documents and Settings/RAGASTH/Desktop/Names"));
out.writeObject(names);
out.close();
}
что я должен сделать, чтобы заставить его работать? Кроме того, я хочу, чтобы сервлет отправил обратно объект, который он получает как ответ.
любая помощь будет оценили. Спасибо!
1 ответов
вам понадобится
- убедитесь, что
Names
класс реализуетjava.io.Serializable
интерфейс маркер. -
создайте ObjectOutputStream из outputstream сервлета следующим образом:
out = new ObjectOutputStream(urlCon.getOutputStream());
-
на стороне приемника, как только вы прочитаете объект из inputstream сервлета и сохранитесь в файле, запишите его обратно в выходной поток ответа следующим образом:
out = new ObjectOutputStream(response.getOutputStream()); out.writeObject(names); out.close();
на отправителя сторона:
Names names = new Names();
names.setName("ABC");
names.setPlace("Bangalore");
URL url;
try {
url = new URL("http://localhost:6080/HttpClientSerializable/HttpPostServlet");
urlCon = (HttpURLConnection) url.openConnection();
urlCon.setDoOutput(true); // to be able to write.
urlCon.setDoInput(true); // to be able to read.
out = new ObjectOutputStream(urlCon.getOutputStream());
out.writeObject(names);
out.close();
ObjectInputStream ois = new ObjectInputStream(urlCon.getInputStream());
names = (Names) ois.readObject();
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
catch (MalformedURLException e1) {
e1.printStackTrace();
}
на стороне приемника:
ObjectInputStream in = new ObjectInputStream(request.getInputStream());
try {
names = (Names) in.readObject();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
in.close();
ObjectOutputStream out = new ObjectOutputStream(
new FileOutputStream("C:/Documents and Settings/RAGASTH/Desktop/Names"));
out.writeObject(names);
out.close();
ObjectOutputStream oos = new ObjectOutputStream(response.getOutputStream());
oos.writeObject(names);
oos.close();