1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Java Web快速开发框架 ---- JSPX

Java Web快速开发框架 ---- JSPX

时间:2023-12-17 05:15:56

相关推荐

Java Web快速开发框架 ---- JSPX

现在的Java Web应用程序框架都需要进行大量的配置、投入大量的时间精力后才能投入生产,而且给人比较繁琐的感觉,如Struts、Tapestry等。今天在Sourceforge上寻到一开源框架--JSPX,在它的官方网站上将JSPX描述为:“

JSPX is a pure java opensource free web RAD framework that easier and faster than most of the existing frameworks (JSP-Servlets-Struts-JSF-Clay), with a lot of features that improve productivity. You just need to know HTML and JAVA to master JSPX. ”

从上面最后一句可以看出,使用JSPX只需要知道HTML和Java POJOs即可。

我测试了下,写个最简单的登录页面,使用JSPX只需要5分钟时间,呵呵,很短吧,让我们来看下是如何的简洁与快速。

1.在Eclipse中创建Dynamic Web Project.

2.修改web.xml,加入以下Servlet.

<servlet><display-name>JspxHandler</display-name><servlet-name>JspxHandler</servlet-name><servlet-class>.web.jspx.engine.RequestHandler</servlet-class></servlet><servlet><display-name>ResourceHandler</display-name><servlet-name>ResourceHandler</servlet-name><servlet-class>.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></servlet>

3. 创建HTML页面

以.jspx方式创建Login.jspx页面,代码如下:

<page xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="http://jspx-/jspx.xsd"controller="com.demo.reg.web.controller.LoginPage"><html><head><title>Login System</title></head><body><center><h1>Welcome to the System</h1><h3>Please login in</h3><form method="post" enctype="multipart/form-data"><table><tr><td>Username:</td><td><input type="text" id="username" value="" style="font-size: 11px" mce_style="font-size: 11px" /> <validator type="required" control_to_validate="username" group="loginGroup"message="Username cannot be EMPTY" indicator="*"indicator_style="color:red; font-style:italic;" /></td></tr><tr><td>Password:</td><td><input type="password" id="password" value="" style="font-size: 11px" mce_style="font-size: 11px" /><validator type="required" control_to_validate="password" group="loginGroup"message="Password cannot be EMPTY" indicator="*"indicator_style="color:red; font-style:italic;" /></td></tr><tr><td colspan="2" align="center"><input type="button" onserverclick="loginClick" value="LOGIN" id="loginButton" group="loginGroup" /></td></tr><tr><td colspan="2"><label id="loginResult" /></td></tr></table></form></center></body></html></page>

4.创建Java Class

创建的Java Class必须与页面上page标签中controller属性指定的值一致,故此处需要在com.demo.reg.web.controller包中创建名为LoginPage的Class.

package com.demo.reg.web.controller;import .web.jspx.ui.controls.WebControl;import .web.jspx.ui.controls.html.elements.Label;import .web.jspx.ui.controls.html.elements.inputs.Button;import .web.jspx.ui.controls.html.elements.inputs.TextBox;import .web.jspx.ui.pages.Page;/**** The logic of Login.jspx* @author YU Zhipeng* @version 1.0**/public class LoginPage extends Page {private TextBox username = new TextBox();private TextBox password = new TextBox();private Button loginButton = new Button();private Label loginResult = new Label();public TextBox getUsername() {return username;}public void setUsername(TextBox username) {this.username = username;}public TextBox getPassword() {return password;}public Label getLoginResult() {return loginResult;}public void setLoginResult(Label loginResult) {this.loginResult = loginResult;}public void setPassword(TextBox password) {this.password = password;}public Button getLoginButton() {return loginButton;}public void setLoginButton(Button loginButton) {this.loginButton = loginButton;}public void loginClick(WebControl sender, String args){if (username.getValue().equals(password.getValue())){request.getSession().setAttribute("user", username.getValue());this.dispatch("index.jspx");}}}

OK,至此开发已经全部完成,你可以启动服务器来运行了。下图为运行的实际效果:

大家看到了,页面上还加入了Validation验证,想像一样如果要在Struts中做到这样效果,没有半小时是不可能的。在整修JSPX中没有什么的配置文件,JSPX也不需要任何配置文件,所以可以将JSPX描述为"Zero Configurations Framework".

JSPX中的HTML与普通的HTML到底有什么不同呢?其它大家可以看到,除了根元素<page>外,其它还都是标准的HTML标签,这可以说是JSPX的特征之一,将一个已经设计好的HTML页面包装成JSPX页面仅仅可以只使用<page>标签。但同时,如果遇到比较复杂的逻辑,像显示查询数据等,可以使用JSPX自带的标签,如DataTable, ListTable等来操作,会非常简单。

控制器Controller其实是一个简单的POJO类,在这个类中你可以定义其它的Web组件,然后在JSPX页面上添加相应的标签,令其id与Controller中的变量名一致即可。

上次通过一个简单的例子介绍了JSPX Web框架的基本使用,这次让我们来看看JSPX Web框架提供的特殊标签--DataTable.

JSPX提供DataTable是一个集查询、分页、显示等为一身的标签,使用起来非常简单,但也有它不足的地方,好了,废话少话,先来看代码:

<datatable id="datatable" datasource="java:comp/env/jdbc/DemoDS" table ="Users" sql="select * from Users where userid>MYID order by userid asc" showrowindex="true"style="border-style: solid;border-width: 1px;border-color: black;"headerstyle="color: #FFFFFF;font-family: tahoma,arial;font-size: 12px;font-weight: bold;background-color: gray;"rowstyle="background-color:#C9F1C9" selectedrowstyle="background-color:#59eeee" ><dataparam name="MYID" control="userId" expression="userid>MYID"></dataparam><datapk name="userid" sequence="myseq" /><datacolumn text="User Id" fieldname="USERID" type="number" /><datacolumntext="Username" fieldname="USERNAME" type="string" required="true"/><datacolumntext="Email" fieldname="EMAIL" type="string" required="true"/><datacolumnCommand text="select" type="select" action="rowSelected"/><datacolumnCommand text="check All " type="check" /><datacolumnCommand text="modify" type="edit"/><datacolumnCommand text="remove" confirm="Are you sure you want to remove this user?" type="delete"/><footer newCommandText="Add New Item" message="total search results {0}, page{1}/{2}" /></datatable>

其中datasource表示数据源,需要在相应的应用服务器配置,以下是在Tomcat 6.0中配置Datasource的代码:

<Resource driverClassName="com.mysql.jdbc.Driver" maxActive="4" maxIdle="2" maxWait="5000" name="jdbc/DemoDS" password="root" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/demo?autoReconnect=true" username="root"/>

table属性:是你需要查询的数据库表名;

sql属性:查询的SQL语句;

showrowindex属性:表示需要显示序号;

<dataparam>元素用来定义传入sql语句的参数,name属性用于指定传入SQL的变量名称,此处为MYID,而control指定变量从哪个属性取值,此例中为userId,表明是从userId中取得值,并赋值给MYID,expression为定义的表达式.

<datapk>元素定义主键,name为要作为主键的属性,sequence为Oralce中table所对应的sequence的名称。

<datacolumn>元素用于定义显示的数据列,其中text属性表示显示的列名称,fieldname表示从哪个属性中取值,type表示该列的数据类型,required表示该列是必须的。

<datacolumnCommand>元素表示定义列操作,JSPX默认提供了几个列操作,如select表示选择该条记录,并会返回该条记录的PK;check类型会显示为checkbox,并可对所有记录进行选择;edit类型表示对记录进行修改,JSPX对自动提供对记录的更新操作;remove类型表示删除记录;

<footer>用于指定页脚内容。

我在测试时使用的是MySQL数据库,在运行此页面时有Exception抛出,通过查看源代码以及与JSPX的作者联系,确认目前JSPX只支持Oracle数据库,因此,如果你使用的是Oracle的话,JSPX将不会有任何的错误,除此之外,你需要修改JSPX的DAO类的源代码并编译打包后使用。

关于这个Bug,JSPX的作者Amr告知将在JSPX的下一版本1.0.3中修复,大家期待吧,呵呵,不过此外还有一个关于生成PK的Bug不知会不会解决:)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。