眾所周知,servlet是java在服務器端程序設計 的重要組成部分,servlet執(zhí)行效率較高,適合做程序的邏輯處理,缺點是使用起來比較繁瑣,每個servlet必須在web.xml中聲明并且當修改 部署后的servet后一般還需要reload容器,這種情況對于開速開發(fā)是很不利的,
本文介紹一種另外的serlvet開發(fā)方式:使用Jython編寫Servlet
本文假設 讀者熟悉某種應用服務器(如tomcat),java 和 python程序設計語言
在http://www.jython.org 上下載jython,假設為D:\jython-2.1
建立一個名稱為jython的web應用,把D:\jython-2.1\jython.jar copy到webapp下的WEB-INF\lib下,并配置web.xml如下:
- < servlet>
- < servlet-name>PyServlet< /servlet-name>
- < servlet-class>
- org.python.util.PyServlet
- < /servlet-class>
- < load-on-startup>11< /load-on-startup>
- < init-param>
- < param-name>python.home< /param-name>
- < param-value>D:\jython-2.1< /param-value>
- < /init-param>
- < init-param>
- < param-name>python.path< /param-name>
- < param-value>D:\jython-2.1\Lib< /param-value>
- < /init-param>
- < /servlet>
- < servlet-mapping>
- < servlet-name>PyServlet< /servlet-name>
- < url-pattern>*.py< /url-pattern>
- < /servlet-mapping>
現(xiàn)在編寫一個HelloWorld.py,如下:
- from javax.servlet.http import HttpServlet
- class HelloWorld(HttpServlet):#需要類名和文件名 一致
- def doGet(self,request,response):
- response.setContentType("text/html;charset=utf-8");
- out = response.getWriter()
- print>>out,"< H1>Hello World by Jython Servlet!< /H1>";
啟動應用服務器 ,假設位于localhost,端口8080,訪問http://localhost:8080/jython/HelloWorld.py ,是不是看到了
“Hello World by Jython Servlet!”字符串 輸出呢?
正如 您所想象的一樣,Jython編寫Servlet無須在web.xml做任何聲明,PySerlvet會攔截所有.py請求并分發(fā)給各自的jython servlet,
并且在修改HelloWorld的實現(xiàn)后,立刻就可以看到變化,無須重啟 應用服務器,很方便吧!
注:編寫HelloWorld.py的時候請嚴格縮進 ,jython是一種以縮進區(qū)分代碼塊的語言,不正確的縮進是語法錯誤。這樣就完成了Jython編寫Servlet。