阅读更多

9顶
3踩

开源软件

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

2011-11-03 10:17 by 见习记者 earthangry 评论(26) 有6513人浏览
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 函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作” 面向对象思想强调“必须通过对象的形式来做事情” 函数式思想强调则金量忽略...

  • polylearn-0.1.dev0-cp35-cp35m-win32.whl.rar

    python whl离线安装包 pip安装失败可以尝试使用whl离线安装包安装 第一步 下载whl文件,注意需要与python版本配套 python版本号、32位64位、arm或amd64均有区别 第二步 使用pip install XXXXX.whl 命令安装,如果whl路径不在cmd窗口当前目录下,需要带上路径 WHL文件是以Wheel格式保存的Python安装包, Wheel是Python发行版的标准内置包格式。 在本质上是一个压缩包,WHL文件中包含了Python安装的py文件和元数据,以及经过编译的pyd文件, 这样就使得它可以在不具备编译环境的条件下,安装适合自己python版本的库文件。 如果要查看WHL文件的内容,可以把.whl后缀名改成.zip,使用解压软件(如WinRAR、WinZIP)解压打开即可查看。 为什么会用到whl文件来安装python库文件呢? 在python的使用过程中,我们免不了要经常通过pip来安装自己所需要的包, 大部分的包基本都能正常安装,但是总会遇到有那么一些包因为各种各样的问题导致安装不了的。 这时我们就可以通过尝试去Python安装包大全中(whl包下载)下载whl包来安装解决问题。

  • 基于Simulink的语音信号降噪与增强.docx

    基于Simulink的语音信号降噪与增强.docx

  • java资源Java条形码生成库 Barcode4J

    java资源Java条形码生成库 Barcode4J提取方式是百度网盘分享地址

Global site tag (gtag.js) - Google Analytics