js|圖形|驗證碼 
import java.io.*; 
import java.util.*; 
import com.sun.image.codec.jpeg.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.awt.*; 
import java.awt.image.*; 
public class ValidateCode  extends HttpServlet { 
 private Font mFont=new Font("宋體", Font.PLAIN,12);//設定字型 
 //處理post 
 public void doPost(HttpServletRequest request,HttpServletResponse response) 
   throws ServletException,IOException { 
  doGet(request,response); 
} 
 public void doGet(HttpServletRequest request,HttpServletResponse response) 
   throws ServletException,IOException { 
 //取得一個1000-9999的隨機數 
  String s=""; 
  int intCount=0; 
  intCount=(new Random()).nextInt(9999);// 
  if(intCount<1000)intCount+=1000; 
  s=intCount+""; 
  //儲存入session,用於與使用者的輸入進行比較.
  //注意比較完之後清除session.
  HttpSession session=request.getSession (true); 
  session.setAttribute("validateCode",s); 
  response.setContentType("image/gif"); 
  ServletOutputStream out=response.getOutputStream(); 
  BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB); 
  Graphics gra=image.getGraphics(); 
  //設定背景色 
  gra.setColor(Color.yellow); 
  gra.fillRect(1,1,33,12); 
  //設定字型色 
  gra.setColor(Color.black); 
  gra.setFont(mFont); 
  //輸出數字 
  char c; 
  for(int i=0;i<4;i++) { 
  c=s.charAt(i); 
  gra.drawString(c+"",i*7+4,11); //7為寬度,11為上下高度位置 
  } 
  JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out); 
  encoder.encode(image); 
  out.close(); 
  } 
} 
  java的圖片處理包需要圖形環境,而linux上沒有啟動圖形環境,找不到圖形環境的server(X11 window server using ':0.0' )所以會報這個錯。而通過java -Djava.awt.headless=true 這個參數的指定就可以避免java 2d去找圖形環境。
  要麼這樣試試,應該也可以。在servlet裡一開始寫一句:
System.setProperty("java.awt.headless","true");
  web伺服器的java虛擬機器必須加以個參數java.awt.headless=true
  以tomcat為例
  可以在/etc/profile或啟動web服務的使用者的.bash_profile中的CATALINA_OPTS變數中加入:
CATALINA_OPTS="... -Djava.awt.headless=true"
  其他的也可以看看啟動指令碼。只要加上這個參數就沒問題了。