锁定老帖子 主题:servlet的另类写法:使用jython
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2005-06-15
繁琐,每个servlet必须在web.xml中声明并且当修改部署后的servet后一般还需要reload容器,这种情况对于快速开发是很不利的, 本文介绍一种另外的serlvet开发方式:使用jython 在http://www.jython.org上下载jython,解压后得到一个.class文件,使用java jython-21安装到硬盘目录,假设为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> 现在编写一个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>"; 这个文件放在web应用的根目录下。 启动应用服务器,假设位于localhost,端口8080,访问http://localhost:8080/jython/HelloWorld.py,是不是看到了 “Hello World by Jython Servlet!”字符串输出呢? 正如您所想象的一样,jython servlet无须在web.xml做任何声明,PySerlvet会拦截所有.py请求并分发给各自的jython servlet, 并且在修改HelloWorld的实现后,立刻就可以看到变化,无须重启应用服务器,很方便吧! 注:编写HelloWorld.py的时候请严格缩进,python是一种以缩进区分代码块的语言,不正确的缩进是语法错误 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2005-06-18
你们现在在哪些方面用Jython了,
我想把Quixote的功能用Jython来实现。 |
|
返回顶楼 | |
发表时间:2005-06-20
snowway 写道 众所周知,servlet是java在服务器端程序设计的重要组成部分,servlet执行效率较高,适合做程序的逻辑处理,缺点是使用起来比较
繁琐,每个servlet必须在web.xml中声明并且当修改部署后的servet后一般还需要reload容器,这种情况对于快速开发是很不利的, 本文介绍一种另外的serlvet开发方式:使用jython ... 不过这样和写全是 Java 代码的 jsp 就没有什么区别了, 除非开发人员很熟悉Python, 不过我想这样的人往往更熟悉Java |
|
返回顶楼 | |
发表时间:2005-06-20
glassprogrammer 写道 snowway 写道 众所周知,servlet是java在服务器端程序设计的重要组成部分,servlet执行效率较高,适合做程序的逻辑处理,缺点是使用起来比较
繁琐,每个servlet必须在web.xml中声明并且当修改部署后的servet后一般还需要reload容器,这种情况对于快速开发是很不利的, 本文介绍一种另外的serlvet开发方式:使用jython ... 不过这样和写全是 Java 代码的 jsp 就没有什么区别了, 除非开发人员很熟悉Python, 不过我想这样的人往往更熟悉Java 上面的仅仅是个例子,我并不是说把表现层的代码放在jython servlet中.实际上使用jython servlet并不需要开发人员很熟悉python,通常是语法层面需要熟悉而已,但一定要熟悉java api. jython servlet的优点是可以使用强大的python特性,比如动态类型,高级数据类型,无须显式编译和重载模块等等,这些都是java不具备的,正是因为这些特性,才保证了jython servlet的开速开发. |
|
返回顶楼 | |
发表时间:2005-06-20
马伟 写道 你们现在在哪些方面用Jython了,
我想把Quixote的功能用Jython来实现。 我一般使用jython充当某些框架开发中的脚本引擎,这样用户就有机会在配置文件中写一些简单的逻辑.比如工作流系统中的脚本语言支持. |
|
返回顶楼 | |
发表时间:2005-06-20
挺有趣 ! servlet变得比过去灵活多了.
问一下 python自己的库也可以在jython中随意使用吗 ? |
|
返回顶楼 | |
发表时间:2005-06-20
out.print(), 怎么都输与jsp,velocity等Template Engine一点.
|
|
返回顶楼 | |
发表时间:2005-06-21
winterwolf 写道 挺有趣 ! servlet变得比过去灵活多了.
问一下 python自己的库也可以在jython中随意使用吗 ? 可以的,只要sys.path列表中包含模块查找路径就可以了.在首次调用模块的时候jython引擎会把python模块编译成java虚拟机认识的class文件. 这样的话,有些功能就可以使用python来编写了 |
|
返回顶楼 | |
发表时间:2005-06-21
calvin 写道 out.print(), 怎么都输与jsp,velocity等Template Engine一点.
jython servlet和template engine不是一回事,jython servlet的特长并不在表现层的. |
|
返回顶楼 | |
发表时间:2005-06-21
引用 jython servlet和template engine不是一回事,jython servlet的特长并不在表现层的. 哦,搂主的简单例子是用jython直接print嘛。 我也提倡在IDE足够友好的时候,用groovy/jruby/jython 写controler和dao类, <在Spring+Hibernate框架下,用动态语言写业务类> http://blog.csdn.net/calvinxiu/archive/2005/06/13/393429.aspx |
|
返回顶楼 | |