使用Jython編寫Servlet
眾所周知,servlet是java在服務(wù)器端程序設(shè)計 的重要組成部分,servlet執(zhí)行效率較高,適合做程序的邏輯處理,缺點(diǎn)是使用起來比較繁瑣,每個servlet必須在web.xml中聲明并且當(dāng)修改部署后的servet后一般還需要reload容器,這種情況對于開速開發(fā)是很不利的,
本文介紹一種另外的serlvet開發(fā)方式:使用Jython編寫Servlet
本文假設(shè) 讀者熟悉某種應(yīng)用服務(wù)器(如tomcat),java 和 python程序設(shè)計語言
在http://www.jython.org 上下載jython,假設(shè)為D:\jython-2.1
建立一個名稱為jython的web應(yīng)用,把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>";
啟動應(yīng)用服務(wù)器 ,假設(shè)位于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)后,立刻就可以看到變化,無須重啟 應(yīng)用服務(wù)器,很方便吧!
注:編寫HelloWorld.py的時候請嚴(yán)格縮進(jìn) ,jython是一種以縮進(jìn)區(qū)分代碼塊的語言,不正確的縮進(jìn)是語法錯誤。這樣就完成了Jython編寫Servlet。
【編輯推薦】