2016-04-04 8 views
0

Ich habe eine Form wie folgt aus:Rand-/IE herunterlädt Servlets statt es zeigt

<form action="WorkUser" method="POST" > 
    <label> 
     <input type="text" id="nickname" name="nickname" placeholder="Nickname"> 
     <input type="submit" name="submit" value="Senden"> 
    </label> 
</form> 

Dies leitet zu einer Servlets, die die Anforderung an eine JSP-Datei weiterleitet. Auf Opera, Chrome, Safari und Firefox funktioniert das sehr gut.

Aber Internet Explorer und Edge laden die endgültige JSP-Seite als HTML-Datei. Wenn Sie dies mit einem Browser öffnen, wird die Seite groß dargestellt. Auch die Seite zeigt keine Fehler, wenn in http://validator.w3.org

Der Leiter der JSP-Datei validiert, die es zu Umleitungen, sieht wie folgt aus:

<!DOCTYPE html> 
    <%@ page language="java" contentType="charset=UTF-8" 
pageEncoding="UTF-8"%> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

Haben Sie eine Ahnung, warum dieses Problem erscheint?

+1

Die Ursache des Problems ist in den bisher bereitgestellten Informationen nicht sichtbar. Bitte stellen Sie sicher, dass jeder auf der Welt Ihr Problem genau anhand der Informationen in der Frage reproduzieren kann. Als fundierte Schätzung ist der Typ des Antwortinhalts wahrscheinlich falsch. Wenn es so falsch ist, dass es vom Webbrowser nicht unterstützt wird (z. B. nog text/html), versuchen einige Browser, es herunterzuladen, anstatt es inline anzuzeigen. – BalusC

+0

Konnte das Problem diese Zeile sein: <% @ page language = "java" contentType = "charset = UTF-8" pageEncoding = "UTF-8"%> –

+1

Definitiv. Entfernen Sie die Attribute 'language' und' contentType', damit sie ihre korrekten Standardwerte beibehalten. Sie könnten den Textbaustein weiter reduzieren, indem Sie "pageEncoding" in die globale "web.xml" -Einstellung migrieren. Auf diese Weise brauchen Sie nicht mehr <% @ page ...%> '. – BalusC

Antwort

1

Die contentType hier ist falsch.

<%@page language="java" contentType="charset=UTF-8" pageEncoding="UTF-8"%> 

Es muss einer von those values sein. Der Standardwert ist text/html. Dies ist der korrekte Wert für ein HTML-Dokument.

<%@page language="java" pageEncoding="UTF-8" %> 

Wenn ein Web-Browser den Inhaltstyp nicht erkennt, werden einige Browser kann aus Sicherheitsgründen gezwungen, sie als Datei herunterladen zu behandeln, während andere Browser, wenn die Antwort HTML „aussieht“ zu inspizieren kann zuerst versuchen, und dann zeige es trotzdem an.


Unrelated auf die konkrete Problem ist die language="java" superflous. Es ist bereits der Standard. How can I cleanly set the pageEncoding of all my JSPs?

Auf diese Weise können Sie von der gesamten <%@ page ... %> Linie loswerden:

<%@page pageEncoding="UTF-8" %> 

Die pageEncoding konnte programmweit gemäß den Anweisungen in der Antwort auf diese Frage eingestellt werden.

+0

Danke für Ihre Hilfe. Ich habe das Problem jetzt gelöst, Eclipse ist lustig. –

+0

Gern geschehen. Eclipse generiert Code basierend auf Vorlagen. Wahrscheinlich war eine Vorlage kaputt. Sie können sie irgendwo in den Vorlieben finden. – BalusC

+0

Eine weitere Frage: Es ist ziemlich interessant, wenn ich die pageEncoding = "UTF-8" hinzufüge, ist es nicht in UTF-8 kodiert, aber wenn ich die Zeile nicht hinzufüge und sie lasse: Sie ist korrekt codiert. Irgendeine Idee, warum das passiert? –