阅读更多

5顶
2踩

编程语言
SoybeanMilk-1.0-b31.0-b2 基础上做了一些小改进,包括:
  • 为<executables>标签增加“prefix”属性,便于模块配置
  • 为<arg>标签增加“objectSource”关键字,用于取得当前Web对象源对象
  • 修改<target>标签配置,取消type属性值限制
  • 修改<resolver>标签的id属性、<action>和<invoke>标签的name属性为允许重复,使功能可以被替换
  • 默认的配置文件名由“soybean-milk.config.xml”改为“soybean-milk.cfg.xml”
  • BUG修复:从Web对象源的param作用域中获取不存在的基本类型对象导致异常产生

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

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) </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?id=1&name=jack”,用户“jack”将被保存,并显示在“/user/list.jsp”页面上。
5
2
评论 共 12 条 请登录后发表评论
12 楼 earthangry 2011-03-30 09:22
Aaron5 写道
只想问一下多个业务类的话,怎么配置呢?
<action name="/user/add.do">  
  <invoke> userManager.save(param) </invoke>
  <target url="/user/list.do" type="redirect" />  
</action> 

这里似乎只有一个业务类中方法的调用。。难道多个业务类的话,想在业务类中互相调用(注入)不成?


这个框架只是调用对象的某个方法,至于方法的实现是由编写者而定的,这个“userManager”变量也可以是IOC容器(比如Spring)中的一个bean。

另外,action也可以这样写:
<action name="/user/add.do">  
  <invoke> userManager.save(param) </invoke>
  <invoke> request.userList = userManager.list() </invoke>
  <target url="/user/list.jsp" />  
</action> 
11 楼 Aaron5 2011-03-29 23:07
还想提个建议,如果只有单个业务类调用的话可不可以来个按默认规则配置啊。java中xml的配置配置看着都想吐,能不配置还是不要让人配置了。
10 楼 Aaron5 2011-03-29 23:02
只想问一下多个业务类的话,怎么配置呢?
<action name="/user/add.do">  
  <invoke> userManager.save(param) </invoke>
  <target url="/user/list.do" type="redirect" />  
</action> 

这里似乎只有一个业务类中方法的调用。。难道多个业务类的话,想在业务类中互相调用(注入)不成?
9 楼 benqend 2011-03-29 09:43
轮子越来越多,这java战驹反而越来越慢
8 楼 mathgl 2011-03-29 04:33
java的框架感觉比应用多
7 楼 yin_bp 2011-03-28 23:24
百花齐放才是春啊,看来春天来了。。。。。
6 楼 adventure 2011-03-28 16:38
MVC框架泛滥啦
5 楼 cole_dda 2011-03-28 16:09
只要是写配置文件的,一律不选择,非常的繁琐,重构都是问题。
4 楼 myten 2011-03-28 14:20
无语。一个小时就写一个MVC
3 楼 denger 2011-03-28 13:07
比起 Spring MVC 、WebWork有什么优势?
2 楼 flounder 2011-03-28 11:36
顶一个,看起来还不错
1 楼 ctfzh 2011-03-28 10:45
没看明白怎么回事

发表评论

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

相关推荐

  • Python程序设计实例 | 条形码图片识别

    本系列推文案例中,建议Python采用3.10及以上版本,NumPy采用1.22.3及以上版本,Matplotlib采用3.5.1及以上版本,Pandas采用1.4.2及以上版本。Python从3.10这个版本开始,标准发行版本中自带的IDLE交互式环境中输入提示符>>>单独放在左侧,不能随输入语句一起复制。为了清晰区分实例在交互环境中的输入和输出,本系列推文在每个输入语句的开头依然保留输入提示符>>>。

  • 来学一学分布式系统核心:面向对象的分布式架构,分布式对象系统

    面向对象编程是非常流行的编程模式,因此,在分布式系统中,基于对象来设计分布式架构是自然而然的。本章介绍面向对象的分布式架构。

  • 利用python识别图片中的条码(pyzbar)及条码图片矫正和增强

    这周和大家分享如何用python识别图像里的条码。用到的库可以是zbar。希望西瓜6辛苦码的代码不要被盗了。(zxing的话,我一直没有装好,等装好之后再写一篇)

  • 分布式面向对象技术简介

    以下是我在公司早会上做发言的一篇发言稿,是原创,在此存档。 分布式面向对象技术简介 一、分布式计算应用的几个阶段 1、数据传输和信息共享时期:上世纪80年代末到90年代中期技术特点:使用套接字(Socket)技术来实现应用特点:业务逻辑被网络结构控制,也就是说要根据网络环境的不同指定特定的业务逻辑应用范畴:C/S结构的MIS系统 2、远程过程调用

  • 面向对象分布式开发系统理论

    面向对象分布式开发系统 作者:陈立峰

  • 面向对象的分布式开发系统 (二)

    前文:面向对象的分布式开发系统 (一)3.     布式系统的关键技术3.1     面向对象技术Object-Oriented客户/ 服务器模式,是典型的分布式计算模型。在此模式下,客户端建立连接到服务器,通过相互约定的协议通讯,以达到交换信息的目的。SoftEngine 核心的通讯通道封装了这些复杂的底层细节。通过多层的封装技术,将底层对象与应用对象完全隔离。SoftEngine

  • 用python和opencv检测图像中的条形码

    点击上方“小白学视觉”,选择加&#34;星标&#34;或“置顶”重磅干货,第一时间送达 在学习中发现快乐,在应用找到价值。这是我第五期分享图像技术应用的文章。前四期欢迎阅读和分享:第一期...

  • 分布式对象技术

     以面向对象技术为主要特征的分布式计算技术从90年代初开始,经过多年的发展,现已经进入了成熟时期,一般将其称为分布式对象技术。分布式对象技术主要是在分布式异构环境下建立应用系统框架和对象构件,在此框架的支撑下,开发者可以将软件功能包装为更易管理和使用的对象,这些对象可以跨越不同的软、硬件平台进行互操作    (1)分布式对象技术的特点    分布式对象技术将分布在网络上的全部资源都按照

  • 面向对象的三个基本特征

    面向对象的三个基本特征是:封装、继承、多态。 [img]http://www.cnitblog.com/images/cnitblog_com/lily/1972/o_OOBase.gif[/img] 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的...

  • 分布式系统之间传输对象

    分布式系统之间传输对象 1.springClud 框架会自动封装,在出参和入参直接写需要的对象 2.dubbo+zookeeper 传输的对象需要序列化,否则会报IO错误 即在对象上实现Serializable类 ...

  • 15.3,python中扫描条形码和二维码

    1,pip install pyzbar安装好该模块

  • SOA(Service-Oriented Architecture)面向服务的分布式架构详解

    导语:SOA作为一种面向服务的架构,是一种软件架构设计的模型和方法论。从业务角度来看,一切以最大化“服务”的价值为出发点,SOA利用企业现有的各种软件体系,重新整合并构建起一套新的软件架构。这套软件架构能够随着业务的变化,随时灵活地结合现有服务,组成新软件,共同服务于整个企业的业务体系。简单的理解,我们可以把SOA看作是模块化的组件,每个模块都可以实现独立功能,而不同模块之间的结合则可以提供不同的...

  • 面向对象的分布式开发系统 (三)

    返回首篇前文:面向对象的分布式开发系统 (二)3.3     分布式对象Distributed Object在上文提到,SoftEngine 由不同种类的对象构造,在发布实施角度上看,可分为三种: 本地(Local)对象,远地(Remote) 对象,虚拟(Virtual) 对象 。图表 6 Local, Remote and Virtual Object在上图中:

  • 用 Python 和 OpenCV 检测图片上的条形码

    近期在学习python,于是参考博客http://blog.jobbole.com/80448/,也实现了一下用 Python 和 OpenCV 检测图片上的条形码,整个过程比较简单,那篇博客里面有很详细的解说,于是这里就直接上代码了。 # -*- coding: utf-8 -*- # feimengjuan import numpy as np import cv2 # 1、整个条形码的算

  • 面向对象的分布式开发系统 (四)

    返回首篇前文:面向对象的分布式开发系统 (三)3.5     流水线式设计模式Pipelining Design Model“流水线式”经常在讨论CPU 技术时被谈及。在CPU 设计中,非流水线式设计模式的问题在于:每个单元指令必须在另一个指令开始前完成。这样会有很多的空闲时间片,没有效率。而流水线式的最基本思路在于充分利用CPU 内部空闲的组件,以至于可以同时处理多了单元指令,减少空

  • 怎样用Python识别条形码?

    最近一位热心的网友找到宋宋,想做一个条形码或者二维码的识别系统。 现在,他在北京的某知名大型连锁超市,需要通过Python识别条形码,进行快速的商品库存录入。如果已经存在的则不进行录入。不知Python能否实现?所以趁此机会我们给大家介绍下OpenCV和pyzbar。 废话不多说,进入正题...... 条码在生活中随处可见,其可分为三类:一维条码、二维条码、三维条码 一维条码: 我们平时习惯称为条形码。条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识...

  • 分布式存储与分布式计算

    总结很不错,就转过来了,原博文:http://blog.csdn.net/recommender_system/article/details/42024205 一、高性能计算 目前自己知道的高性能计算工具,如下所示: Hadoop:Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。 S

Global site tag (gtag.js) - Google Analytics