Ho un pulsante nella pagina jsp che quando premuto deve stampare un biglietto nella stampante predefinita del client senza aprire la finestra di dialogo questa è la servlet:
if ( tipo.equals("1")) 
	{ System.out.println("Scelta: SERVIZI POSTALI");
		RequestDispatcher view = request.getRequestDispatcher("EliminaCodePulsanti.jsp");
		view.forward(request, response);
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		
		String data = sdf.format(new Date());          //Variabile Data
		LocalTime ora=java.time.LocalTime.now ();     //Variabile ora
		String servizio= "SERVIZI POSTALI";           // Variabile Servizio
		String messaggio="benvenuti";
		
		try {
			eliminacode.Connessione.inserisciPrenotazione(data, ora, servizio);
			//-------- STAMPA IL BIGLIETTO
			eliminacode.Stampa stampaBiglietto =new eliminacode.Stampa();
		     stampaBiglietto.setServizio(servizio);	
		     stampaBiglietto.setMessaggio(messaggio);
		     stampaBiglietto.setOra(ora.toString());
		     eliminacode.Connessione x=new eliminacode.Connessione();
		     int id =x.ultimoId();
		     String id_=Integer.toString(id);
		     stampaBiglietto.setId(id_);
			stampaBiglietto.stampaBiglietto();
			//------------------FINE -----------------
		} catch (SQLException | PrinterException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
					
	}	
e questa  e la classe stampa
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Font;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.time.LocalTime;
import java.util.ArrayList;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
public class Stampa implements Printable{
	String ora="null";
    String id="null";
    String messaggio="null";
	String servizio="null";
    public void setOra(String ora) {
		this.ora = ora;
	}
	public void setId(String id) {
		this.id = id;
	}
	public void setMessaggio(String messaggio) {
		this.messaggio = messaggio;
	}
	
	public void setServizio(String servizio) {
		this.servizio = servizio;
	}
	public void stampaBiglietto() throws IOException, SQLException, PrinterException
	{
		 PrinterJob pj = PrinterJob.getPrinterJob();
		 //pj.printDialog();
		// pj.setJobName("Stampa biglietto");	
		  pj.setPrintable(this);
		  pj.print();	
	}
	@Override
	public int print(Graphics grap, PageFormat pageFormat, int pageIndex) throws PrinterException {
		// TODO Auto-generated method stub
		if(pageIndex > 0)
		    return NO_SUCH_PAGE;
		Font f = new Font("Helvetica", Font.BOLD, 20);
		grap.setFont(f);
		grap.setColor(Color.RED);
		grap.drawString("FALZONE SRL", (int)pageFormat.getImageableX()+30,
		   (int)pageFormat.getImageableY()+20);
		//-------------------
		f = new Font("Helvetica", Font.PLAIN, 10);
		grap.setFont(f);
		grap.setColor(Color.black);
		grap.drawString("NUMERO ASSEGNATO", (int)pageFormat.getImageableX()+10,
		   (int)pageFormat.getImageableY()+40);
		grap.setColor(Color.black);
		f = new Font("Helvetica", Font.BOLD, 70);
		grap.setFont(f);
		grap.setColor(Color.black);
		grap.drawString(id, (int)pageFormat.getImageableX()+50,
		   (int)pageFormat.getImageableY()+100);
		
		//-------------------
		f = new Font("Helvetica", Font.PLAIN, 10);
		grap.setFont(f);
		grap.setColor(Color.black);
		grap.drawString("SERVIZIO RICHIESTO", (int)pageFormat.getImageableX()+10,
		   (int)pageFormat.getImageableY()+115);
		f = new Font("Helvetica", Font.BOLD, 15);
		grap.setFont(f);
		grap.drawString(servizio, (int)pageFormat.getImageableX()+30,
				   (int)pageFormat.getImageableY()+130);
		//-------------------
		f = new Font("Helvetica", Font.PLAIN, 10);
		grap.setFont(f);
		grap.setColor(Color.black);
		grap.drawString("ORA DI ARRIVO", (int)pageFormat.getImageableX()+10,
		   (int)pageFormat.getImageableY()+145);
		grap.setColor(Color.black);
		grap.drawString(ora, (int)pageFormat.getImageableX()+30,
		   (int)pageFormat.getImageableY()+160);
		//-------------------
		
		grap.setColor(Color.black);
		grap.drawString(messaggio, (int)pageFormat.getImageableX()+10,
		   (int)pageFormat.getImageableY()+175);
		
		//grap.setColor(Color.GREEN);
		//grap.drawLine((int)pageFormat.getImageableX(), (int)pageFormat.getImageableY(), 
		  // (int)pageFormat.getImageableWidth(), (int)pageFormat.getImageableHeight());      
		return PAGE_EXISTS;
	}
}