Originariamente inviato da aironeangelo77
qual'è la differenza tra il metodo print (o println) e il metodo write della classe ServletOutputStream?Cioè quando è conveniente usare l'uno piuttosto che l'altro? C'è differenza di prestazioni tra i due?
So bene che il write prende come argomenti solo un array di byte mentre print prende le String e i tipi semplici (int, float, boolean), ma dal momento che passare da String ad array di byte e viceversa è abbastanza semplice, quando è conveniente l'uso di print o di write?
A dire il vero ServletOutputStream andrebbe usato solo per scrivere dati "binari", non per testo in generale.
I print/println di ServletOutputStream infatti non fanno un "buon" lavoro con i caratteri, visto che ne considerano solo la parte bassa (gli 8 bit meno significativi) e usano il write() che scrive 1 byte. I print/println vanno bene ma solo in casi limitati dove, guarda caso, l'encoding della pagina è ISO-8859-1 per cui caratteri 0x00nn vanno bene.

Se vuoi scrivere caratteri che possono essere codificati appropriatamente, dovresti usare il PrintWriter che ti fornisce getWriter() dell'oggetto response.