struts-gpipe

web页面模块化异步渲染
授权协议 未知
开发语言 Java
所属分类 Web应用开发、 网页开发工具
软件类型 开源软件
地区 国产
投 递 者 崔棋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

struts-gpipe 提供了将 groovy 引入 struts java web 项目的功能, web页面模块化异步渲染。

这个项目的初衷是为了将groovy引入我们的struts web项目,在开发的过程中,发现有跟多可以做的是全,不过在最初的版本,struts-gpipe主要包括两个功能:

1,经过简单的配置可以将groovy引入struts项目,这个时候我们可以将一些业务逻辑代码从java code中提取出来放在groovy里面,至于为什么要把一些业务逻辑代码放在groovy里面,这是因为我们可以利用groovy动态语言的特性,想一想,我们发布的时候再也不需要将java code编译成class然后在deploy。或许我们可以一秒钟搞定发布..这一点是振奋人心的..:)。但是这秒发的功能在struts-gpipe在最初的版本中并没有做,后面会陆续加入。

2,struts-gpipe的第二个主要功能是实现了异步响应的思想,我们通常的web页面都是将所有内容渲染完才返回到页面的,如果这个页面很笨重,那么用户可能会遭遇到“白屏”的体验,这对产品来说简直是体验大打折扣,struts-gpipe项目提供了将整个页面拆分成若干模块的功能,每一个模块都独立渲染,多个模块并发渲染,我们可以让一部分模块渲染完成之后先返回给客户端,让另一部分模块渲染之后后返回给客户端,不用想,这样用户体验会好很多。

struts-gpipe与struts和spring的整合:

1,struts-gpipe提供注入spring容器bean的功能,用法一致。

2,struts-gpipe提供ongl的功能,也就是会自动将模块属性引入freemarker渲染,这一点是和spring mvc不同的,用过spring mvc的都知道,spring mvc向freemarker传入数据需要往model传入塞,而这一点struts使用了ongl技术,让用户不用写塞数据的冗余代码。

struts-gpipe开发的时候尽量考虑到了用户的使用成本,因此将struts-gpipe引入项目配置起来相对还是比较简单的,下面简单介绍一下如何将struts-gpips引入我们的项目:

1.web.xml配置

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>com.gweb.filter.GStrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>struts-default.xml,struts-gpipe.xml,struts-plugin.xml,struts/struts.xml</param-value>
        </init-param>
    </filter>

struts-gpipe过滤器继承了StrutsPrepareAndExecuteFilter,在启动的时候会初始化struts-gpipe容器。

2,struts.xml配置

<constant name="gweb.groovy.dir" value="biz" />

   <package name="gweb" namespace="/index" extends="gpipe-default">
                <action name="index" class="com.gweb.front.action.Index">
                        <result name="success" type="gweb">/WEB-INF/ftl/index.ftl</result>
                </action>
        </package>

第一个配置的struts常量是配置groovy脚本的的路径,这个路径可以相对resource目录,第二个配置是需要使用struts-gpipe的package需要继承gpipe-defaule的配置,第三个配置表示一种struts的返回类型。struts-gpipe为struts返回类型添加了一个类型“gweb”,struts-gpipe会代理处理index.ftl的渲染。

3,脚本示例代码

@GPipeMapping("m1")
@Asyn
class M1 implements GPipe{

    private String m1;

    @Override
    String execute() {
        m1 = "build by m1.groovy";
        return "/WEB-INF/gpipe/m1.ftl"
    }

    String getM1() {
        return m1
    }

    void setM1(String m1) {
        this.m1 = m1
    }
}

这里需要配置模块的名字,渲染方式:同步还是异步,返回的ftl路径。模块的名字和主模块里面名字对应:

sync:
${GPipe_m1}

anyn:
${GPipe_m2}

其中GPipe_是我给模块名字起的前缀,这个固定,后面的对应groovy脚本里面用注解配置的名字。

  • 1.遇到的error:导入的包放在了lib下,然而lib却在src下导致很多错误,应该直接放在webinfo下面就好了! 2.struts跟标签,包括,package包管理,name属性,访问填写,a**重点内容**ction标签,访问填写,class全类名,result标签用于映射,视图,中间/index.jsp. namespace命名空间表示路径有效的拦截范围! 重点内容 快捷键 加粗 Ct

  • 开发环境:windows+myEclipse8.0+tomcat6.0+mysql用到的web框架:Struts2+Spriing3.0+hibernate3.0部署环境:suseLinux+tomcat6.0+mysql,传输速度1M左右具体操作如下:选择文件进行上... 开发环境:windows+myEclipse8.0+tomcat6.0+mysql 用到的web框架:Struts2+Spr

  • action 代码:     public void savemovieinfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub MovieInfoForm

 相关资料
  • 异步模块 if (isIE8) { require.async('compatible-ie8.js', function(exports){ // ... }); } else if (isIE6) { require.async('compatible-ie6.js', function(exports){ // ... });

  • 问题内容: 我想以异步方式初始化模块,并提出一些想法。我需要具有Mongo集合列表和其他数据的DB对象,但是为了简洁起见,其中的文件列表确实有用。 我无法导出函数或类,因为我每次都需要返回相同的对象。 首先 想到的最简单的方法是分配给它,然后填充它: 不好的事情–我真的从外面不知道什么时候准备好列表,也没有检查错误的好方法。 *我想出的 *第二种 方法是继承并通知所有人数据库已准备就绪或发生了错误

  • 模块化页面一开始很难理解,但一旦你了解它,它就会很容易使用。 它可以从其子页面创建单个页面。 它能够从模块化内容页面构建复杂的单页面布局。 模块化页面设置为不可路由,因为无法通过URL直接访问它们。 它们在文件夹名称之前由_(下划线)标识。 它是一组页面,每个页面都显示一个以获得单个页面。 例如, user/pages/home/_header. 。 文件夹结构 如果是单页骨架,您可以在01.ho

  • 异步模块 异步模块与同步模块相反,指的是模块是在运行时才去异步加载然后再运行。 setTimeout(function(){ // 异步模块`async.js`在 1000ms 后加载,然后再运行 require.async('async.js', function(exports){ // 模块加载完成后,返回模块的导出 // exports

  • 问题内容: 我想知道配置模块导出的最佳方法是什么。在下面的示例中,“ async.function”可以是FS或HTTP请求,为示例起见简化了该请求: 这是示例代码(asynmodule.js): 如何仅在执行异步回调后导出模块? 编辑 有关我的实际用例的简短说明:我正在编写一个模块,用于在fs.exists()回调中配置nconf(https://github.com/flatiron/ncon

  • 问题内容: 是否可以异步加载Node.js模块? 这是标准代码: 但是我想写这样的东西: 有没有办法做到这一点?还是有一个很好的理由为什么不支持回调? 问题答案: 尽管是同步的,并且Node.js并未提供现成的异步变体,但是您可以轻松地自己构建一个变体。 首先,您需要创建一个模块。在我的示例中,我将编写一个模块,该模块从文件系统异步加载数据,但是当然是YMMV。因此,首先,使用老式的,不需要的同步

  • 我试图为我编写的一些代码编写单元测试,遇到的问题是我希望在执行函数后调用模拟回调,但我的测试失败,因为它从未被调用。 正在测试的功能非常简单: 我怀疑的问题是,由于请求的异步性质,jasmine在API调用中执行模拟回调之前测试期望值。我尝试过使用其他人建议使用的done()和flags,但没有成功。希望能在这方面提供一些指导。

  • 本文向大家介绍vue异步axios获取的数据渲染到页面的方法,包括了vue异步axios获取的数据渲染到页面的方法的使用技巧和注意事项,需要的朋友参考一下 我们在vue,数据很多事异步获取来的,如果在template直接使用,会报错,undefined。 因为先渲染后得到的数据,那如何才能不报错呢? computed!!! 举个例子 index.vue 忽略坑人的传参方式。。。 在创建时获取数据,