在一个标准的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 J2ee Application Framework(BJAF)一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可扩展、灵活缩放的高质量企业应用系统提供了一套...
BJAF(beetle-j2ee-application-framework)甲壳虫J2EE应用开发框架代码&开发指南 甲壳虫,一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可...
beetle 开源框架书的源码 beetle 开源框架书的源码
Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle.zipscratch2.0 3.0编程项目源文件源码经典游戏案例素材源代码Beetle....
已经成功应用于多个高并发量的TCP、UDP框架通信接口,
X协议解析测试程序,服务器和客户端都有,字数字数字数
Python从零开始,一点一滴学习爬虫。-dung_beetle
scratch编程项目源代码文件案例素材-Beetle.zip
BAS: Beetle Antennae Search Algorithm for Optimization Problems。 论文英文原文。
有需要的朋友就下吧
软件测试的利器。 最新版本请到这下载www.popular-soft.com/beetle/zh-cn/
BJAF 是甲壳虫J2EE 应用框架(Beetle J2EE Application Framework)的简写,它并不是一个可以 即时看见和运行的应用系统,它为构建于J2EE 之上的应用系统定义了一个固定而有效的设计开发框 架,简化J2EE 应用,尤其...
甲壳虫 PSX 剧本Beetle PSX 是 Mednafen 的 PSX 模块到 libretro API 的端口/分支。 可以用C++98模式编译,不包括Vulkan渲染器,暂时是用C++11写的。 Beetle PSX 目前在 Linux、OSX 和 Windows 上运行。 这个分叉中...
c#传输文件传输用到的类, 听说效率不错,具体没用过
scratch编程项目源代码文件案例素材-Beetle (1).zip
Beetle J2ee Application Framework(BJAF)一个功能强大而简单易用的J2EE应用开发框架。它涵盖了J2EE体系结构的表示层、业务层和持久层,为构建一个可靠、高性能、可扩展、灵活缩放的高质量企业应用系统提供了一套...
项目概况Project Pine Beetle项目是一个Web应用程序,可将美国16个州的Southern Pine Beetle疫情数据可视化。 该工具使用预测模型来预测南方松甲虫的未来爆发和迁徙。 在前端,此应用程序为USFS研究人员和州森林护林...
beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列。除了队列上的支持组件还提供Buffer缓冲池和基于...
适用于Chrome的高清版19张adung甲虫图像新标签页。 粪便甲虫是部分或完全以粪便为食的甲虫。 一头甲虫可以在一个晚上掩埋比自己重250倍的粪便。 许多被称为“滚子”的粪便甲虫会将粪便滚成圆球,用作食物来源或繁殖...
用于零配置插件 这个插件由工作和其他好东西提供支持。 产品特点 :keycap_0: 零配置,用于注册和生成服务人员 :sparkles: 优化的预缓存和运行时缓存 :hundred_points: 最大化灯塔得分 :balloon: 容易理解的例子...