精华帖 (1) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-01-06
最后修改:2011-01-06
vb2005xu 写道
oojdon 写道
和我的JdonMVC有点相似,楼主加油,共同进步。
我的返回视图不是用注解,而是显式编程,实现一个渲染接口 这样就new Html,new Text,new Json,new JavaScript,new Atom,new Xml. 我的开发坐标是RESTful + DCI + DDD + CQRS JdonMVC默认是用Jdon作为领域管理层,所以没有IOC。 靠 你咋和我的思路一样呢?? 你看看我这写的
private static String getTemplate(String url,int delay){
return String.format("<html><head><meta http-equiv=\"refresh\" content=\"%d;URL=%s\" /></head></html>", delay,url);
// return "<html><head><meta http-equiv=\"refresh\" content=\"" + delay + ";URL=" + url + "\" /></head></html>";
}
String.format 这个性能很差,所以我自己实现了一个Template函数,比format快好几倍
private static final String START_FLAG = "${"; private static final String END_FLAG = "}"; /** * 将字符串中特定模式的字符转换成map中对应的值 * * @param s * 需要转换的字符串 * @param map * 转换所需的键值对集合 * @return 转换后的字符串 */ public static String convert(String s, Map<String, String> map) { StringBuilder ret = new StringBuilder(s.length()); int cursor = 0; for (int start, end; (start = s.indexOf(START_FLAG, cursor)) != -1 && (end = s.indexOf(END_FLAG, start)) != -1;) { ret.append(s.substring(cursor, start)).append( map.get(s.substring(start + START_FLAG.length(), end))); cursor = end + END_FLAG.length(); } ret.append(s.substring(cursor, s.length())); return ret.toString(); } 在这个帖子里面 http://hypercube1024.iteye.com/blog/833807 有和正则替换的性能测试报告,format我也测过,性能也很差
|
|
返回顶楼 | |
发表时间:2011-01-06
嗯 不错 我拿你这个改了下 你这个很好用啊
public static String replace(String s, Map<String, String> map) { StringBuilder ret = new StringBuilder(s.length()); int cursor = 0; for (int start, end; (start = s.indexOf("${", cursor)) != -1 && (end = s.indexOf("}", start)) != -1;) { ret.append(s.substring(cursor, start)).append( map.get(s.substring(start + 2, end))); cursor = end + 1; } ret.append(s.substring(cursor, s.length())); return ret.toString(); } |
|
返回顶楼 | |
发表时间:2011-02-14
请问楼主,上传文件表单的文件怎么处理?
|
|
返回顶楼 | |
发表时间:2011-02-14
gzenzen 写道 请问楼主,上传文件表单的文件怎么处理?
@HttpParam 目前还不能注入文件上传,只能支持普通的表单参数注入,文件上传注入正想加进去,目前还是只能用HttpRequest 处理文件上传 ~~ |
|
返回顶楼 | |
发表时间:2011-02-14
楼主的代码我大概阅读了
表层发现了几个问题 1.AnnotationBeanreader的scan方法初始化classes改成 if (classes == null) { classes = new LinkedHashSet<Class<?>>(); } 否则配置文件中配置包只能扫描最后一个 2.@Inject如果加在bean的其他方法上,初始化时也会调用该方法 我是个在校学生,没有多少实践机会,看楼主代码我受益匪浅,非常感谢楼主开源共同学习的精神,希望能贡献更多优秀代码大家共同学习 |
|
返回顶楼 | |
发表时间:2011-02-15
不会用,LZ敢不敢给个完整的hello world例子?既然是firefly使用指南,连个hello world 都没有,晕倒
|
|
返回顶楼 | |
发表时间:2011-02-15
最后修改:2011-02-15
genius_45 写道 楼主的代码我大概阅读了
表层发现了几个问题 1.AnnotationBeanreader的scan方法初始化classes改成 if (classes == null) { classes = new LinkedHashSet<Class<?>>(); } 否则配置文件中配置包只能扫描最后一个 2.@Inject如果加在bean的其他方法上,初始化时也会调用该方法 我是个在校学生,没有多少实践机会,看楼主代码我受益匪浅,非常感谢楼主开源共同学习的精神,希望能贡献更多优秀代码大家共同学习 非常感谢,1.确实是个Bug,现在就修复 2. @Inject在方法上面初始化确实会调用该方法 |
|
返回顶楼 | |
发表时间:2011-02-15
iminto 写道 不会用,LZ敢不敢给个完整的hello world例子?既然是firefly使用指南,连个hello world 都没有,晕倒
svn主干里面有个 firefly-hello 里面有很多例子 |
|
返回顶楼 | |