package com.editev.chess; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import com.editev.chess.GameHTML; import com.editev.chess.printer.PagePrinter; import com.editev.chess.printer.Printer; import com.editev.util.Enum; /** This servlet will display any legal game of chess.
* * the following HTML parameters are used:
* * moves has the list of moves so far separated by commas.
* target contains the first half of the move if any.
* refresh has a refresh parameter that periodically refreshes the game with a random move.
* * @see The source is here
* and you can see a demo here. */ public class ChessServlet extends HttpServlet { public static Printer pagePrinter = new PagePrinter(); /** Responds to http GET requests as a good HttpServlet should. */ public void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res.setContentType("text/html"); // html description of the board. System.out.println( ); /* PrintStream out = new PrintStream( // buffer the output stream for better performance new BufferedOutputStream( // since most of the outputs are quite short. res.getOutputStream() ) ); */ boolean isLynx = req.getHeader( "User-Agent" ).startsWith( "Lynx" ); boolean hasJavascript = false;//!isLynx; boolean hasStyles = !isLynx; int refresh = com.editev.chess.printer.RefreshPrinter.NONE; String refStr = req.getParameter( "refresh" ); if (refStr != null) { refresh = 10; // refresh period in seconds. try { refresh = Integer.parseInt( refStr ); } catch (Exception e) {} } StringBuffer result = new StringBuffer(); GameHTML game = new GameHTML( // create a new game "chess", //"http://tom.ax.to/servlet/chess", req.getParameter( "moves" ), // the list of moves already made req.getParameter( "target" ), // and a start move if this is the second half. isLynx, hasJavascript, hasStyles, refresh, result // to the following output. ); pagePrinter.print( game ); // print the whole HTML page. res.getOutputStream().print( result.toString() ); res.getOutputStream().close(); // and flush the output, we're finished. } /** Responds to "post" requests in the same way as "get" requests. */ public void doPost( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { doGet( req, res ); } /** Describes this servlet with a String. */ public String getServletInfo() { return "a few random chess games."; } }