在一个标准的BJAF框架Web应用中,一共涉及到3个配置文件,分别是:
web.xml
、
WebController.xml
和
WebView.xml
。其中,web.xml是Servlet标准规范所必须的,不能省略;WebController.xml是控制器的配置文件,主要作用是在页面请求的URL与具体此请求的消费控制器类之间建立一个映射关系,为了省去这个配置文件,我们可以采取一种统一的编程约定来代替。我们BJAF框架采取的约定是:“
控制器名称=
$
+
实现类名称(含包路径)
+
后缀
”;“
视图名称=
视图所在物理路径
+
视图文件名称
”。
例如:WebDemo示例项目(参考框架开发包例子)中,
login.html
登录页面的控制器定义是:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title></title>
<link href="t-1.css" rel="stylesheet" type="text/css">
</head>
<body>
<form name="form1" method="post" action="LoginController.ctrl">[1]
<table width="34%" border="0" align="center">
<tr>
<td><div align="right">用户名:</div></td>
<td><input name="username" type="text" id="username" value="HenryYu"></td>
</tr>
<tr>
<td><div align="right">密 码:</div></td>
<td><input name="password" type="text" id="password" value="888888"></td>
</tr>
<tr>
<td colspan="2"><div align="center">
<INPUT TYPE="hidden" NAME="veiwFlag" value="0">
<input type="submit" name="Submit" value="提交">
</div></td>
</tr>
</table>
</form>
</body>
</html>
在
WebController.xml
配置文件中的定义是:
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<controllers>
<standard>
<sItem name="LoginController.ctrl" class="com.beetle.WebDemo.presentation.LoginController" />
</standard>
</controllers>
</mappings>
那么,换成零配置模式,则
[1]
按照约定改成:
<form name="form1" method="post"
action="$com.beetle.WebDemo.presentation.LoginController.ctrl">[2]
即可。关于视图,LoginController控制器返回视图时候,标准模式写法是:
view = new View("MainView", vd); [3]
// 返回MainView视图
而名为“MainView”的视图是需要定义在配置文件
WebView.xml
中的,如:
<?xml version="1.0" encoding="UTF-8"?>
<mappings>
<views>
<standard>
<sItem name="MainView" url="/views/main.jsp" />
</standard>
</views>
</mappings>
那么换成零配置模式,则
[3]
按照约定,代码改成:
view = new View("/views/main.jsp", vd); // 直接返回视图的具体物理路径和文件名
即可。
可能读者注意到
[2]
把完整的实现类暴露在外,一,不利于安全,别人很容易就知道你的代码结构;二,写法上也不够优化,显得太长,太啰嗦,显然“
com.beetle.WebDemo
”包名称是公共的;那么有没有优化点定义方法呢?
当然,此时我们只要在web.xml应用配置中,添加一个“
CTRL_PREFIX
”参数,把公共包名部分定义在此参数值里面,同时在控制器名称上把公共部分删除即可,如:
<?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>
<context-param>
<param-name>CTRL_PREFIX</param-name>
<param-value>com.beetle.WebDemo</param-value>
</context-param>
</web-app>
[2]
改成:
<form name="form1" method="post" action="$presentation.LoginController.ctrl">
详细例子请参考BJAF框架
开发的
ZeroConfigWebDemo
示例项目。
分享到:
相关推荐
【标题】"beetle 开源框架书的源码"涉及的是一个名为"beetle"的开源框架的源代码,这通常意味着该框架可能是用于Java平台,因为J2EE(Java 2 Platform, Enterprise Edition)是Java领域广泛使用的开发企业级应用的...
Beetle J2ee Application Framework(BJAF)一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可扩展、灵活缩放的高质量企业应用系统提供了一套...
标题中的"Beetle.JT808-master.zip"表明这是一个关于JT808协议的开源项目,由Beetle框架实现,且基于C#编程语言。Beetle是一个通用的通讯框架,而JT808则是一种广泛应用于中国GPS监控系统中的通信协议。这个项目可能...
BJAF(beetle-j2ee-application-framework)甲壳虫J2EE应用开发框架代码&开发指南 甲壳虫,一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可...
Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle....
已经成功应用于多个高并发量的TCP、UDP框架通信接口,
### 德利多富(Wincor Nixdorf) BEETLE_XL_II 收款机说明书 #### 概述 德利多富(Wincor Nixdorf) BEETLE_XL_II是一款模块化的POS系统,专为零售业设计。这款收款机不仅功能强大,而且具备高度的灵活性和可扩展性,...
-dung_beetle.zip" 是一个压缩包,其中包含了一个名为 "dung_beetle-master" 的文件夹,这很可能是项目的源代码目录,通常包括教程的实例、脚本和其他相关资源。让我们逐步了解Python爬虫的基本概念和常用工具。 1....
在C#编程中,"Beetle"可能指的是一个自定义的框架或库,用于处理文件传输任务。这个框架可能是为了提高文件传输的效率而设计的。在标题中提到的"beetle类包含其他类",这暗示了Beetle可能是一个封装了多种功能的类库...
标题中的“c#_以Beetle为基础SOCKET服客端(WPF)与客户端(winphone\win8 metro)”指的是一个使用C#编程语言构建的网络通信应用,它基于Beetle框架,实现了SOCKET服务器端(WPF)以及Windows Phone和Windows 8 Metro...
我们关心是 Ajax 技术的引入对现有传统 J2EE Web 开发方式的影响和挑战,进而论述 Beetle Web 框架封装 Ajax 的理念和机制, 从而最终了解 J2EE Web 开发使用 Ajax 技术的核心所在。 Ajax 技术的引入对传统 J2EE ...
在IT行业中,网络通信是至关重要的一个领域,而Netty作为一个高性能、异步事件驱动的网络应用程序框架,为Java开发者提供了构建服务器和客户端应用的强大工具。本项目专注于使用Netty 3来构建一个处理JT809协议的...
在实际应用中,Popular Beetle可以广泛应用于各种场景。例如,在开发阶段,开发者可以使用它来检查新功能对数据库的影响;在测试阶段,测试团队可以利用它来验证数据的一致性,确保测试环境与生产环境的同步;在运维...
至于“keracce-Beetle-9cc3275”,这可能是一个源代码库的特定版本标识,比如Git仓库的一个分支或者标签。这个名称可能指的是Beetle项目的作者或者一个特定的开发迭代。要深入理解这个项目,你需要解压这个压缩包并...
本压缩包“Beetle.zip”提供了一个基于Scratch的编程项目源代码,旨在帮助初学者通过一个有趣的“Beetle”游戏案例学习编程。 在“Beetle.sb3”文件中,包含了整个游戏的完整源代码,用户可以直接在Scratch环境中...
标题中的“加长版甲壳虫汽车外壳3D图纸”是指使用solidworks2014软件设计的一款经典甲壳虫汽车的加长版车型的三维模型。SolidWorks是一款广泛应用于机械设计领域的三维CAD(计算机辅助设计)软件,以其易用性和强大...
天牛须算法(Beetle Antennae Search Algorithm,简称BAS),是一种新型的智能优化算法,它以长角天牛的搜索行为为灵感而设计。长角天牛因其长长的触须而著名,这些触须常常比它们的身体还要长。BAS算法模拟了这些...
甲壳虫 PSX 剧本Beetle PSX 是 Mednafen 的 PSX 模块到 libretro API 的端口/分支。 可以用C++98模式编译,不包括Vulkan渲染器,暂时是用C++11写的。 Beetle PSX 目前在 Linux、OSX 和 Windows 上运行。 这个分叉中...
标注类别名称:["Cashew-anthracnose","Cashew-healthy","Cashew-leaf-miner","Cassava-bacterial-blight","Cassava-brown-spot","Cassava-healthy","Maize-healthy","Maize-leaf-beetle","Maize-leaf-blight",...
蜣螂优化算法(DBO,Dung Beetle Optimization Algorithm)是一种基于生物行为的新型全局优化算法,灵感来源于蜣螂(也称屎壳郎)在寻找食物过程中所展现出的探索和滚动粪球的行为。2022年底,该算法被首次提出,并...