阅读更多

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 条 请登录后发表评论
43 楼 chitu11 2010-09-13 21:17
minma_yuyang 写道
弄个炉体的例子,希望可以深入了解一下

有用
42 楼 liu222 2009-12-29 09:17
ivorytower 写道
我正在使用JSPX,但不知道是不是你说的这个。。标签有点不一样。比如:要画一个表格,我们只需<j:table binding="" row=""><j:column><j:column></j:table>.


不是。jspx它的表格是这个标签: datatable。支持分页、导出excel,自定义展现格式。主要的属性有sql/table/style/。
41 楼 liu222 2009-12-29 09:15
jspx 确实是一个不错的框架。开发上类似MS的aspx。
不过,这个框架应该说只有VC两层(简化了VC、VV之间的信息传递,跳转),缺少了modle层。
http://fanyq.blog.hexun.com/39465105_d.html
40 楼 ivorytower 2009-12-03 14:18
我正在使用JSPX,但不知道是不是你说的这个。。标签有点不一样。比如:要画一个表格,我们只需<j:table binding="" row=""><j:column><j:column></j:table>.
39 楼 wxw404 2009-04-14 15:20
好个 jsp.net
改天研究下,做个小项目试试
38 楼 amr.eladawy 2009-01-20 17:55

您好,
虽然我不说中文,但我还是打算把它翻译成英文使用谷歌。

我很高兴为您的反馈。和我愿意回答任何相关的问题通过电子邮件发布。

为seasar ,请写信给我的问题,你到底中所面临的演示。我们将一起去获得它的工作。

我们已经用在超过5个项目。其中一人获得百万达到每天有超过30000活跃用户。


别人谁是突出相似之处与ASP.NET , JSPX结合的优势,不止一个框架( ASP.NET中, JSF的, Struts的,粘土)和增加他们(多中继的HTML标记) 。更快的内存足迹。并可控。


再次我和我的团队,很高兴为您建设性的反馈。

关心
穆萨
________________________________________________
Hi there,
Although I dont speak Chines, but I managed to translate it into English using google.

I am very pleased for your feedback. and I am ready to answer any related question through the publish email.

for seasar, please write to me exactly the problems you faced in the demo. and we will go together to get it working.

we already used in in more than 5 projects. one of them receives Million hit per day with more than 30,000 active users.


for others who are highlighting the similarities with ASP.NET, JSPX combines the advantages of more than one framework (ASP.NET, JSF, Struts, Clay) and adding more to them (more relaying on HTML tags). Faster and less memory foot print. and also controllable.


Once Again My Team and I, are happy for your constructive feedback.

regards
amr
37 楼 steeven 2009-01-12 18:53
你们这样诋毁埃及程序,法老会发怒的,后果很严重的
36 楼 aeolus 2009-01-09 09:38
可以看到埃及的java水平。呵呵
35 楼 可爱多 2009-01-09 08:46

引用
zznj1123
jsp.net

34 楼 minma_yuyang 2009-01-08 16:57
弄个炉体的例子,希望可以深入了解一下
33 楼 gefyuan 2009-01-08 15:24
hapybird 写道

最优美的框架还是ror

32 楼 hapybird 2009-01-08 10:53
最优美的框架还是ror
31 楼 hax 2009-01-08 03:09
一句话:不make sense。
30 楼 terryang 2009-01-07 22:27
zznj1123 写道

jsp.net

29 楼 seasar 2009-01-07 22:14
昨天在TSS上看到e文版的,感觉蛮好的,接着去下载demo和src下来看了,结果很是失望。demo是要部署在jboss上的。src的实现也非常的糟糕,里面对exception全部是catch到后就不管了,作者说的已经有5个成熟的应用,真的是很疑惑
28 楼 KimHo 2009-01-07 18:18
有点意思

27 楼 kane82 2009-01-07 17:00
观望。。。。
26 楼 brunoplum 2009-01-07 15:18
失望ing...
下载来的demo真不像话,web.xml里居然连<welcome-file-list>都没配置,真不知道这个demo放出前开发者自己测试了没,而且还少了commons-io.jar,直接运行会报错,哎!
25 楼 magicstar 2009-01-07 14:56
从这个Demo上看和Wicket的思路非常相似,说不好听点可以说是抄袭了,有人能比较出和Wicket的优缺点吗?
24 楼 zznj1123 2009-01-07 13:52
jsp.net

发表评论

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

相关推荐

  • 在c#/VB.NET中使用控件数组

    由于在容器中的每一个控件只要不作特殊处理,都会自动构成了控件集合,这样,只要对原有的事件例程作少量修改,就可以非常方便的实现用一个事件例程响应某个集合中所有控件产生的事件。在Form中构成控件数组非常方便,但也有一个小问题:一般来说,Form中的控件往往有很多种,系统建立控件集合的时候将会把其中的所有控件放在同一个集合中,这样一来,程序员在写代码的时候有可能将每一个控件的下标混淆,为了解决这个问题,可以用Panel容器来根据需要将某类控件建立成控件数组,也就避免了上述问题。

  • VB.NET控件数组示例2则 (转载)

    Public Class Form1 Dim But(9) As Button '不要使用WithEvents和New进行声明 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '##############

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

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

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

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

  • 【搬运】VB.NET控件数组示例2则

    代码 PublicClass Form1 Dim But(9) As Button '不要使用WithEvents和New进行声明 PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load '#########...

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

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

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

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

  • 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 控件数组相关

     本例以文本框为类加以说明  调用方法    Private Sub form_txtArray()        Dim iLoop As Integer        For iLoop = 0 To 5            Dim txtBox As New Windows.Forms.TextBox            txtBox.Location =

  • VB 控件数组的动态建立 随时添加控件

    控件数组的动态建立 设计窗体时建立控件组的第一个元素,并将其INDEX值赋为0 程序运行中使用LOAD方法,定义新的控件组元素,语法: LOAD 对象名(INDEX)值 使用UNLOAD方法可去除控件组中的元素。 INDEX值为数值型,可使用变量控制 对象名须与设计窗体时建立的第0个元素名相同 新对象的属性值为默认值。   实例:

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

    控件:几个文本框textbox 事件:TextBoxes_textchanged 代码: PrivateSubTextBoxes_TextChanged(ByValsenderAsSystem.Object,_ ByValeAsSystem.EventArgs)HandlesTextBox1.TextChanged,_ TextBox2.TextChanged,Text...

  • VB.Net程序设计:动态添加按钮或者控件

    由于程序需要,在一个窗体中,读取数据库的记录内容,然后在界面中添加相应的按钮,供用户点击,响应对应的事件。 谷歌一下很多,看到: http://developer.51cto.com/art/200910/155672.htm http://www.dotblogs.com.tw/yc421206/archive/2009/06/01/8636.aspx http://wenku.ba

  • vb.net入门——分组控件

    vb.net入门——分组控件:Panel控件的使用  2008-1-21 20:06:00查看学习心得   我们对控件进行分组的原因不外乎三个:  1、为了获得清晰的用户界面而将相关的窗体元素进行可视化分组。  2、编程分组,如对单选按钮进行分组。  3、为了在设计时将多个控件作为一个单元来移动。  在vb.net中,有GroupBox、Panel、TabControl这三个控件可以实现上面所提到

Global site tag (gtag.js) - Google Analytics