Cześć!
Uruchomiłem sobie prosty serwer http w Javie. Szukam odpowiedzi na pytanie jak przeładować stronę internetową w html z nowymi parametrami do wyświetlenia bez otwierania jej w nowym oknie przeglądarki. Poniżej fragment kodu, który odbiera żądanie wyświetlenia strony przez użytkownika metodą GET, użytkownik wpisuje parametry w okienka, do serwera kierowany jest POST, fragment modyfikuje plik html aby uwzględnić wpisane parametry do wyświetlenia a następnie odsyła tą stronę użytkownikowi. Niestety odesłana strona otwiera się w nowej karcie przęglądarki. Jak tego uniknąć? Dzięki za opdowiedz:)
. . .
//fragment programu odbierajacy metodę post z parametrami aby wyedytować tą samą strone html i wyswietlić te parametry.
if(method.equals("POST")) {
StringBuilder content = null;
String len = exchange.getRequestHeaders().getFirst("Content-Length");
if(len != null) {
int nlen = Integer.parseInt(len);
BufferedInputStream in = new BufferedInputStream(exchange.getRequestBody());
content = new StringBuilder(10);
for(int i=0; i<nlen; ++i) {
content.append((char)in.read());
}
System.out.println("********************************************8");
System.out.println("content:" + content);
in.close();
String[] postParams = content.toString().split("\\&");
String param1 = postParams[0];
String param2 = postParams[1];
param1 = param1.substring(param1.indexOf("=")+1);
param2 = param2.substring(param2.indexOf("=")+1);
String pageName1 = "post.html";
try {
//HTMLPageEditor htmlPageEditor = new HTMLPageEditor();
htmlPageEditor.setRfiile(pageName1);
htmlPageEditor.replacePhrase(previousData1,param1);
htmlPageEditor.replacePhrase(previousData2,param2);
htmlPageEditor.endEdition();
previousData1 = param1;
previousData2 = param2;
}
catch (Exception e) {
e.printStackTrace();
}
OutputStream os = exchange.getResponseBody();
File file = new File(pageName1);
exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK,0);
FileInputStream fin = new FileInputStream(pageName1);
FileChannel fch = fin.getChannel();
WritableByteChannel writableByteChannel = Channels.newChannel(os);
fch.transferTo(0,file.length(),writableByteChannel);
fch.close();
writableByteChannel.close();
}
if(content != null) {
Headers responseHeaders = exchange.getResponseHeaders();
exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK,0);
}
}
. . .