4S Webframework0.1 又一个轮子

欧德高 发布于 2010/11/12 02:20
阅读 744
收藏 1

 

4S Webframework是一个简单,高效,面向服务的一个web框架

介绍:

  一句话,“简单,高效,面向服务”,web界,java框架多如牛毛,但我大多不喜欢,最喜欢的一个是Play!,但是全静态方法很是不爽,一直想自己打造一个简单的,正好最近有个比较大的web项目要做,所以乘机写了一个,方便自己服务大家(:)),不过暂时不建议大家在生产环境使用,等我经过这个项目验证后再把代码放出来,其实都很简单,主要类不超过10个,主要配置文件就一个routes(uri映射),其他都是封装的工具类和相应的配置文件

功能和说明:

 0,约定大于配置,除非没办法

 1,Velocity模板引擎支持

 2,多memcached支持,具体可以看xmcache.properties

 3,数据库操作辅助支持,其实用的就是红薯发的那个DBHelper

 4,多数据库连接池支持,master/slave/slave,master/master/slave/slave等,具体可以看dbpool.properties

 5,多文件上传支持

 6,参数标准支持,通常情况下不用标注

 7,输出支持json,xml,html,txt,binary,file等等,Controller类里还有很多重载方法

 8,输入参数支持String,String[],File,File[],List,其它一概不支持(没必要),类型转换出错的话上层不好处理,输出一大堆异常对用户也不有好

 9,所有继承Controller的类都必须在applications包下面,类似applications.Applicaton(类名),applications.admin.Application(applications.admin是包名,Application是类名)

 10,目录结构

 --WEB-INF

|

  templates //模板路径

  |

  tmp //临时目录,主要放上传的零时文件

  |

  log //Velocity日志

  |

  lib //依赖库

  |

  classes //这里就是业务类和配置文件了

  |

  applications //放Controller类,必须

  |

model //建议放领域模型

  |

  dao //建议放数据库操作类

  |

  service //建议放业务逻辑实现类

  |

  routes //uri映射文件,必须滴

  |

  dbpool.properties //数据库配置文件,如果没用的话可以去掉

  |

  xmcache.properties //Memcached配置文件,如果没用的话就可以去掉

  |

  log4j.properties //这个地球人都知道

  |

  *.vm //velocity宏

  |

  web.xml //地球人都知道,具体配置见下面

 

使用:

 1,把ssss.jar,依赖包,放到/WEB-INF/lib下面,配置文件放到/WEB-INF/classes下面就可以工作了

 2,模板引擎用的是Velocity,模板路径在/WEB-INF/templates,默认情况下模板文件的路径就是

 2,web.xml配置如下:

 

SSSSEngine

SSSSEngine

ssss.framework.SSSSEngine

 RequestCharacterEncoding

 utf-8

 ResponseCharacterEncoding

 utf-8

 PrintLowAction

 true

SSSSEngine

/*

 

#tomcat乱码问题的解决办法

方法一:修改server.xml->Connector->增加useBodyEncodingForURI="true",修改web.xml-》SSSSEngine-》增加init-param->RequestCharacterEncoding=utf-8

方法二:修改server.xml->Connector->增加URIEncoding="utf-8"

 

#resin乱码问题的解决办法

resin.xml-》resin-》增加utf-8

 

例子:

package applications;

/**

 * Conntroller必须在applications包下面,否则会找不到模板,

 * 当然applications下面可以跟子包,例如可以把管理后台单独放到admin包下面

 * 模板在WEB-INF/templates下面

 * @author gqf

 *

 */

 

import java.io.File;

 

import model.Video;

import net.rubyeye.xmemcached.MemcachedClient;

import ssss.cache.MultiXMCachePool;

import ssss.dao.DBHelper;

import ssss.framework.B;

import ssss.framework.Controller;

import ssss.framework.annotation.P;

import tools.Util;

 

 

public class Application extends Controller {

 

//默认的模板是Application/index.html,类名Application就是模板的一级目录,方法名就是模板文件名,

public void index(){

render();

}

//默认取的是参数名,如果取不到则取P标注的值

public void login(@P("uid") String uid, @P("pwd") String passwd,

@P("app") String appName, @P("to") String redirect) {

String key=null;

if (this.getCookie("SSOID_KEY") == null) {

addCookie("SSOID_KEY", Util.suuid(),"","/",Integer.MAX_VALUE);

} else {

key=getCookie("SSOID_KEY").getValue();

}

render(B.b("ip", this.getRealRemoteAddr()),B.b("uid", uid),

B.b("pwd", passwd),

B.b("app", appName), B.b("to", redirect),B.b("key", key));

 

}

 

public void logout(@P("token")String token) {

DBHelper helper=DBHelper.createDBHelper("name");//数据库操作辅助类

String sql="insert into test (sss,xxxx) values (?,?)";

int row = helper.update(sql, "ssssssssss","ssssssssss");

render(B.b("token",token),B.b("row",row));

}

 

public void xml() {

MultiXMCachePool pool=MultiXMCachePool.getPool();

//就是XMemcached,怎么使用可以看XMemcached的文档

MemcachedClient client = pool.getXMClient("cache1");

Video v = new Video();

v.setName("name");

renderXml(v);//输出xml

}

public void json(){

Video v = new Video();

v.setName("name");

renderJson(v);//输出json

}

/**

* 文件存储在WEB-INF/tmp/下面,记得定时清理哦

*/

public void uploadFile(String msid,String title,String[] desc,File file,File[] files){

render(B.b("msid", msid),B.b("title", title),B.b("desc", desc),B.b("file", file),B.b("files", files));

}

 

}

 

下载地址:code.google.com/p/4swebframework

加载中
0
该用户已被和谐
该用户已被和谐

我就喜欢”玩轮子“。希望走上权威之路。

返回顶部
顶部