Beehive PageFlow Tutorial

Beehive Page Flow Tutorial

1.         开发环境的搭建[LP1] 

1)       下载并安装BeehiveJ2SE5ANT 1.6.2 Tomcat5

2)        修改BEEHIVE_HOME下的beehiveUser.cmd,然后运行它以设定一些classpath

3)        tomcat中增加一个管理员角色(可选)

CATALINA_HOME/conf/tomcat-users.xml

<?xml version='1.0' encoding='utf-8'?>
     
     
<tomcat-users>
     
     
  <role rolename="tomcat"/>
     
     
  <role rolename="role1"/>
     
     
  <role rolename="manager"/>
    
    
  <user username="tomcat" password="tomcat" roles="tomcat"/>
     
     
  <user username="role1" password="tomcat" roles="role1"/>
     
     
  <user username="both" password="tomcat" roles="tomcat,role1"/>
     
     
  <user username="manager" password="manager" roles="manager"/>
    
    
</tomcat-users>
     
     

4)        启动tomcat(可选)

%CATALINA_HOME%/bin/startup.bat

ant -f %BEEHIVE_HOME%/ant/buildWebapp.xml start

2.         简单应用开发过程

1)       首先保证如下的目录结构,可以从/samples/netui-blank复制过来。

<Project-Folder>

    resources

    WEB-INF

    Controller.jpf

error.jsp

index.jsp

2)        Runtime JARs复制到相应文件夹,使用ant命令来完成。

ant -f %BEEHIVE_HOME%/ant/buildWebapp.xml -Dwebapp.dir=<project-Folder> deploy.beehive.webapp.runtime

注意:文件夹及文件的名字不能出现除字母数字下划线之外的符号,如” - ”

3)        创建JSP文件和JPF文件。

4)        编译和配置page flow,保证此时tomcat已经启动。webApp-Blankwebapp名字,而<project-Folder>webapp的完整路径。

ant -f %BEEHIVE_HOME%/ant/buildWebapp.xml -Dwebapp.dir=<project-Folder> -Dcontext.path=webApp-Blank build.webapp deploy

注意:如果抛出context path already exists错误,要使用ant命令先undeploy application。然后再使用上面的命令重新编译和配置。

ant -f %BEEHIVE_HOME%/ant/buildWebapp.xml -Dwebapp.dir=<project-Folder> -Dcontext.path=webApp-Blank undeploy

5)        JPF修改后需要重新编译和配置

ant -f %BEEHIVE_HOME%/ant/buildWebapp.xml -Dwebapp.dir=<project-Folder> -Dcontext.path=webApp-Blank undeploy build.webapp deploy

3.         数据提交

1)        JSP文件,添加:

<p>
     
     
      <netui:form action="processData">
     
     
        <p>Name:<netui:textBox dataSource="actionForm.name"/>
     
     
        <p>Age:<netui:textBox dataSource="actionForm.age"/>
     
     
        <p><netui:button type="submit">Submit</netui:button>
     
     
      </netui:form>
     
     
</p>      
     
     

2)        代表提交表单的JAVA

创建代表提交表单的java类。当数据提交时,该类被实例化,表单数据被装载到该类的成员中。

可以把它放在/WEB-INF/src/forms下面。

package forms;
     
     

    
    
     
      
    
    
public class ProfileForm
     
     
{
     
     
    private int age;
     
     
    private String name;
     
     

    
    
     
      
    
    
    public void setName(String name)
     
     
    {
     
     
        this.name = name;
     
     
    }
     
     

    
    
     
      
    
    
    public String getName()
     
     
    {
     
     
        return this.name;
     
     
    }
     
     

    
    
     
      
    
    
    public void setAge(int age)
     
     
    {
     
     
        this.age = age;
     
     
    }
     
     

    
    
     
      
    
    
    public int getAge()
     
     
    {
     
     
        return this.age;
     
     
    }
     
     
}
     
     

3)        JPF文件,修改如下:

import org.apache.beehive.netui.pageflow.Forward;
     
     
import org.apache.beehive.netui.pageflow.PageFlowController;
     
     
import org.apache.beehive.netui.pageflow.annotations.Jpf;
     
     
import forms.ProfileForm;
    
    
 
     
     
@Jpf.Controller
     
     
public class Controller extends PageFlowController
     
     
{
     
     
    @Jpf.Action(
     
     
        forwards={
     
     
           @Jpf.Forward(name="success", path="index.jsp")
     
     
        }
     
     
    )
     
     
    public Forward begin()
     
     
    {
     
     
        return new Forward("success");
     
     
    }
     
     

    
    
     
      
    
    
    @Jpf.Action(
     
     
        forwards={
     
     
           @Jpf.Forward(name="success", path="page2.jsp")
     
     
        }
     
     
    )
     
     
    public Forward toPage2()
     
     
    {
     
     
        return new Forward("success");
     
     
    }
     
     

    
    
     
      
    
    
    @Jpf.Action(
       
       
        forwards = { 
     
     
            @Jpf.Forward(name = "success", path = "page2.jsp")
     
     
        }
     
     
    )
     
     
    public Forward processData(ProfileForm form)
     
     
    {
     
     
        System.out.println("Name: " + form.getName());
     
     
        System.out.println("Age: " + form.getAge());
     
     
        return new Forward("success");
     
     
    }
    
    
}
     
     

4.         数据显示

1)        JSP文件

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
     
     
<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
     
     
<netui:html>
     
     
  <head>
     
     
    <title>displayData.jsp</title>
     
     
    <netui:base/>
     
     
  </head>
     
     
  <netui:body>
     
     
      <p>Name:<netui:span value="${requestScope.data.name}"/>
     
     
      <p>Age:<netui:span value="${requestScope.data.age}"/>
     
     
  </netui:body>
     
     
</netui:html>
     
     

2)        JPF文件

    @Jpf.Action(

        forwards = {

            @Jpf.Forward(name = "success", path = "displayData.jsp")

        }

    )

    public Forward processData(ProfileForm form)

    {

        System.out.println("Name: " + form.getName());

        System.out.println("Age: " + form.getAge());   

        getRequest().setAttribute("data", form);

        return new Forward("success");

    }

5.        数据库控制

1)        插入

    @SQL(statement="INSERT INTO EMPLOYEE " +

                   "(id, fName, lName, title) " +

                   "VALUES ({emp.id}, {emp.fName}, {emp.lName}, {emp.title})")

public void insertEmployee(Employee emp) throws SQLException;

注意:变量名大小写敏感

2)       查询。注意如果返回为整型,一定要返回Integer,而不是int

l         返回一个值。titleVARCHAR类型决定了方法返回为String

    @SQL(statement="SELECT title FROM EMPLOYEE WHERE id={id}")
     
     
    public String getEmployeeTitle(int id) throws SQLException;
     
     

l         返回一条记录。返回类型可以是用户自定义的对象(如下面的Employee),或者java.util.HashMap对象。如果是前者,用户自定义的对象的成员中必须包含该表的所有column,并且保证二者的变量名一一对应。

    @SQL(statement="SELECT * FROM EMPLOYEE WHERE id={id}")

    public Employee findEmployee(int id) throws SQLException;

 

    public class Employee

    {

        public int id;

        public String fName;

        public String lName;

        public String title;

}

l         返回多条记录。返回类型可以是一个数组,或者java.util.Iterator,或者java.sql.ResultSet。如果是Iterator,必须定义iteratorElementTypemaxRows定义了最多返回的记录数。

@SQL(statement="SELECT * FROM EMPLOYEE ORDER BY lName", iteratorElementType=Employee.class, maxRows=500)

public Iterator getEmployeesSortedByLastName() throws SQLException;

3)       数据控制定义了两个annotationSQLConnectionDataSource

l         SQL annotation定义了查询语句和相关属性。如果返回多条记录,需要定义iteratorElementType

    public @interface SQL
     
     
    {
     
     
        String statement()              default "";
     
     
        int maxRows()                   default MAXROWS_ALL;
     
     
        @AnnotationMemberTypes.Optional
     
     
        Class iteratorElementType()     default UndefinedIteratorType.class;
     
     
    }
     
     

l         ConnectionDataSource annotation定义了数据控制要获取连接的数据源。

    public @interface ConnectionDataSource

    {

          String jndiName();   // no default ... value is required

}

4)       数据控制相关源码位于/samples/controls-db,可以使用ant脚本ant -f %BEEHIVE_HOME%/samples/controls-db/build.xml build创建dbControljar文件(/samples/controls-db/build/)。然后通过把该jar文件放入classpath来创建自己的数据控制扩展。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目:使用AngularJs编写的简单 益智游戏(附源代码)  这是一个简单的 javascript 项目。这是一个拼图游戏,也包含一个填字游戏。这个游戏玩起来很棒。有两个不同的版本可以玩这个游戏。你也可以玩填字游戏。 关于游戏 这款游戏的玩法很简单。如上所述,它包含拼图和填字游戏。您可以通过移动图像来玩滑动拼图。您还可以选择要在滑动面板中拥有的列数和网格数。 另一个是填字游戏。在这里你只需要找到浏览器左侧提到的那些单词。 要运行此游戏,您需要在系统上安装浏览器。下载并在代码编辑器中打开此项目。然后有一个 index.html 文件可供您修改。在命令提示符中运行该文件,或者您可以直接运行索引文件。使用 Google Chrome 或 FireFox 可获得更好的用户体验。此外,这是一款多人游戏,双方玩家都是人类。 这个游戏包含很多 JavaScript 验证。这个游戏很有趣,如果你能用一点 CSS 修改它,那就更好了。 总的来说,这个项目使用了很多 javascript 和 javascript 库。如果你可以添加一些具有不同颜色选项的级别,那么你一定可以利用其库来提高你的 javascript 技能。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值