阅读更多

9顶
3踩

开源软件

原创新闻 SoybeanMilk-1.0-b4 Java MVC开发框架发布

2011-11-03 10:17 by 见习记者 earthangry 评论(26) 有6471人浏览
SoybeanMilk-1.0-b4 做了较大的改进,包括:

  • 增强泛型类型支持,框架现在支持自动将请求参数转换为调用方法的泛型类型参数
  • 为<invoke>标签增加“breaker”属性,用以控制调用方法是否执行
  • 一个新的转换异常类ParamConvertException被加入,用于追踪输入非法的请求参数
  • 一个新的标签<type-target-handler>被加入,用于自定义动作目标处理器
  • BUG修复:默认通用转换器的getProperty接口不支持null输入

您可以点击 这里 下载框架包,里面包含了完整的说明文档和示例。

SoybeanMilk是一个简易、友好、且零侵入的Java MVC实现框架:

  • 它几乎没有学习成本,你只需要熟悉jsp和servlet技术
  • 也不需要你遵从任何代码编写模式
  • 你的代码中找不到任何这个框架的踪迹

使用它,您仅需要编写少量的XML代码,就可以轻松地将任何Java方法发布为WEB应用。

另外,它还:

  • 支持RESTful风格
  • 内置强大且易扩展的对象转换器,可以自动将请求参数转换为复杂类型的对象
  • 可以很容易与Spring、Velocity等当前流行的框架整合

如果你是一个WEB开发者,并且已经有点厌烦现有的WEB开发框架所固有的开发模式, 应该考虑了解下这个框架。

来看看使用SoybeanMilk时,你需要做些什么。

首先,你需要编写你的Java业务类,比如下面的示例:
package my;

public class User{
    private Integer id;
    private String name;
}

public class UserManager
{
    public void save(User user){ ... }
    
    public List<User> list(){ ... }
}


然后,定义“/WEB-INF/soybean-milk.cfg.xml”配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<soybean-milk>
        <resolvers>
                <resolver id="userManager" class="my.UserManager" />
        </resolvers>

        <executables>
                <action name="/user/add.do">
                        <invoke> userManager.save(param.user) </invoke>
                        <target url="/user/list.do" type="redirect" />
                </action>
                
                <action name="/user/list.do">
                        <invoke> request.userList = userManager.list() </invoke>
                        <target url="/user/list.jsp" />
                </action>
        </executables>
</soybean-milk>



好了,业务“保存用户”和“查询所有用户列表”已经完成(JSP页面部分省略)!

下面,你需要在你的web.xml中加入如下内容:
<servlet>
    <servlet-name>dispatchServlet</servlet-name>
    <servlet-class>org.soybeanMilk.web.servlet.DispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dispatchServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>


最后,启动服务器,在浏览器中输入“http://[yourApp]/user/add.do?user.id=1&user.name=jack”,用户“jack”将被保存,并显示在“/user/list.jsp”页面上。

9
3
评论 共 26 条 请登录后发表评论
26 楼 tss0823 2011-11-07 14:05
earthangry 写道
其实,我觉得一个开发框架是难是易,是否傻瓜,并不在于它是否零配置、或者是否有约定优于配置,而是看它创造并强加给开发者的约束和概念是多是少,这才能真实地反应一个开发框架的难度和学习成本,因为零配置不可能满足所有开发需求。
而零配置的好处则是提高了开发效率,因为可以少写很多代码,还有就是提高了可维护性,也就是说,零配置是提高开发效率和可维护性的一个途径,并且是一个很好的途径,但并不是唯一途径。
因此,我认为,一个开发框架是好是坏,是难是易,零配置并不是首要条件。


貌似生同感受!哈哈。
25 楼 TSheep 2011-11-06 03:24
earthangry 写道
其实,我觉得一个开发框架是难是易,是否傻瓜,并不在于它是否零配置、或者是否有约定优于配置,而是看它创造并强加给开发者的约束和概念是多是少,这才能真实地反应一个开发框架的难度和学习成本,因为零配置不可能满足所有开发需求。
而零配置的好处则是提高了开发效率,因为可以少写很多代码,还有就是提高了可维护性,也就是说,零配置是提高开发效率和可维护性的一个途径,并且是一个很好的途径,但并不是唯一途径。
因此,我认为,一个开发框架是好是坏,是难是易,零配置并不是首要条件。


理念上比较同意你的说法,我的理解就是容易上手。做一个框架除了解决问题本身外剩下就是在制定使用规则,这个规则也是使用者操纵框架途径,这方面设计直接反映了设计者看待问题的角度。
24 楼 earthangry 2011-11-06 00:11
其实,我觉得一个开发框架是难是易,是否傻瓜,并不在于它是否零配置、或者是否有约定优于配置,而是看它创造并强加给开发者的约束和概念是多是少,这才能真实地反应一个开发框架的难度和学习成本,因为零配置不可能满足所有开发需求。
而零配置的好处则是提高了开发效率,因为可以少写很多代码,还有就是提高了可维护性,也就是说,零配置是提高开发效率和可维护性的一个途径,并且是一个很好的途径,但并不是唯一途径。
因此,我认为,一个开发框架是好是坏,是难是易,零配置并不是首要条件。
23 楼 csdnchwei 2011-11-05 23:18
大家讨论得挺激烈
22 楼 KimHo 2011-11-05 22:13
george_space 写道
george_space 写道
KimHo 写道
george_space 写道
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。

你说的是restful风格吧
这个框架也有这样的影子


约定优于配置跟RESTful风格的URI无关,我的web框架中,Service的注入都是按照名字来约定注入的,不是依靠写注解,或者写配置文件,所以,约定由于配置是一种开发理念,是一种敏捷,或者说懒惰的系统在方方面面都应该做到的。

我喜欢的web开发框架,运行效率不是第一要务,功能是否强大也不是第一要务,是否支持RESTful式URI更不是第一要务。

一个对开发者最友好的web开发框架的第一要务是:尽量让使用者少写代码,少关心配置;越傻瓜化越好。

软件或者web开发框架,最基本的出发点和唯一的目的,就是减轻使用者的劳动强度,而不是让开发者围着框架团团转,忙得头昏脑胀。

我对待web开发框架的态度,和对待Linux命令行的态度一样,我极度讨厌命令行,我做的所有软件都有GUI图形界面,任何使用我软件的人,都不需要去关心什么黑乎乎的命令行,乱七八糟的配置文件,这就是以人为本。

软件为我服务,而不是我为软件折腾。

web开发框架也一样。

我在选择合作伙伴的配套软件时,第一眼看得不是软件功能是否强大,也不是看他的软件用得技术多么新颖,而是:他的软件是否足够傻瓜化。
如果他的软件让我都得忙活半天才能运行起来,我是绝对不会让这个软件在我们公司的项目中使用的,坚决不会,如果领导非要用这样的垃圾,我会毅然辞职也不用这堆垃圾。

软件给用户的感觉必须足够傻瓜化,最好是在一个界面中拖拽几个图标就搞定,如果软件给使用者得是一堆黑乎乎的命令行窗口,一坨坨杂乱无章的配置文件,一滩滩不知来由的调用代码,那么,这个软件就是把用户当成了敌人,它想把自己的用户整疯。

所以,web框架也好,给最终用户的软件也罢,无论你面对的用户是真正的IT盲,还是面对的技术人员,你都应该把用户当做没有任何技术经验的普通市井平民,你要做到让用户对你的产品,思考时间不超过一分钟就知道是干什么的,就知道怎么用,更不要让用户去阅读那成千上万页的使用说明。

要达到这种境界,需要从UI入手……
21 楼 earthangry 2011-11-05 10:52
fjjiaboming 写道
真蛋疼, 这样的框架, 你这样练手, 用用就行了, 还发稿...


愿闻其详,不然看看就行了,别发评论了。
20 楼 冬天秋天 2011-11-05 10:19
这些人,引用的评论看得我蛋疼
19 楼 tywo45 2011-11-05 09:02
加油!做出好产品出来!让质疑者闭嘴
18 楼 fjjiaboming 2011-11-05 01:21
真蛋疼, 这样的框架, 你这样练手, 用用就行了, 还发稿...
17 楼 jrx0122 2011-11-04 16:57
直接用 spring mvc就好了,干嘛要用这个
16 楼 earthangry 2011-11-04 12:49
george_space 写道
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。


感谢你的关注和指教,下一步我会尝试融入约定优于配置的思想。
15 楼 george_space 2011-11-04 12:26
george_space 写道
KimHo 写道
george_space 写道
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。

你说的是restful风格吧
这个框架也有这样的影子


约定优于配置跟RESTful风格的URI无关,我的web框架中,Service的注入都是按照名字来约定注入的,不是依靠写注解,或者写配置文件,所以,约定由于配置是一种开发理念,是一种敏捷,或者说懒惰的系统在方方面面都应该做到的。

我喜欢的web开发框架,运行效率不是第一要务,功能是否强大也不是第一要务,是否支持RESTful式URI更不是第一要务。

一个对开发者最友好的web开发框架的第一要务是:尽量让使用者少写代码,少关心配置;越傻瓜化越好。

软件或者web开发框架,最基本的出发点和唯一的目的,就是减轻使用者的劳动强度,而不是让开发者围着框架团团转,忙得头昏脑胀。

我对待web开发框架的态度,和对待Linux命令行的态度一样,我极度讨厌命令行,我做的所有软件都有GUI图形界面,任何使用我软件的人,都不需要去关心什么黑乎乎的命令行,乱七八糟的配置文件,这就是以人为本。

软件为我服务,而不是我为软件折腾。

web开发框架也一样。

我在选择合作伙伴的配套软件时,第一眼看得不是软件功能是否强大,也不是看他的软件用得技术多么新颖,而是:他的软件是否足够傻瓜化。
如果他的软件让我都得忙活半天才能运行起来,我是绝对不会让这个软件在我们公司的项目中使用的,坚决不会,如果领导非要用这样的垃圾,我会毅然辞职也不用这堆垃圾。

软件给用户的感觉必须足够傻瓜化,最好是在一个界面中拖拽几个图标就搞定,如果软件给使用者得是一堆黑乎乎的命令行窗口,一坨坨杂乱无章的配置文件,一滩滩不知来由的调用代码,那么,这个软件就是把用户当成了敌人,它想把自己的用户整疯。

所以,web框架也好,给最终用户的软件也罢,无论你面对的用户是真正的IT盲,还是面对的技术人员,你都应该把用户当做没有任何技术经验的普通市井平民,你要做到让用户对你的产品,思考时间不超过一分钟就知道是干什么的,就知道怎么用,更不要让用户去阅读那成千上万页的使用说明。
14 楼 george_space 2011-11-04 12:13
KimHo 写道
george_space 写道
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。

你说的是restful风格吧
这个框架也有这样的影子


约定优于配置跟RESTful风格的URI无关,我的web框架中,Service的注入都是按照名字来约定注入的,不是依靠写注解,或者写配置文件,所以,约定由于配置是一种开发理念,是一种敏捷,或者说懒惰的系统在方方面面都应该做到的。

我喜欢的web开发框架,运行效率不是第一要务,功能是否强大也不是第一要务,是否支持RESTful式URI更不是第一要务。

一个对开发者最友好的web开发框架的第一要务是:尽量让使用者少写代码,少关心配置;越傻瓜化越好。

软件或者web开发框架,最基本的出发点和唯一的目的,就是减轻使用者的劳动强度,而不是让开发者围着框架团团转,忙得头昏脑胀。

我对待web开发框架的态度,和对待Linux命令行的态度一样,我极度讨厌命令行,我做的所有软件都有GUI图形界面,任何使用我软件的人,都不需要去关心什么黑乎乎的命令行,乱七八糟的配置文件,这就是以人为本。

软件为我服务,而不是我为软件折腾。

web开发框架也一样。
13 楼 KimHo 2011-11-04 10:48
george_space 写道
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。

你说的是restful风格吧
这个框架也有这样的影子
12 楼 george_space 2011-11-04 10:20
kjj 写道
earthangry 写道
kjj 写道
那么多的配置xml还说简单!!!!!!!!!!!!

小伙别那么激动,注解不是万能的,有些场景并不适用

没激动,只是没看出来哪里特别!!!!!!!!!!!!!!!!!!!

好的框架,既不应该是配置文件一大片,也不应该是到处是注解,而是:约定优于配置
看url知道其controller 、view 和 Service,看 controller 知道其 URL、View,同样,看view知道其controller 、URL。
只有约定,采购敏捷。
不知道为什么众多的web框架开发者无视这一点。
11 楼 wese345 2011-11-04 10:09
实际上我早上喝的豆浆就叫SoybeanMilk,看不出来那卖豆浆的大妈会有如此功力
10 楼 Tomcat911 2011-11-04 09:40
wangzjie 写道
现在很多框架就是把相关实现放在配置文件中,核心代码再对这些配置进行解析。

框架确实提供了极大的便利,但这降低了技术门槛,相信更久以来,框架会越来越傻瓜化,到时只要通过拖拽之类的简单操作,就能很轻松把应用搞定,只要把需求弄懂后人人都会j2ee,这可能是好消息,但对程序员从某种程度上说也是种杯具,所以还是要尽量明白框架的本质,不要停留在会用框架而已


有道理!:idea:
9 楼 liyaxi 2011-11-04 09:16
java还需要框架吗???
8 楼 caoyangx 2011-11-04 08:37
caoyangx 写道
实在没看出有什么革命性的突破

原来也是国产的开源框架,不过也要支持一下。
7 楼 caoyangx 2011-11-04 08:36
实在没看出有什么革命性的突破

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Python库 | templer.core-1.0b4.zip

    资源分类:Python库 所属语言:Python 资源全名:templer.core-1.0b4.zip 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • Python库 | zperfmetrics-1.0b4.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:zperfmetrics-1.0b4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • Python库 | pyasice-1.0b4.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:pyasice-1.0b4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • Python库 | sbol2-1.0b4-py3-none-any.whl

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:sbol2-1.0b4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • Python库 | django_pastedeploy_settings-1.0b4-py2.7.egg

    资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:django_pastedeploy_settings-1.0b4-py2.7.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • jqtouch-1.0-b4-rc

    jqtouch-1.0-b4-rc

  • PyPI 官网下载 | raptus.inlinelightbox-1.0b4.tar.gz

    资源来自pypi官网。 资源全名:raptus.inlinelightbox-1.0b4.tar.gz

  • jml-src-1.0b4

    jml-src-1.0b4 java操作msn的源码

  • Python库 | xoa_driver-1.0b4-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:xoa_driver-1.0b4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

  • PyPI 官网下载 | AaronTools-1.0b4-py3-none-any.whl

    资源来自pypi官网,解压后可用。 资源全名:AaronTools-1.0b4-py3-none-any.whl

  • iOS实例开发源码——LucasTizma-Hebi-v1.0-1-g3b4e198.zip

    iOS实例开发源码——LucasTizma-Hebi-v1.0-1-g3b4e198.zip

  • iOS游戏应用源代码——LucasTizma-Hebi-v1.0-1-g3b4e198.zip

    iOS游戏应用源代码——LucasTizma-Hebi-v1.0-1-g3b4e198.zip

  • JAVA实现—UTF-8编码与解码

    java——UTF-8编码与解码 渗透测试有时候会遇到%E9%99%88这类的编码 在线转的结果 导入java中转换的结果: JAVA代码如下: import java.net.URLDecoder; import java.net.URLEncoder; //URLDecoder.decode("%E5%...

  • JAVA命令参数详解:-D

    原文地址:http://blog.sina.com.cn/s/blog_605f5b4f0100hlt9.html JAVA 命令参数详解: 1、-D= set a system property 设置系统属性。 java -D参数简化加入多个jar  java命令引入jar时可以-cp参数...

  • java -jar lib_java -jar命令运行jar包时指定外部依赖jar包 linxux or windows

    前尘回顾:setup.bat[chenquan@hostuser tartest]$ cat ../setup.shjavac -encoding UTF-8 -Djava.ext.dirs=./ -d . ./SignNatureTest.javaecho compile finished,generate .class under package test at curdirjava...

  • 微信公众号开发,原来这么简单?[java框架]

    可能你不知道,有个框架叫wx-tools(小心翼翼地说) Wx-tools是基于微信公众平台API的轻量级框架。 基于Wx-tools你可以开速开发一个订阅号/服务号的web应用后台。 博主最近终于有空!!已经更新到2.1.0啦!! ...

  • Java 函数式编程

    Java 函数式编程 一、Lambda表达式 1.1 函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作” 面向对象思想强调“必须通过对象的形式来做事情” 函数式思想强调则金量忽略...

  • pyzmq-15.1.0-py2.7-macosx-10.6-intel.egg

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

  • 51单片机库(基于12M晶振).zip

    该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

  • keke-15-cdn.mobileconfig

    keke-15-cdn.mobileconfig

Global site tag (gtag.js) - Google Analytics