Jython是什么?

 维基百科:Jython程序可以和Java无缝集成。除了一些标准模块,Jython使用Java的模块。Jython几乎拥有标准的Python中不依赖于C语言的全部模块。比如,Jython的用户界面将使用SwingAWT或者SWT。 Jython可以被动态或静态地编译成Java字节码

Jython还包括jythonc,一个将Python代码转换成Java代码的编译器。这意味着Python程序员能够将自己用Python代码写的类库用在Java程序里。

可见,Jython是Python和Java的综合体,能直接运行于JVM之一。本文将介绍如何使用NetBeans 6.7进行Jython程序的开发。

 

首先需要安装NetBeans 6.7,下载地址为http://www.netbeans.org;打开NetBeans,在工具里选择插件,可用插件里可以搜索到python和jython,选中后点击安装即可。

插件安装成功后,会在工具菜单下生成Python Platforms的子菜单项,点击该菜单项,如果像图一这样拥有Jython或Python平台,则说明安装成功。

图一 Python Platform Manager

接下来就可以创建属于自己的工程了,选择文件 > 新建工程,进入以下用户界面,如图二所示:

图二 新建工程

本文用一个FeedReader工程作为Example,通过一个feedreader.py的jython程序来读取rss配置文件的内容,如图三所示:

图三 FeedReader Project

该jython程序的代码如下:

 

from java.net import URL

from java.lang import Exception

from java.lang import Object

from com.sun.syndication.io import SyndFeedInput

from com.sun.syndication.io import XmlReader

 

 

class FeedReader(Object): ... (全文...)



今天在做Web开发时遇到一个非常奇怪的问题,一行代码居然浪费了我一个多小时的宝贵时间,还好最终顺利解决。
问题是这样的:当我在JS的 head标签里加入<script language="javascript" type="text/javascript" src="${contextPath}/js/My97DatePicker/WdatePicker.js"></script> 这行javascript代码后,发现用IE访问该页面时会弹出错误对话框,提示“Internet Explorer无法打开站点,已终止操作”,而使用Firefox则一切正常。由于目前在我国的主流浏览器仍是IE,所以这是个相当严重的问题,必须立 即解决。在对程序进行调试检查后,我把问题定位在了这行日期选择的JS代码上。难道是因为我使用的IE版本过低?而在Firefox3.5上一切正常更增 大了这种可能性。用IE 7和IE 8测试过后,彻底排除了这种可能。难道${contextPath}与程序其它部分冲突了?不是,去掉这行JS,其它的JS能正常运行!难道这行JS的内 容与程序冲突了?不是,这个日期插件目前非常流行,而且我也特意做了一个简单的demo测试过,没问题。既然其它的JS运行正常,是不是因为在页面未加载 完毕时就执行JS脚本导致对象实例找不到的原因?于是尝试在JS代码里加入defer="defer"。问题成功解决!
再次感受到了代码调试与排错的痛苦,也再次享受了成功带来的喜悦……



我们知道,iGoogle其实就是由一块块相对独立的应用模板组成,而这种布局可以通过Portlet技术来实现。Portlet是一种基于Java技术的web组件,由处理请求和生成动态内容的 portlet容器管理。接下来将详细介绍Portlet这种强大、有趣的技术。

Portal是什么?   

在了解portlet之前有必要先了解portal。在Portlet规范里是这样讲的:“portal是一种web应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。聚集是指将来自各个信息源的内容集成到一个web页面里的活动”。  

Portal的功能可以分为三个主要方面:

1.  Portlet 容器:Portlet容器与servlet容器非常类似,所有的portlet都部署在portlet容器里,portlet容器控制portlet的生命周期并为其提供必要的资源和环境信息。Portlet容器负责初始化和销毁portlets,向portlets传送用户请求并合成响应。

2.  内容聚集:portal的主要工作之一是聚集由各种portlet应用生成的内容。

3.  公共服务:portlet服务器的一个强项是它所提供的一套公共服务:

         (1) 单次登录:只需登录portal服务器一次就可以访问所有其它的应用,这意味着你无需再分别登录每一个应用。 

(2)个性化:个性化服务的基本实现使用户能从两方面个性化页面:第一,用户可以根据自身喜好决定标题条的颜色和控制图标。第二,用户可以决定在页面上有哪些portlets。   

 此外还有一些公共服务,比如机器翻译,是由portal服务器将portlet生成的内容翻译为用户要求的语言。大部分的商业portal服务器都支持手持设备访问并具有针对不同的浏览终端生成不同内容的能力。

Portlets是什么?
  与servlets类似,portlets是部署在容器内用来生成动态内容的web组件。从技术角度讲portlet是一个实现了javax.portlet.Portlet接口的类,它被打包成war文件格式部署到portlet容器里。

Portlets在以下方面与servlets相似:   

1. portlets由特定的容器管理。   

2. portlets生成动态内容。   

3. portlet的生命周期由容器管理。   

(全文...)



如果让一个人说出一种开源的servlet容器,他的回答可能是Apache Tomcat。但是,Tomcat并不是孤单的,我们还有JettyJetty 是一个使用Java语言编写的开源的servlet容器,它为基于Javaweb内容如JSPservlet提供运行环境。Jetty作为可选的servlet容器只是一个额外的功能,而它真正出名是因为它是作为一个可以嵌入到其他的Java代码中的servlet容器而设计的。这就是说,开发小组将Jetty作为一组Jar文件提供出来,因此你可以在你自己的代码中将servlet容器实例化成一个对象并且可以操纵这个容器对象。

Jettyservlet容器中算不上一个新面孔,它从1998年就已经崭露头角。Jetty的发布遵循了Apache 2.0的开源协议,你可以在免费软件和商业软件中使用Jetty

下面将介绍在MyEclipse 6.5下使用jetty的全过程。

环境 ... (全文...)



Apache Derby是一个开源的、100% Java编写的、与平台无关的、易管理的关系数据库管理系统。Derby为用户提供了轻量的标准数据库引擎,它可以紧密的嵌入到任何基于Java的解决方案中。Derby确保数据完整性,并提供负责的事务处理操作。默认的配置中不包含任何独立的数据库服务器。同时,Derby 的安装过程非常简单,只需要将其 .jar 文件复制到系统中并为您的项目添加该 .jar 文件即可。

Derby拥有一个令人惊奇的特性列表。它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。一部分的列表特性使Derby从其他的Java 关系数据库管理系统中分离出来。

Derby可以有两种部署方式:

嵌入式:Derby被单个用户的Java应用程序使用,在这种模式下,Derby和应用程序运行在同一个JVM中。Derby对于终端用户几乎是透明的,因为它的启动和终止都是由应用程序来控制,而不需要任何的管理。

服务器模式:Derby由应用程序启动,此时通过用户可以通过网络连接。在这种模式下,Derby运行在服务器主机的JVM中。其他JVM的应用程序通过连接服务器来访问数据库。

在MyEclipse里默认已经集成了Derby数据库,启动Derby只需点击MyEclipse Derby的Start即可,如下图所示:

 

切换到Database视图,右键选择“new”,配置数据库连接,如下图所示:

 

其中Driver name自定义,test是当前要新建的数据库名称,Username和Password随便填,而Jar包在MyEclipse6.5安装目录

\myeclipse\eclipse\plugins\com.genuitec.eclipse.derby_6.5.0.zmyeclipse650200806\lib下;

配置好后右键选择“Open Connection”进行连接,连接上后右键“connected to MyEclipse Derby”,选择“New Sql Editor”,然后就可以使用SQL命令进行建表操作了。

参考文献:

1. http://20032334.javaeye.com/blog/148882

2. http://b ... (全文...)






不搞Web开发好多年,但最近实验室接了湖北省科技厅的一个Web项目,只得硬着头皮重新开始自己的Web开发之旅。做起来果然捉襟见肘,用的还是自己从未接触过的webwork框架。Web技术发展得太迅速,想想自己曾用过的Struts 1.0,感觉自己逐渐在被新技术所淘汰。

更不爽的是,今天居然被一个javascript的问题折腾了近一个小时,要实现的功能仅仅是:当点击链接时弹出确认对话框,选择确定时删除数据,选择取消时不处理。

如果是直接在HTML里写代码,那么使用<a href="删除的action+传递参数" onclick="return confirm('确定要删除吗?')">就可以解决,但由于开发的需要,我得将这些代码在<% %>里通过out.println("")输出来。这样问题就来了,折腾了好久,不管是将return confirm()写在另一个javascript函数里然后再调用这个函数,还是直接写在onclick里都不会弹出对话框。正当我几近绝望准备放弃时,问题终于解决了,原来都是引号惹的祸。

正确写法是:out.println("<a href='删除的action+传递参数' onclick=\"return confirm('确定要删除吗?')\">删除</a>") ;

仔细分析:问题就出在\",这也是我被逼无奈的尝试,不小心成功了,呵呵。这里你不能用'或"代替,更不能去掉,因为双引号已经存在,而return confirm()又必须要被双引号括起来,所以就只能用\"(代表双引号中的双引号)。

希望自己的一点经验能让遇到同样问题的同道人士少转弯路。