阅读更多

29顶
13踩

编程语言

怎么又冒出一个web框架?

 

 

看看现存的Java web应用程序框架,无一例外的要求花费大量的时间与精力后才可投入生产。对于大多数开发人员来说想要的东西很简单:友好,易于学习并且还具有生产力。因此我们开发了JSPX

 

 

JSPX的主要目标就是打造成为一个“友好的开发者”框架。因为JSPX只基于标准的HTML标签和简单的Java POJO

 

1.         JSPX易于学习。我们已经做到让一些只有HTMLJava基础,而对其它框架一无所知的开发新手在很短的时间内就上手投入生产。

 

2.         开箱即用(out of the box)的组件比如说DataTableListTableValidatorsCapatcha已经非常强大的,对于一般的需求绰绰有余。

 

3.         通过Java API来利用声明好的代码来与HTML上那些声明好的控件进行交互,是JSPX框架的核心。

 

 

 

声明代码是如何使得JSPX与众不同呢?

 

 

JSPX已经足够智能——你无需告诉它怎么做,它就已经知道了你的意图。原因就在于你只需要在HTML的页面上声明一些属性,从而来改变行为结果。比如说吧,有一个DataTable组件,你把它的“AutoBind”属性设置为“True”后,它会自动的连上数据库去获取数据填充表格,不需要任何Java代码。

 

 

 

下面的就是DataTable的实例:

 

 

 

 

现在我们来个关于HelloWorldQuickStart。用JSPX开发“HelloWorld”非常简单。只需要三步:

 

1.         配置web.xml文件。我们得注册两个servlets并且选择你的URL pattern

 

 

<servlet>  
    <display-name>JspxHandler</display-name>  
    <servlet-name>JspxHandler</servlet-name>  
    <servlet-class>eg.java.net.web.jspx.engine.RequestHandler</servlet-class>  
</servlet>  
  
<servlet>  
    <display-name>ResourceHandler</display-name>  
    <servlet-name>ResourceHandler</servlet-name>  
    <servlet-class>eg.java.net.web.jspx.engine.ResourceHandler</servlet-class>  
</servlet>  
  
<servlet-mapping>  
    <servlet-name>JspxHandler</servlet-name>  
    <url-pattern>*.jspx</url-pattern>  
</servlet-mapping>  
  
<servlet-mapping>  
    <servlet-name>ResourceHandler</servlet-name>  
    <url-pattern>/jspxEmbededResources/*</url-pattern>  
</servlet-mapping>  

 

 

 

2.         创建的HTML文件的扩展名就是你刚才选择的URL pattern。比如说,现在咱们在WebRoot文件夹下创建一个叫FirstPage.jspxHTML文件:

 

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:noNamespaceSchemaLocation="http://jspx-bay.sourceforge.net/jspx.xsd"
       controller="FirstPage" >
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
            <title>jspx demo</title>
        </head>
        <body>
            <form method="post" enctype="multipart/form-data" >
                <label id="resultLabel"></label>
            </form>
        </body>
    </html>
</page>

 

 

<!--[if !supportLists]-->
3.    创建一个Java类,该类必须与定义在HTML页面上的page标签“jspx.demo.web.controller.FirstPage”一致。(注:上面页面配置的“FirstPage”可能有误,应该是jspx.demo.web.controller.FirstPage)

 

 

public class FirstPage extends Page {

    protected void pageLoaded() {
        resultLabel.setValue("Hello Web in JSPX");

    }

    public Label resultLabel = new Label();

    public Label getResultLabel() {
        return resultLabel;
    }

    public void setResultLabel(Label result) {
        this.resultLabel = result;
    }

}

 

 

 

现在你可以启动servlet容器,访问http://localhost/jspx-demo/pages/FirstPage.jspx.看看结果。(注:真实的URL与你实际配置有关。而且目前版本,所有的页面貌似只能放在“pages”下)

 

 

 

FAQ

 

 

JSPX中的HTML文件与普通HTML文件有什么区别?

 

看到上面的实例,除了根元素<page>外,我们可以看到页面用的其实还是标准的HTML标签。这也是JSPX最重要的特性之一:将一个已经设计好的普通HTML页面包装成JSPX页面,而且仅仅使用<page>标签即可。虽然JSPX是构建于标准HTML标签的,但是当遇到一些稍微复杂点的业务(比如说查找数据库的记录集),我们也可以使用一些非标准的JSPX标签来解决(上文提到的DataTableListTableValidatorsCapatcha等等都是)

 

 

POJO中到底定义的是什么?他们是如何绑定上(hook )HTML文件的?

 

 

所谓的Controller (控制器)其实就是一个简单的POJO类,它表示了在HTML页面那。在上面的页面中,你可以在<page>标签中,看到“Controller”属性。它与你在后台定义的那个Controller类的完全限定名是完全一致的。而在这个Controller类中,你又可以定义其它web控件,然后在相应的HTML页面中添加相应的标签,并且令其idController中定义的组件变量名一致即可。除此以外,通过使用JspxBean控件,还有更高级的绑定技术,很像JSFbacking beans哦。

 

 

配置文件如何配置,像struts-config.xml吗?

 

 

配置方法也是JSPX最重要的优点之一。我们从一开始就想把烦人的配置文件给干掉。不像JSFStruts,除了标准的web.xml外,JSPX并不需要任何配置文件。因此,你可以认为JSPX也是一个“Zero Configurations Framework

 

 

该框架有啥缺点吗?

 

 

对于某些人来说,使用一个相对较新的框架被为是一种冒险。对于JSPX来说,我们已经考察过其它框架,知道哪些东西应该取舍。对于已经采用了像JSFJSP这些技术开发的项目,JSPX也可以融入其中进行开发。对于已有的JSP页面,我们支持将其转成JSPX页面。

 

 

你们在实际工作中使用了此框架吗?结果如何?

 

 

JSPX第一次公布以来,已经过去的5个多月了,它已经至少付诸于5个我们的企业项目。有些已经完全迁徙到JSPX上去了。其它的由于已经用的是别的开发技术,JSPX目前用于开发新的需求。所有的项目中,JSPX都表现出了惊人的生产力。对于我们的开发周期,高层管理都非常满意。实际上,我们已经可以将原本计划数天干完的活,结果不到一小时就搞定了。

 

 

这个框架将来打算怎么发展?

 

 

JSPX的第一次发布是在2009年的11号,但我们并不会因此而止步不前。我们的计划是每月都发布一次,除把一些bug给修复掉,还会添加新的特性。我们计划在下一个版本添加对AJAX的支持。当然,推出基于NetBeans的插件也会为此框架增色不少哦。

 

其实最主要的是我们还得依靠用户的不断反馈来驱动框架变得更有活力,同时还产生出更多的成功商业案例。

 

 

如何开始使用?

 

 

我们的站点是http://jspx-bay.sourceforge.net,里面有很多教你如何开始使用JSPX的内容。当然我们也提供了一个demo来演示框架的一些特性。当然我们非常乐意的支持有关JSPX的任何请求,我们的邮箱是:support.jspx@gmail.com

 

 

来自: java.dzone.com
29
13
评论 共 43 条 请登录后发表评论
23 楼 JimyChen 2009-01-07 13:33
grails?
22 楼 ray_linn 2009-01-07 13:12
怪不得的叫“jspx",果然象asp.net的"aspx".
21 楼 young_suse 2009-01-07 13:08
感觉像asp.net,不过如果真的有Visual Stdio那样开发方便就好了!
20 楼 bdifn 2009-01-07 13:00
 
确实像模仿asp.net的。像Page类及一些初始化方法。。。
19 楼 rojazz1999 2009-01-07 12:52
跟wicket一个概念吧.
18 楼 qhfrose 2009-01-07 12:29
magnesium 写道

aspx的java版本?

编程模型上有比较高的相似度
17 楼 allenny 2009-01-07 12:02
感觉还是没有Grails好
16 楼 herowzz 2009-01-07 11:02
背后有大厂商支持吗
15 楼 天机老人 2009-01-07 10:52
是不是还是基于mvc 的啊?
14 楼 weiqingfei 2009-01-07 10:24
这种的东西怎么越来越多。
13 楼 d_eye 2009-01-07 10:19
>>JSPX已经足够智能——你无需告诉它怎么做,它就已经知道了你的意图。
吹的太大了吧?
12 楼 天机老人 2009-01-07 10:03
听起来很美……
11 楼 magnesium 2009-01-07 09:33
aspx的java版本?
10 楼 laozhijia 2009-01-07 09:29
9 楼 sion 2009-01-07 09:26
asp.net ?
8 楼 freecode 2009-01-07 09:21
wicket
7 楼 eyejava 2009-01-07 09:16
不尝试,仅观望
6 楼 phoenixup 2009-01-07 09:14
与这个JSPX相比较类似的还有Wicket、Tapestry,而且也够强悍~~JSPX看看可以~
5 楼 supercrsky 2009-01-07 09:07
demo 太少了,只有一个helloworld
4 楼 brunoplum 2009-01-07 09:04
有创意,准备把手头的一个jsp项目换成这个试试

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • vb.net 控件数组演示

    vb.net 控件数组演示。。。。。。。。。。。。。。

  • C#变通方法实现VB6.0里面的控件数组,VB.net也同样

    C#变通方法实现VB6.0里面的控件数组,当然VB.net也可以用,,用了三种方法 ,代码添加事件,属性页里设置事件,判别并处理.

  • vb.net2010代码创建控件数组

    vb.net界面上不支持控件数组,但是可以通过代码创建控件类型的数据变量,并在代码中赋予其各个属性值,来完成控件数组的创建。 相信对于使用过VB6.0的朋友们会有些帮助。

  • vb.net像VB6一样使用控件数组

    vb.net像VB6一样使用控件数组 像VB6一样用来保存对像的index值

  • VB.NET中实现控件数组的功能

    控件:几个文本框textbox事件:TextBoxes_textchanged代码: Private Sub TextBoxes_TextChanged(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles TextBox1.TextChanged, _    TextBox

  • 学习笔记:VB.net动态添加控件数组并传递事件

    学习笔记:VB.net动态添加控件数组并传递事件控件数组和事件“中间人”动态添加控件 控件数组和事件 新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组 即使可以,为每一个数组成员编写事件也是非常麻烦的,考虑通过一个“中间人”来传递事件 “中间人” 用继承的方法为Button控件增加一些事件、属性和方法 Public Class MyButton Inherits ...

  • VB.NET实现动态加载控件数组

    vb.net中没有控件数组,它也不主张用控件数组,因为它对内存的开销非常大。控件数组问题在.NET中完全有其它方法代替。如果一定要用     for   i   as   integer   to   20             dim   txt   as   new   textbox             txt.name="txt"   &   i             me.con

  • vb.net 教程 3-13 动态创建控件3

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 在vb6的时候,很方便在设计的时候创建控件数组。 例如两个按钮控件(CommandButton),当修改其中一个控件名称与另外一个控件名称一样时,vb6编辑器会提示: 按下“是”就会创建控件数组了,两个按钮区别在于Index属性不同: 在实际代码中可以看到,事件参数中多了 Inde...

  • 在VB.Net中创建使用控件数组

     首先创建一个Button类型控件数组:   1、创建“Windows应用程序”类型的工程,添加名为ButtonArray的类,并使该类继承 System.Collection.CollectionBase 类。System.Collections.CollectionBase类是.NET框架类库中为集合操作提供抽象的基类,通过对它的继承可以为我们的ButtonArray类具备集合增加、删除、

  • 在VB.NET编程中使用数组

       数组是程序中经常要使用到的一种数据类型,Visual Basic .Net中的数组,虽然语法结构等方面保留了和Visual Basic的很多相似之处,但也与Visual Basic存在着很多区别。其最大,也是各位Visual Basic程序员所最不能容忍的区别就是如下二点:  1. 在Visual Basic .Net中申明一个数组,其数组元素中的索引值的起点全部都为“0”,而不是以前V

  • vb.net动态控件数组

    vb.net里面的动态控件数组的问题,这个动态控件数组在vb里面easy到极致,可是在vb.net里面却有点让人摸不着头脑。其实也很简单,因为vb.net和vb不同拉,来看看vb.net的动态控件数组如何实现。 1、在form的头部定义一个公共的ArrayList类型的变量         Dim m_items As New ArrayList2、在程序中动态生成控件  

  • VB.net学习笔记(十九)数组、集合、泛型

    Module Module1 Sub Main() Dim a(,) As Int32 = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}} Dim temp As Int32 For i As Int32 = 0 To UBound(a) '即UBound(a,1) For j As Int32

  • 浅谈VB.net控件数组的使用

    http://www.docin.com/p-429604776.html 写的还好,

  • 在VB中创建和使用动态数组控件的方法总结

    在VB中,MSHFEXGRID不支持文本框,为了解决这个问题,一般的方法就是通过一个文本框的显示和隐藏,并获得表格单元的坐标,来实现向MSHFLEXGRID中录入数据的,具体方法我记得在本博中有,就不说了,自己搜一下 今天要说的是在MSFLEXGRID中动态添加多个控件的问题: 先看一个动态添加的例子:Option ExplicitPrivate WithEvents

  • vb.net 数组列表详解

    vb.net的数组列表 现在除了数组的长度计数是基于0开始的这个变化外,vb.net还引进了一个数组列表(ArrayList)对象来代替原来的集合(Collection)对象,集合对象的长度计数总是从1开始的,而且在需要的时候,数组列表的长度可以是不定的。数组列表的基本的方法和集合一样,只不过它还具有一些新的功能方法。 例如: Dim Arl As ArrayList ‘构建一个数组列表

  • vb.net 动态添加控件并绑定相应的事件

    vb.net由窗体直接添加的控件可以直接选择其相应的事件工程,但是由代码生成的控件并不会直接绑定相应的事件。 Public Class form3 WithEvents mybutton As TreeView Private Sub form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load mybutton = New TreeView ' mybutton.Text = "hel

  • VB.NET在窗体上添加任意动态控件

    Public Class textboxarray    Inherits System.Collections.CollectionBase    Private ReadOnly HostForm As System.Windows.Forms.Form    Public Function Addtextbox() As System.Windows.Forms.TextBox       

  • vb.net 教程 3-13 动态创建控件2

    版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 上一节讲了设计时创建控件,实际设计时候可以很方便地选择创建控件的事件代码, 本节讲一下不使用withevents,如何在运行时创建一个带有事件的控件。 主要用到 AddHandler 语句: AddHandler event, AddressOf eventhandler eve...

Global site tag (gtag.js) - Google Analytics