Beetle Web框架快速入门

简介................................................................. 1

运行环境............................................................. 1

安装配置............................................................. 1

入门示例............................................................. 2

 

 

简介

Beetle Web是一个基于J2EE标准Servlet容器技术构建的请求驱动式的MVC快速开发Web框架。它功能强大而简单易用,其学习曲线非常低,拥有Web开发经验的程序员,看看例子代码就能马上上手。对于新的java初学者,经过1小时的培训就能够投入开发。

运行环境

J2EE Sevlet2.3+(含2.3)以上Web容器(如:Tomcat4.xTomcat5.xTomcat6.xResin2.xResin3.x等等)

兼容Sun JDK1.4+(含1.4)以上的JVM(如:Sun JDK1.456IBMBea相应的JDK版本)

安装配置

1),下载Beetle Web开发包。

Beetle Web核心开发包,下载地址:

http://www.beetlesoft.net/j2ee/mvc/BeetleWeb.zip

http://www.beetlesoft.net/j2ee/core/BeetleCore.zipBeetle框架公共核心库文件)

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-2.0.4.jar

页面生成pdf视图所必须依赖

poi-3.0.1.jar

页面生成excel视图所必须依赖

hessian-3.0.13.jar

简易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建立一个名为QuickStartDynamic Web Project项目

1

步骤(二):QuickStart项目的根目录下建立一个lib目录,把框架BeetleCore.jarBeetleWeb.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框架的全局指派控制器,并把所有后缀为“*.ctrl”的请求就交给此控制器来处理。另外,BeetleWeb.zip开发包已经包含了一个配置好的web.xml现成文件,直接拷贝覆盖原来的web.xml文件即可。

 

步骤(四):环境配置好以后,现在就可以进入开发了。我们以一个用户登录的简单用例来演示一下Beetle Web框架的开发过程。登录的过程如下:

3

1),用户进入登陆页面,输入UserNamePassword,按确定后,页面本身会检查输入的合法性,如Password位数是否正确等。如果检查有误就不能提交。页面的输入检查我们一般都是使用的JavaScript,当然我们也可以放在Controller里面来完成。

2),登陆控制器获取到UserNamePassword等参数以后,就实例化一个登陆用例的业务对象,并把参数传给此业务对象。

3),业务对象调用其执行方法,来处理用户的登陆请求。如果UserNamePassword都正确的话,业务对象就返回用户的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"> &nbsp;&nbsp;:

   <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包含userNamepassword两个输入参数字段,处理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

* 注:config目录是Beetle Web框架所必须的目录。它必须建立在Web应用的根目录下,从来存放此Web应用所必须的配置文件。一般地,Beetle Web应用依赖两个配置文件。一是控制器配置文件WebController.xml;而是页面视图配置文件WebView.xml。两个配置文件的格式都分别定义在WebController.dtdWebView.dtd中。

Beetle Web框架中,控制器采取唯一性命名原则,也就是说,在整个Web应用中控制器的命名是唯一的,与控制器路径无关。这样的好处是,无需在配置文件中指定控制器的url路径,只提供一个名称就够了。

·最后,编写mainViewloginErrView视图。

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%">&nbsp;<%=user.getName()%></td>

  </tr>

  <tr>

    <td>性别:</td>

    <td>&nbsp;<%=user.getSex() %></td>

  </tr>

  <tr>

    <td>年龄:</td>

    <td>&nbsp;<%=user.getYear() %></td>

  </tr>

  <tr>

    <td>电话:</td>

    <td>&nbsp;<%=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>

 

 注:WebView.xml文件也是框架所必要的,也必须放在config的目录下。此视图配置文件主要是指定控制器返回视图名称与其所对应的物理视图文件所在服务路径。

到此,整个登录用例开发完成。

 

步骤(五):编译执行。下面截取其运行的页面的图片以供读者参考。

5

6

7

8

下载QuickStart例子