CHAPTER 13 SIMPLE WEB APPLICATIONS
268
}
All commenting has been removed from the code in an attempt to make the code a bit shorter. Now,
Listing 13-4 is the equivalent servlet code written in Jython.
Listing 13-4.
from javax.servlet.http import HttpServlet
class NewJythonServlet (HttpServlet):
def doGet(self,request,response):
self.doPost (request,response)
def doPost(self,request,response):
toClient = response.getWriter()
response.setContentType ("text/html")
toClient.println ("<html><head><title>Jython Servlet Test</title>" +
"<body><h1>Servlet Jython Servlet at" +
request.getContextPath() +
"</h1></body></html>")
def getServletInfo(self):
return "Short Description"
Not only is the concise code an attractive feature, but also the easy development lifecycle for
working with dynamic servlets. As stated previously, there is no need to redeploy each time you make a
change because of the compile at runtime that Jython offers. Simply change the Jython servlet, save, and
reload the webpage to see the update. If you begin to think about the possibilities you’ll realize that the
code above is just a basic example, you can do anything in a Jython servlet that you can with Java and
even most of what can be done using the Python language as well.
To summarize the use of Jython servlets, you simply include jython.jar and servlet-api.jar in your
CLASSPATH. Add necessary XML to the web.xml, and then finally code the servlet by extending the
javax.servlet.http.HttpServlet abstract class.
Using JSP with Jython
Harnessing Jython servlets allows for a more productive development lifecycle, but in certain situations
Jython code may not be the most convenient way to deal with front-facing web code. Sometimes using a
markup language such as HTML works better for developing sophisticated front-ends. For instance, it is
easy enough to include JavaScript code within a Jython servlet. However, all of the JavaScript code would
be written within the context of a String. Not only does this eliminate the usefulness of an IDE for
situations such as semantic code coloring and auto completion, but it also makes code harder to read
and understand. Cleanly separating such code from Jython or Java makes code more clear to read, and
easier to maintain in the long run. One possible solution would be to choose from one of the Python
template languages such as Django, but using Java Server Pages (JSP) technology can also be a nice
solution.
Using a JSP allows one to integrate Java code into HTML markup in order to generate dynamic page
content. We are not fans of JSP. There, we said it: JSP can make code a living nightmare if the technology
is not used correctly. Although JSP can make it very easy to mix JavaScript, HTML, and Java into one file,
it can make maintenance very difficult. Mixing Java code with HTML or JavaScript is a bad idea. The
same would also be true for mixing Jython and HTML or JavaScript.