一个轻量级WebFramework开发框架介绍

05-09-07 luog
基于MVC框架====地球人都知道

特性===多多

使用===方便

学习===简单

下面将在回复中慢慢介绍,想了解下的向下看

         

luog
2005-09-07 16:09
<%@page contentType="text/html; charset=GBK"%>

<%@taglib uri="/WEB-INF/webobject.xml" prefix="wo"%>

<%@page import="snowrain.webframework.web.border.*,snowrain.webframework.web.*"%>

<html>

<head>

<title>testtag</title>

</head>

<body bgcolor="#ffffff">

<wo:webobject className="snowrain.webframework.web.border.BorderContent"> hahaaha

<wo:webobject className="snowrain.webframework.web.border.BorderContent"> xixixixxi

<%

ClipBorder cb = new ClipBorder();

cb.addWebText("This co中华人民共和国ntent<br>");

cb.setCaption("hehe,This is my caption");

%>

<wo:webobject webObject="<%=cb%>">asdfsadf</wo:webobject>

</wo:webobject>

</wo:webobject>

<wo:webobject className="snowrain.webframework.web.border.ClipBorder"> hahaaha

<wo:webobject className="snowrain.webframework.web.border.ClipBorder">hahaaha</wo:webobject>

</wo:webobject>

<wo:webobject fileName="ClipBorder">

Thddddddddddddddis is from xml

aa

<wo:webobject className="snowrain.webframework.web.border.BorderRoundCorner">hahaaha</wo:webobject>

</wo:webobject>

<!--

<wo:webobject className="snowrain.webframework.schema.PowerDesignerSelectTable"></wo:webobject>

-->

</body>

</html>

<img src="upload/luogQXtPJ.jpg">

luog
2005-09-07 16:17
这个演示了各种组件进行嵌套使用的结果

这样,每个组件都可以被重复使用,而不会有任何的问题。

<wo:webobject className="snowrain.webframework.web.border.ClipBorder">hahaaha</wo:webobject>

表示这里旋转一个Web组件,组件的类名是snowrain.webframework.web.border.ClipBorder,这主要用来放置不需要参数的组件。

组件间可以互相嵌套,同样的组件也可以互相嵌套。最终形成各种各样的效果

<%

ClipBorder cb = new ClipBorder();

cb.addWebText("This co中华人民共和国ntent<br>");

cb.setCaption("hehe,This is my caption");

%>

<wo:webobject webObject="<%=cb%>">asdfsadf</wo:webobject>

</wo:webobject>

对于复杂的组件,可能有些参数要在程序执行时才能确定,这样可以用程序的方法进行处理,然后直接放在Tag中即可,当然也可以封装一个类,在类内部进行处理,然后返回。

<wo:webobject fileName="ClipBorder">

Thddddddddddddddis is from xml

aa

<wo:webobject className="snowrain.webframework.web.border.BorderRoundCorner">hahaaha</wo:webobject>

</wo:webobject>

上面则演示了从配置文件中载入组件的示例,即根据配置的XML文件来形成一个组件,并显示之

luog
2005-09-07 16:19
组件的开发

一个圆角边框的开发示例

package snowrain.webframework.web.border;

import java.util.List;

import java.util.Properties;

import java.util.ArrayList;

import snowrain.webframework.web.*;

import snowrain.webframework.xsd.XsdElement;

/**

* 一个圆角边框

* @author snowrain

* @version 1.0

*/

public class BorderContent extends WebObject {

public static String Path = "borderContent/";

private static String Skin = "yellow";

private String ContentBackGroundColor = "#fbfdf0";

/**

* 构造函数

*/

public BorderContent() {

}

/**

* 构造函数

* @param path String 图象路径

* @param skin String Skin名

* @param bgColor String 背景颜色

*/

public BorderContent(String path, String skin, String bgColor) {

Path = path;

Skin = skin;

ContentBackGroundColor = bgColor;

}

/**

* 构造函数

* @param path String 图象路径

* @param skin String Skin名

*/

public BorderContent(String path, String skin) {

Path = path;

Skin = skin;

}

/**

* 构造函数

* @param skin String Skin名

*/

public BorderContent(String skin) {

Skin = skin;

}

/**

* 返回用到的CSS文件名

* @return String

*/

public static String getCssFile() {

return Path + Skin + "/border.css";

}

/**

* 设置路径

* @param path String

*/

public static void setPath(String path) {

Path = path;

}

/**

* 用于从XML读入参数停息

* @param prop Properties

*/

public void parameterFromProperties(Properties prop) {

super.parameterFromProperties(prop);

Path = prop.getProperty("Path");

Skin = prop.getProperty("Skin");

ContentBackGroundColor = prop.getProperty("ContentBackGroundColor");

}

/**

* 提供克隆方法

* @return WebObject

*/

public WebObject cloneWebObject() {

return this;

}

/**

* 返回下面部分的内容

* @return String

*/

public String getFooter() {

if (!isInit) {

init();

}

String imagePath = (Path.endsWith("/") ? Path : (Path + "/")) + Skin +

"/";

String str = "";

str += " </td>\n";

str += " <td valign=\"top\" width=\"7\" background=\"" +

imagePath + "middleRight.gif\"><img src=\"" +

imagePath +

"middleRight.gif\" width=\"7\" height=\"21\"></td>\n";

str += " </tr>\n";

str += " </table>\n";

str += " </td>\n";

str += " </tr>\n";

str += " <tr>\n";

str += " <td valign=\"top\">\n";

str += " <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";

str += " <tr>\n";

str += " <td width=\"10\"><img src=\"" + imagePath +

"bottomLeft.gif\" width=\"10\" height=\"11\"></td>\n";

str += " <td width=\"*\" background=\"" + imagePath +

"bottomMiddle.gif\"><img src=\"" + imagePath +

"bottomMiddle.gif\" width=\"2\" height=\"11\"></td>\n";

str += " <td width=\"9\"><img src=\"" + imagePath +

"bottomRight.gif\" width=\"9\" height=\"11\"></td>\n";

str += " </tr>\n";

str += " </table>\n";

str += " </td>\n";

str += " </tr>\n";

str += "</table>\n";

return str;

}

/**

* 返回上面部分的内容

* @return String

*/

public String getHeader() {

if (!isInit) {

init();

}

String imagePath = (Path.endsWith("/") ? Path : (Path + "/")) + Skin +

"/";

String str = "";

str +=

"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n";

str += " <tr>\n";

str += " <td valign=\"top\">\n";

str += " <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";

str += " <tr>\n";

str += " <td width=\"9\"><img src=\"" + imagePath +

"topLeft.gif\" width=\"9\" height=\"8\"></td>\n";

str += " <td width=\"*\" background=\"" + imagePath +

"topMiddle.gif\"><img src=\"" + imagePath +

"topMiddle.gif\" width=\"4\" height=\"8\"></td>\n";

str += " <td width=\"9\"><img src=\"" + imagePath +

"topRight.gif\" width=\"9\" height=\"8\"></td>\n";

str += " </tr>\n";

str += " </table>\n";

str += " </td>\n";

str += " </tr>\n";

str += " <tr>\n";

str += " <td valign=\"top\">\n";

str += " <table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n";

str += " <tr>\n";

str += " <td valign=\"top\" width=\"6\" background=\"" +

imagePath + "middleLeft.gif\"><img src=\"" +

imagePath +

"middleLeft.gif\" width=\"6\" height=\"20\"></td>\n";

str += " <td width=\"*\" bgcolor=\"" + ContentBackGroundColor +

"\">\n";

return str;

}

/**

* 提供从XML读入参数的方式

* @param prop Properties

*/

public void parameterToProperties(Properties prop) {

super.parameterToProperties(prop);

if (Path != null) {

prop.setProperty("Path", Path);

}

if (Skin != null) {

prop.setProperty("Skin", Skin);

}

if (ContentBackGroundColor != null) {

prop.setProperty("ContentBackGroundColor", ContentBackGroundColor);

}

}

/**

* 如果检测到没有添加内容,则自动添加一个空格进去

*/

public void init() {

super.init();

this.addWebText(" ");

}

/**

* 用于生成Xml Schema

* @return List

*/

public List getParameterList() {

ArrayList al = new ArrayList();

al.add(new XsdElement("Path", "string", 0, 1));

al.add(new XsdElement("Skin", "string", 0, 1));

al.add(new XsdElement("ContentBackGroundColor", "string", 0, 1));

return al;

}

}

luog
2005-09-07 16:24
圆角边框的执行效果

当然了,看看上面的编辑是有些复杂的,那么有没有办法,更简单的实现一下它呢?各种内容都要print出来,要实现的函数又有那么多?

答案当然是肯定的,那就是采用模板的方式,请看下一篇回复

猜你喜欢
5Go 1 2 3 4 ... 5 下一页