Beetle Web框架快速入门
简介................................................................. 1
运行环境............................................................. 1
安装配置............................................................. 1
入门示例............................................................. 2
Beetle Web是一个基于J2EE标准Servlet容器技术构建的请求驱动式的MVC快速开发Web框架。它功能强大而简单易用,其学习曲线非常低,拥有Web开发经验的程序员,看看例子代码就能马上上手。对于新的java初学者,经过1小时的培训就能够投入开发。
J2EE Sevlet2.3+(含2.3)以上Web容器(如:Tomcat4.x,Tomcat5.x,Tomcat6.x;Resin2.x,Resin3.x等等)
兼容Sun JDK1.4+(含1.4)以上的JVM(如:Sun JDK1.4、5、6;IBM及Bea相应的JDK版本)
(1),下载Beetle Web开发包。
Beetle Web核心开发包,下载地址:
http://www.beetlesoft.net/j2ee/mvc/BeetleWeb.zip
http://www.beetlesoft.net/j2ee/core/BeetleCore.zip(Beetle框架公共核心库文件)
Beetle Web核心开发包依赖的第3方库文件,下载地址:
http://www.beetlesoft.net/j2ee/download/sharelib.zip
Beetle Web框架示例,下载地址:
http://www.beetlesoft.net/j2ee/download/WebDemo_src.rar
http://www.beetlesoft.net/j2ee/download/WebDemo.rar
(2),解压开发包,并根据标准的Web Servlet应用安装相关的类库和web.xml文件。
|
库名/配置 |
说明 |
|
|
BeetleCore.jar |
Beetle框架公共核心库文件(必须) |
|
|
BeetleWeb.jar |
Beetle Web框架库文件(必须) |
|
|
config |
目录 |
config配置目录,位于Web应用的根目录下(必须) |
|
|
WebController.xml |
控制器配置文件(必须) |
|
|
WebView.xml |
jsp视图配置文件(必须) |
|
|
jsonrpcEx.js |
ajax开发客户端javascript库文件 |
|
|
web.xml |
J2EE标准Web应用配置文件 |
|
log4j.jar |
日志记录库(必须) |
|
|
dom4j.jar |
框架xml解析库文件(必须) |
|
|
oscache-2.2.jar |
缓存框架包,页面请求动态缓存所必须依赖 |
|
|
jfreechart.jar |
页面动态绘图所必须依赖 |
|
|
itext- |
页面生成pdf视图所必须依赖 |
|
|
poi- |
页面生成excel视图所必须依赖 |
|
|
hessian- |
简易Web Service开发所必须依赖 |
|
|
commons-fileupload-1.0.jar |
页面文件上传 |
|
|
jsonrpc-1.0.jar |
ajax开发所必须依赖 |
|
(3),把可执行的示例WebDemo.war包部署到Tomcat,体验一下效果。
http://127.0.0.1:8080/webdemo/
下面通过一个简单用户登录例子,以便大家快速入门。以Eclipse为开发环境。
步骤(一):建立一个Web项目
打开Eclipse建立一个名为QuickStart的Dynamic Web Project项目

图1
步骤(二):在QuickStart项目的根目录下建立一个lib目录,把框架BeetleCore.jar、BeetleWeb.jar及其相关的第3方库文件拷贝到此目录,并添加到项目的classpath中。

图2
步骤(三):配置web.xml文件。修改WEB-INF目录下web.xml文件,内容如下:
|
<?xml version="1.0"
encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app > <display-name>QuickStart</display-name> <servlet> <servlet-name>GlobalDispatchServlet</servlet-name> <servlet-class>com.beetle.framework.web.GlobalDispatchServlet</servlet-class> <load-on-startup>6</load-on-startup> </servlet> <servlet-mapping> <servlet-name>GlobalDispatchServlet</servlet-name> <url-pattern>*.ctrl</url-pattern> </servlet-mapping> </web-app> |
|
|
步骤(四):环境配置好以后,现在就可以进入开发了。我们以一个用户登录的简单用例来演示一下Beetle Web框架的开发过程。登录的过程如下:

图3
(1),用户进入登陆页面,输入UserName和Password,按确定后,页面本身会检查输入的合法性,如Password位数是否正确等。如果检查有误就不能提交。页面的输入检查我们一般都是使用的JavaScript,当然我们也可以放在Controller里面来完成。
(2),登陆控制器获取到UserName和Password等参数以后,就实例化一个登陆用例的业务对象,并把参数传给此业务对象。
(3),业务对象调用其执行方法,来处理用户的登陆请求。如果UserName和Password都正确的话,业务对象就返回用户的UserInfo数据;否则,就返回ErrInfo数据。
(4),登陆控制器根据业务对象执行的结果,如果成功的话,就把UserInfo数据传递给系统主页面显示给用户;否则,控制器就把ErrInfo传递给失败页面,由失败页面把结果信息呈现出来。
清楚登录需求以后,开发过程如下:
·首先,在WebContent目录下建立一个登陆静态页面login.html。
|
<html> <head> <title> login.html </title> <!-- 利用javascript脚步验证用户输入 --> <script
language="JavaScript" type="text/JavaScript"> <!-- function checkForm(){ if(loginForm.userName.value==""){ alert("用户名不能为空!"); loginForm.userName.focus(); return false; } if(loginForm.password.value==""){ alert("密码不能为空!"); loginForm.password.focus(); return false; } return true; } //--> </script> </head> <body bgcolor="#ffffff"> <h1 align="center"> Web框架示例</h1> <table width="75%" border="0" align="center"> <tr><td> <form action="Login.ctrl" method="post" name="loginForm"> <p align="center"><br> 用户名: <input name="userName" type="text" id="userName" size="8" maxlength="8"> </p> <p align="center"> 密 码: <input name="password" type="password" id="password" size="8" maxlength="8"> <br> <input name="Submit" type="submit" onClick="return checkForm()" value="提交"> </p> </form> </td></tr> </table> </body> </html> |
可见,loginForm包含userName和password两个输入参数字段,处理loginForm表单的控制器名称是Login.ctrl。
·其次,编写登录用例的业务LoginBs类。
|
package web.demo; public class LoginBs { private User user; private String userName; private String password; private int returnFlag; private String returnMsg; public int getReturnFlag() { return returnFlag; } public String getReturnMsg() { return returnMsg; } public User getUser() { return user; } public LoginBs(String userName, String password) { this.userName = userName; this.password = password; } public void login() { // 假设系统用户名为Henry和密码为888888 //
验证成功返回此用户的相关信息,为了方便我们只是随便创建一个用户,一般应该从数据库返回 if
(userName.equals("Henry") &&
password.equals("888888")) { User
user = new User(); user.setUserId(new Integer(10001)); user.setName(userName); user.setPhone("13501583576"); user.setSex("Male"); user.setYear(100); this.user = user; this.returnFlag = 0; this.returnMsg = " OK!"; } else { this.returnFlag = -1; this.returnMsg = " Failed!check your username or password."; } } } |
·然后,编写页面login.html登陆控制器Login.ctrl。
登录控制器LoginController,扩展自com.beetle.framework.web.controller. ControllerImp抽象类,在perform方法里面实现登陆页面的控制逻辑。
|
package web.demo; import javax.servlet.ServletException; import com.beetle.framework.web.controller.ControllerImp; import com.beetle.framework.web.controller.WebInput; import com.beetle.framework.web.view.*; public class LoginController extends ControllerImp {// 扩展自ControllerImp public LoginController() { this.setRequireSessionCheck(false);//登陆控制器无需作Session检查 }
//在perform方法中实现页面控制逻辑 public
View perform(WebInput webInput) throws ServletException { View
View = null; //获取login.html页面输入参数 String userName =
webInput.getParameter("userName"); String password =
webInput.getParameter("password"); //调用登陆业务类来完成登陆业务逻辑 LoginBs lbs = new
LoginBs(userName,password); //执行登录 lbs.login(); if (lbs.getReturnFlag() ==
0) { ModelData vd = new ModelData(); vd.put("user", lbs.getUser());//把登陆用户的信息给视图
vd.put("returnMsg", lbs.getReturnMsg());//成功的信息 //返回登陆成功的View,并指定mainView视图显示 View = new
View("mainView", vd); } else { ModelData vd = new ModelData(); vd.put("returnMsg", lbs.getReturnMsg());//失败的信息
//返回登陆失败的View,利用loginErrView视图显示 View = new
View("loginErrView", vd); } return View; } } |
编写好控制器后,我们还需要在Web应用根目录下/config/WebController.xml配置文件中装配它(建立url和实现类的映射关系)。
|
<?xml
version="1.0" encoding="UTF-8"?> <mappings> <controllers> <standard> <sItem name="Login.ctrl" class="web.demo.LoginController"/> </standard> </controllers> </mappings> |
参考下面是示意图:

图4
|
在Beetle Web框架中,控制器采取唯一性命名原则,也就是说,在整个Web应用中控制器的命名是唯一的,与控制器路径无关。这样的好处是,无需在配置文件中指定控制器的url路径,只提供一个名称就够了。 |
·最后,编写mainView和loginErrView视图。
mianView视图我们利用main.jsp文件来显示,main.jsp主要负责获取登录成功(完成登录的业务逻辑)返回的View数据并显示出来,代码如下:
|
<%@ page contentType="text/html;
charset=GBK" %> <%@ page session="false" %> <%@ page import="com.beetle.framework.web.view.*"%> <%@ page import="web.demo.User"%> <html> <head> <title>Main Document</title> </head> <body>
<% ViewHelper helper=new ViewHelper
(request);//利用ViewHelper助手类获取模型数据 User
user=(User)helper.getDataValue("user");//获取模型中返回给视图的用户对象 String reMsg=helper.
getDataValueAsString ("returnMsg");//获取模型中返回的信息 %> <table width="28%" border="0" align="center"> <tr> <td colspan="2"><div align="center"><strong><%=reMsg%></strong>用户相关信息如下</div></td> </tr> <tr> <td width="16%">姓名:</td> <td width="84%"> <%=user.getName()%></td> </tr> <tr> <td>性别:</td> <td> <%=user.getSex() %></td> </tr> <tr> <td>年龄:</td> <td> <%=user.getYear() %></td> </tr> <tr> <td>电话:</td> <td> <%=user.getPhone() %></td> </tr> <tr> <td colspan="2"><div align="center"><a href="login.html">退出</a></div></td> </tr> </table> </body> </html> |
loginErrView视图利用loginErr.jsp文件来显示,它主要获取登陆失败返回模型中的失败信息,并在页面显示出来。代码如下:
|
<%@ page contentType="text/html;
charset=GBK" %> <%@ page session="false" %> <%@ page import="com.beetle.framework.web.ViewHelper"%> <html> <head> <title>err Document</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body>
<% ViewHelper helper=new
ViewHelper(request); String reMsg=helper. getDataValueAsString("returnMsg"); %> <table width="26%" border="0" align="center"> <tr> <td height="88"><p align="center"><strong><%=reMsg%></strong></p> <p align="center">请<a href="login.html">重新登陆</a></p> </td> </tr> </table> </body> </html> |
编写完视图后,同样我们需要在文件/config/WebView.xml中装配它们。
|
<?xml
version="1.0" encoding="UTF-8"?> <mappings> <views> <DisabledSessionView>mainView</DisabledSessionView> <standard> <sItem name="mainView" url="main.jsp"/>
<sItem name="loginErrView" url="loginErr.jsp"/>
</standard> </views> </mappings> |
|
|
到此,整个登录用例开发完成。
步骤(五):编译执行。下面截取其运行的页面的图片以供读者参考。

图5

图6

图7

图8