2013-01-12 6 views
16
public class HelloWorld extends HttpServlet{ 
     public void doGet(HttpServletRequest request, 
     HttpServletResponse response) 
     throws ServletException,IOException{ 
     **response.setContentType("text/html");** 
     PrintWriter pw = response.getWriter(); 
     pw.println("<html>"); 
     pw.println("<head><title>Hello World</title></title>"); 
     pw.println("<body>"); 
     pw.println("<h1>Hello World</h1>"); 
     pw.println("</body></html>"); 
     } 
    } 
+3

In pratica dice al client (il browser) quale tipo di contenuto è in modo che sappia cosa fare con esso. Notato dovrebbe essere che il codice mostrato finora è considerato una cattiva pratica. Il codice HTML appartiene a un file JSP. Vedi anche http://stackoverflow.com/tags/servlets/info – BalusC

risposta

14

I tipi di contenuto sono inclusi nelle risposte HTTP perché lo stesso byte per la sequenza di byte di valori nel contenuto potrebbe essere interpretato in più di un modo. (*)

Ricordare che http può trasportare più di un semplice HTML (js, css e immagini sono esempi ovvi), e in alcuni casi, il ricevitore non saprà quale tipo di oggetto riceverà.


(*) l'ovvio è XHTML, che è XML. Se viene fornito con un tipo di contenuto di application/xml, il destinatario dovrebbe essere per considerarlo come XML. Se viene pubblicato come application/xhtml+xml, dovrebbe essere trattato come XHTML.

+2

Dove potrei trovare un elenco di tutti i tipi di contenuto? Ad esempio, se volessi restituire un valore booleano, dovrei impostarlo come oggetto JSON e quindi convertirlo di conseguenza (cioè utilizzando GSON)? – tccpg288

+0

@ tccpg288 qui: https://www.iana.org/assignments/media-types/media-types.xhtml e domande correlate: https://stackoverflow.com/questions/23714383/what-are-all-the- possibili-valori-per-http-content-type-header – ylka

1

È uno del tipo MIME, in questo caso si è risposta all'intestazione MIME digitare su text/html significa che visualizza il tipo html. È un'informazione per il browser. Ci sono altri tipi che si possono impostare per visualizzare excel, zip ecc Si prega di consultare MIME Type per ulteriori informazioni

5

Significa che tipo di risposta che si desidera inviare al cliente, alcuni tipi di contenuti come:

res.setContentType("image/gif"); 
res.setContentType("application/pdf"); 
res.setContentType("application/zip"); 
2
response.setContenType("text/html"); 

Sopra il codice dovrebbe essere incluso in "risposta HTTP" per informare il browser sul formato della risposta, in modo che il browser possa interpretarlo.

10

Da docs JavaEE ServletResponse#setContentType

  • Imposta il tipo di contenuto della risposta viene inviata al client, se la risposta non è stato ancora commesso.

  • Il dato tipo di contenuto può includere una specifica codifica dei caratteri, ad esempio,

response.setContentType("text/html;charset=UTF-8");

  • codifica dei caratteri del risposta è impostata solo da un dato tipo di contenuto se questo metodo viene chiamato prima di chiamare getWriter.

  • Questo metodo può essere chiamato più volte per modificare il tipo di contenuto e la codifica dei caratteri.

  • Questo metodo non ha effetto se chiamato dopo che la risposta è stata commessa. Non imposta la codifica dei caratteri della risposta se viene chiamata dopo che è stato chiamato lo getWriter o dopo che la risposta è stata confermata.

  • I contenitori devono comunicare il tipo di contenuto e la codifica di carattere utilizzata per il writer della risposta della servlet al client se il protocollo fornisce un modo per farlo. Nel caso di HTTP, viene utilizzata l'intestazione Content-Type.

+0

Qualche idea sul contenuto predefinito Tipo e codifica dei caratteri se uno non è specificato esplicitamente? – Bateman

1

Devi dire al browser che si sta inviando indietro in modo che il browser può prendere i provvedimenti opportuni, come il lancio di un visualizzatore PDF se un file PDF che è in fase di ricezione o il lancio di un lettore video per riprodurre file video , restituendo l'HTML se il tipo di contenuto è semplice risposta HTML, salva i byte della risposta come file scaricato, ecc.

alcuni tipi MIME comuni sono text/html, application/pdf, video/quicktime, application/java , image/jpeg, application/jar etc

Nel tuo caso dal momento che stai inviando HTML r Per quanto riguarda il client, devi impostare il tipo di contenuto come text/html

+0

Oltre a dire all'OP ciò che devono realizzare, dovresti in realtà spiegare come farlo (generalmente, questo significa con il codice.) Inoltre, questo post ha già cinque risposte, una delle quali è accettata, ed è di quattro anni fa. Pertanto, ti consiglio di provare a rispondere a domande più recenti. – ostrichofevil