KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > gnu > kawa > servlet > ReplServlet


1 package gnu.kawa.servlet;
2 import gnu.text.*;
3 import gnu.mapping.*;
4 import gnu.expr.*;
5
6 import java.io.IOException JavaDoc;
7 import java.io.PrintWriter JavaDoc;
8
9 import javax.servlet.*;
10 import javax.servlet.http.*;
11
12 /** The Servlet for a browser-base "read-eval-print-loop" session.
13  * The session state and logic is in ReplSession. */

14
15 public class ReplServlet extends HttpServlet
16 {
17   public void init(ServletConfig config) throws ServletException
18   {
19   }
20
21   public void doPost(HttpServletRequest request,
22                      HttpServletResponse response)
23     throws java.io.IOException JavaDoc
24   {
25     String JavaDoc command = request.getParameter("command");
26     HttpSession hsession = request.getSession(true);
27     ReplSession rsession = (ReplSession) hsession.getValue("repl");
28     if (rsession == null)
29       {
30         rsession = new ReplSession();
31         hsession.putValue("repl", rsession);
32       }
33
34     PrintWriter JavaDoc out = response.getWriter();
35     String JavaDoc requestURI = request.getRequestURI();
36     StringBuffer JavaDoc resultBuffer = new StringBuffer JavaDoc();
37     resultBuffer.append("<?xml version=\"1.0\"?>\n");
38     resultBuffer.append("<result xmlns=\"http://www.w3.org/1999/xhtml\">");
39     java.io.BufferedReader JavaDoc in = request.getReader();
40     StringBuffer JavaDoc sbuf = new StringBuffer JavaDoc();
41     for (;;)
42       {
43         int ch = in.read();
44         if (ch < 0)
45           break;
46         sbuf.append((char) ch);
47       }
48     String JavaDoc inputData = sbuf.toString();
49     if ("line".equals(command))
50       rsession.appendInputLine(inputData);
51     else if ("action".equals(command))
52       rsession.appendInput(inputData);
53     String JavaDoc result = rsession.waitOutput();
54     resultBuffer.append(result);
55     resultBuffer.append("</result>");
56
57     response.setContentType("text/xml");
58     response.setHeader("Pragma", "no-cache");
59     response.setHeader("Expires", "0");
60     response.setHeader("Cache-Control", "no-store");
61         
62     out.print(resultBuffer.toString());
63     out.close();
64   }
65 }
66
Popular Tags