`
HenryYu
  • 浏览: 29346 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Beetle框架使用指南之--Web应用零配置编程

阅读更多

在一个标准的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 示例项目。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics