精华内容
下载资源
问答
  • MAVEN 搭建APPFUSE

    2019-03-21 01:28:46
    NULL 博文链接:https://lionsadness.iteye.com/blog/672010
  • 本文档详细描述了AppFuse与SpringMVC+mybatis整合的过程,只要你懂一些基本的eclipse操作和基本的maven命令,就可以在三分钟之内迅速的搭建出一个AppFuse的架构
  • AppFuse

    2008-01-11 11:57:16
    本文以一个 J2EE 开发者的角度,借助一个简单的应用示例,在融合了个人经验的基础上介绍了如何用 AppFuse 一步步地构建 J2EE 项目。通过阅读本文,读者不仅能够学会用 AppFuse 进行开发,而且能够充分体会到 AppFuse...
  • appfuse

    2008-03-11 17:00:51
    使用appfuse2.0,下载过来的实例源码,没有jar包
  • 关于AppFuse的特性、架构以及为什么要使用AppFuseAppFuse的创始人MattRaible在《使用AppFuse的七个理由》一文中已经做了很详尽的阐述,这里就不再赘言。本文将着力于实践,即如何运用AppFuse开发J2EE应用。使用
  • AppFuse项目研究

    2014-10-29 09:05:05
    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持
  • AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
  • Appfuse Web Project

    2014-02-25 11:25:15
    国外热门流行框架 Appfuse ,Maven 构建项目本文档是介绍如何配置Maven 搭建 Appfuse 项目以及 Tomcat、JDK 安装以及环境配置 有图有真相 喜欢研究新技术的同学可以下载来玩玩一起研究 不懂的可以和我交流 QQ ...
  • appfuse源码分析三(web)

    2021-02-27 10:20:05
    appfuse的webapp包下有这么几个包一:org.appfuse.webapp.filter这个包下定义了一些过滤器首先是GZIPFilter继承实现了spring提供的抽象类OncePerRequestFilter(每一次请求执行一次的过滤器)的doFilterInternal方法。...
  • Appfuse框架解析

    2013-08-05 14:44:45
    Appfuse框架解析,包括登陆验证,执行顺序,加载策略等。
  • appfuse1.4-architecture

    2013-08-29 11:32:38
    06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬
  • Appfuse开发教程

    2013-06-29 12:19:53
    讲述如何创建POJO(对应相应的数据表)和 DAO(管理POJO持久化操作的对象)。 本教程将向你展示如何在一个数据库里创建表,以及如何完成访问这些表的Java代码。我们将建立一个对象以及处理(保存/检索/删除)这些类到数据库...
  • AppFuse是一个使用Java语言开发web应用系统的集成框架。java开发人员头痛的事情是面对大量的框架不知该如何选择。这些框架性能如何,兼容性如何等等都需要筛选比较。Appfuse作者Matt Raible对于这些框架做了深入研究...
  • 低XML节食的AppFuse 这是我为在#NoXML上的SpringOne 2GX 2015演讲创建的一个项目。 它包括以下内容: Spring XML到Java Spring Security配置到Java web.xml到WebApplicationInitializer Spring MVC到Java ...
  • AppFuse2.1所需包

    2013-05-16 17:19:25
    AppFuse2.1所需包,主要包括Spring MVC+Hibernate4 还有一些其它包!
  • Candy for Appfuse-开源

    2021-05-29 05:46:59
    Candy for AppFuse 是一组插件,旨在让您使用 AppFuse 2.0 的日常工作更加舒适。 它的最终目标是让开发人员忘记所有 maven2 命令,同时支持 Appfuse 最佳实践。
  • Appfuse

    2013-11-21 17:44:00
    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。 目 录 ...


    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。

    1简介

    AppFuse是一个集成了当前最流行的Web应用框架的一个更高层次的Web开发框架,也 可以说是一个Web开发基础平台,它与它所集成的各种框架相比,它提供了一部分所有Web系统开发过程中都需要开发的一些功能,如登陆、用户密码加密,用 户管理、根据不同的用户可以展现不同的菜单,可以自动生成40%-60%左右的代码,自带了默认的一些在CSS中设定的样式,使用这些样式能很快的改变整 个系统的外观,还有自动化测试的功能。
    它最大的价值就是为我们提供了一个Web开发的新的方式和思路,尽管这些技术在国外都已进很流行了,但在国内能够将Hibernate、 Struts、Spring、DBUnit、Ant、Log4J、Struts Menu、Xdoclet、SiteMesh、Velocity、JUnit、JSTL、WebWork这些技术集成到一个框架中的还不多见,所以即使不 使用它的全部功能,它也给我们提供了一个很好的借鉴、学习的机会。
    通过关注AppFuse,我们可以看到目前国外的主流开发都使用了哪些技术,开发方式是什么样的,可能达到什么样的结果,而在以前,是很少能够看到这样完整的例子的。
    AppFuse的另一个启示是:我们可以依靠开源软件的功能降低开发成本,而且可以阅读开源软件的代码提高所在团队的整体实力。 [1]

    2功能特性

    (AppFuse 2.x版本)
    Maven 2 Integration
    Spring Annotations
    Web Frameworks support: JSF, Struts 2, Spring MVC, Stripes, Tapestry 5 and Wicket
    JDK 5, Annotations, JSP 2.0, Servlet 2.4
    JPA Support
    Generic CRUD backend
    Full Eclipse, IDEA and NetBeans support
    Fast startup and no deploy with Maven Jetty Plugin
    Testable on multiple appservers and databases with Cargo and profiles

    3作用

    ● 在持久层方面,AppFuse可以使用Hibernate O/R映射工具、iBatis;
    使用AppFuse 的七个理由

    使用AppFuse 的七个理由

    ● 在容器方面,它采用了Spring Framework;
    ● 在web框架方面,用户可以自由选择Struts、Spring/MVC,Webwork,Taperstry、JSF这几个web框架。
    ● 在开发模式方面,采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。
    ● 简化开发方面,Appfuse预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护部分配置文件。

    网站应用程式架构

    ASP.NET
    ASP.NET MVC BFC DotNetNuke MonoRail
    Umbraco
    ColdFusion
    ColdSpring Fusebox Mach-II Model-Glue
    onTap on Wheels
    Common Lisp
    ABCL-web blow BKNR SymbolicWeb
    UnCommon Web
    C++
    CppCMS
    Java
    Apache Struts AppFuse Flexive GWT
    Grails Vaadin ItsNat JavaServer Faces
    Makumba OpenXava Reasonable Server Faces RIFE
    Restlet Seam Spring Stripes
    Tapestry WebWork Wicket ZK
    Perl
    Catalyst Interchange Mason
    PHP
    Agavi Akelos CakePHP Chisimba
    CodeIgniter Garden Horde Kohana
    Kolibri KumbiaPHP Midgard Orinoco Framework
    PHPonTrax Seagull Simplicity Symfony
    WASP Yii Framework Zend Zoop
    Python
    Bottle CherryPy Django Flask
    Gork Pyjamas Pylons Pyramid
    Tornado TurboGears web2py Zope
    Ruby
    Ruby on Rails Merb Sinatra
    Scala
    Lift
    Smalltalk
    AIDA/Web Seaside
    Other languages

    Application Express Fusebox OpenACS Yaws
    HAppS SproutCore
    展开全文
  • AppFuse演示 截屏视频和教程应用程序,它们显示功能。 有关AppFuse的实时演示,请访问 。 要执行在此项目中创建应用程序的教程,请参阅 。
  • 忙里抽闲在《Maven2小记》 之后准备把 Appfuse 的一些使用心得记录一下,以备参考: 简介:Appfuse是一个开放源码的项目和应用程序,它由 Matt Raible开发,它集成了流行的Spring、Hibernate、ibatis、struts、...

    忙里抽闲在《Maven2小记》 之后准备把 Appfuse 的一些使用心得记录一下,以备参考:

    简介:Appfuse是一个开放源码的项目和应用程序,它由 Matt Raible开发,它集成了流行的Spring、Hibernate、ibatis、struts、Xdcolet、junit等基础框架,并提供了对 Taperstry和JSF等的支持,非常适合作为J2EE项目的骨架,特别是和Maven的整合,使它更加光芒耀眼。在用AppFuse开发时,用户可以自由选择Struts、Spring MVC、Webwork、Taperstry和JSF这几个MVC框架。它采用测试驱动(TDD)的开发方式,使用JUnit测试各层。


    1、安装与部署:

    “快速”这就是Appfuse的一大优点,所以它的安装与部署过程也十分简略。首先当然保证机器上必须有Maven(如果有问题可以参考《Maven2小记》 ),然后就可以开始建立项目了,以下是大致步骤(这里以Appfuse-Spring标准结构为例):

    〉新建一个目录,准备安放Appfuse项目工程。例如为:d:/workspace,运行Maven命令:mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.2 -DgroupId=com.appfuse.app -DartifactId=appfuse,运行过程中,会看到一系列的waring警告,不用管。等看到:Builde Success,表示成功了。maven会在d:/workspace下新建appfuse目录,里面含有最重要的pom.xml文件。

    〉然后就是修改pom.xml的参数,这些参数都在文件底部,若你是mysql数据库,则很简单,只需修改用户名和密码(默认为root和空)。若是其他数据库,请参照pom.xml里面的数据库配置文件进行替换修改。

    〉最后,进入d:/workspace/appfuse目录,运行mvn appfuse:full-source进行安装,过程很快,然后就是运行mvn jetty:run-war启动jetty,在测试时会有一些异常信息。不用理会,只是一些测试数据没有准备好。启动完毕后打开 http://localhost:8080 就可以看到Appfuse的登录页面。

    这里有个很有意思的地方,如果在安装过程中出现

    [INFO] null

    Illegal character in path at index 18 : file:/C:/Documents and Settings/Administrator/.m2/repository/org/apache/ant/ant/ 1.7 . /ant- 1.7 . .jar

    ...

    类似错误的话可能是由于你的maven库安装目录是window下的默认目录 C:/Documents and Settings...这个路径里面含有有空格所以触发的ant的一个bug导致出错,解决办法很简单:你可以按照QuickStart的提示,设置maven的settings.xml里面选项<localRepository>c:/docume~1/username/.m2/repository</localRepository>,当然你也可以找一个不带空格的目录(如:/path/to/local/repo)然后设置settings.xml<localRepository>/path/to/local/repo</localRepository>就可以了~

     

    2、准备开发:

    首先,当然要把代码导入到IDE中,比如我们用Eclipse,那么就在项目目录下,运行mvn eclipse:eclipse,然后到Eclipse>File>Import导入项目。然后我们就可以开始阅读、添加或者修改Appfuse的源码了~

     

    3、开发笔记:

    目前准备按照官方开发文档里 http://appfuse.org/display/APF/Developer+Guide 的开发文档进行实践性的讲解,以下是一个Appfuse开发DEMO的建立过程:
    a> 我们先建立 Employee 表:
    CREATE TABLE `Employee` (
      `id` bigint(20) NOT NULL auto_increment,
      `code` varchar(10) NOT NULL,
      `dept` varchar(50) NOT NULL,
      `name` varchar(20) NOT NULL,
      `status` varchar(10) NOT NULL,
      `telephone` varchar(20) default NULL,
      `title` varchar(50) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    b> 然后由表生成model  运行mvn appfuse:gen-model
    c> 接下来你会在model package中发现新的Employee.java
    d> 在@Id @GeneratedValue(strategy=IDENTITY) @GeneratedValue(strategy = GenerationType.AUTO)两个ID生成策略中选择一个(我选择@GeneratedValue(strategy = GenerationType.AUTO)),保存好
    e> 然后就是由model生成CRUD 运行mvn appfuse:gen -Dentity=Employee会生成employeeList.jsp、employeeForm.jsp、 EmployeeAction.java但是没有自动生成dao与service 而是采用的GenericManager<Employee, Long>中的方法,解决方法如下:
    在项目下的pom.xml中查找genericCore,大概在940行 找到 将属性true 改为false
    像这样<amp.genericCore>false</amp.genericCore>
    重新运行 mvn appfuse:gen -Dentity=Employee
    在myeclipse中查看代码 dao 与 service也都生成了
    f> 大功告成,运行mvn jetty:run在浏览器中查看界面吧
    g> 但是我发现最后还有个问题 就是appfuse页面中 显示乱码
    解决方法如下:
    修改pom.xml中
    找到 native2ascii-utf8 的 execution 把 includes 里的 ApplicationResources_zh*.properties 改为 *_zh*.properties
    找到下方 excludes 段落中的 <exclude>ApplicationResources_zh*.properties</exclude> 改成 <exclude>*_zh*.properties</exclude>
    如果发现问题依然存在,注意必须先 mvn clean 一下,然后再 mvn jetty:run 这样才能把缓存清除干净哦:)
    接下来就是具体的开发过程了,待续~~ 由于篇幅原因请看新作《Appfuse 源代码分析 》~~

     

    这里附上一个 web.xml 的常见配置实例,还是比较有使用价值的:)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd">
        <web-app>
            <display-name> appfuse </display-name>
            <!--  precompiled jsp mappings  -->
            <!--  定义默认的 CSS Theme  -->
            <context-param>
                <param-name> theme </param-name>
                <param-value> simplicity </param-value>
            </context-param>
            <!--  Define the basename for a resource bundle for I18N   -->
            <context-param>
                <param-name> javax.servlet.jsp.jstl.fmt.localizationContext </param-name>
                <param-value> ApplicationResources </param-value>
            </context-param>
            <context-param>
                <param-name> javax.servlet.jsp.jstl.fmt.fallbackLocale </param-name>
                <param-value> en </param-value>
            </context-param>
            <!--  Context Configuration locations for Spring XML files  -->
            <context-param>
                <param-name> contextConfigLocation </param-name>
                <param-value>
                    /WEB-INF/classes/springconfig/applicationContext-*.xml,
                    /WEB-INF/classes/springconfig/security.xml
                </param-value>
            </context-param>
            <!-- 
            十大过滤器之一 :
            FilterChainProxy(org.acegisecurity.util.FilterChainProxy)是acegi的一个类
            通过使用acegi我们可以用spring aop直接对service bean的每一个method做权限管理
            -->
            <filter>
                <filter-name> securityFilter </filter-name>
                <filter-class> org.acegisecurity.util.FilterToBeanProxy </filter-class>
                <init-param>
                    <param-name> targetClass </param-name>
                    <param-value> org.acegisecurity.util.FilterChainProxy </param-value>
                </init-param>
            </filter>
            <!-- 
            十大过滤器之二 :
            OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,
            提供了在现有JSP页面之内实现快速内存缓冲的功能。
            -->
            <filter>
                <filter-name> cacheFilter </filter-name>
                <filter-class> com.opensymphony.oscache.web.filter.CacheFilter </filter-class>
            </filter>
            <!-- 
            十大过滤器之三 :
            appfuse中使用Clickstream来跟踪用户的页面操作。它通过监听器来开始一次会话跟踪过程。
            用户的每一条点击信息是通过一个servlet  filter来捕捉的。当用户的session结束后把整个跟踪
            记录保存在一个文件里或打印输出。可以发现用户是不是一个“人”。
            并且进行过滤。可以通过jsp或servlet显示用户的当前的点击信息。
            -->
            <filter>
                <filter-name> clickstreamFilter </filter-name>
                <filter-class> com.opensymphony.clickstream.ClickstreamFilter </filter-class>
            </filter>
            <!-- 
            十大过滤器之四 :
            spring的编码转换过滤器
            -->
            <filter>
                <filter-name> encodingFilter </filter-name>
                <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class>
                <init-param>
                    <param-name> encoding </param-name>
                    <param-value> UTF-8 </param-value>
                </init-param>
                <init-param>
                    <param-name> forceEncoding </param-name>
                    <param-value> true </param-value>
                </init-param>
            </filter>
            <!-- 
            十大过滤器之五 :
            spring 的hibernate Session过滤器
            -->
            <filter>
                <filter-name> hibernateFilter </filter-name>
                <filter-class>
                    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
                </filter-class>
            </filter>
            <!-- 
            十大过滤器之六 :
            URL重写
            -->
            <filter>
                <filter-name> rewriteFilter </filter-name>
                <filter-class> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </filter-class>
                <init-param>
                    <param-name> logLevel </param-name>
                    <param-value> commons </param-value>
                </init-param>
            </filter>
            <!--
            十大过滤器之七 :
            sitemesh是由一个基于web页面布局、装饰以及与现存web应用整合的框架。
            它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,
            如一致的导航条,一致的banner,一致的版权,等等。它不仅仅能处理动态的内容,
            如jsp,php,asp等产生的内容,它也能处理静态的内容,
            如htm的内容,使得它的内容也符合你的页面结构的要求。
            甚至于它能将html文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。
            -->
            <filter>
                <filter-name> sitemesh </filter-name>
                <filter-class> com.opensymphony.module.sitemesh.filter.PageFilter </filter-class>
            </filter>
            <!--
            十大过滤器之八 :
            Display Tag Lib是一个标签库,用来处理jsp网页上的Table,功能非常强,
            可以对的Table进行分页、数据导出、分组、对列排序等等,
            而且使用起来非常的方便。能够大大减少代码量。
            -->
            <filter>
                <filter-name> exportFilter </filter-name>
                <filter-class> org.displaytag.filter.ResponseOverrideFilter </filter-class>
            </filter>
            <!-- 
            十大过滤器之九 :
            性能优化,将输出流压缩
            -->
            <filter>
                <filter-name> compressionFilter </filter-name>
                <filter-class> com.lady.webapp.filter.GZIPFilter </filter-class>
            </filter>
            <!-- 
            十大过滤器之十 :
            自定义,国际化
            -->
            <filter>
                <filter-name> localeFilter </filter-name>
                <filter-class> com.lady.webapp.filter.LocaleFilter </filter-class>
            </filter>
            <filter-mapping>
                <filter-name> encodingFilter </filter-name>
                <url-pattern> /j_security_check </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> encodingFilter </filter-name>
                <url-pattern> /dwr/* </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> encodingFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> encodingFilter </filter-name>
                <url-pattern> *.jsp </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> securityFilter </filter-name>
                <url-pattern> /j_security_check </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> securityFilter </filter-name>
                <url-pattern> /dwr/* </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> securityFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> securityFilter </filter-name>
                <url-pattern> *.jsp </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> cacheFilter </filter-name>
                <url-pattern> *.jsp </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> hibernateFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> clickstreamFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> localeFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> localeFilter </filter-name>
                <url-pattern> *.jsp </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> exportFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> compressionFilter </filter-name>
                <url-pattern> *.css </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> compressionFilter </filter-name>
                <url-pattern> *.jsp </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> compressionFilter </filter-name>
                <url-pattern> *.js </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> compressionFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <filter-mapping>
                <filter-name> rewriteFilter </filter-name>
                <url-pattern> /* </url-pattern>
                <!-- dispatcher>REQUEST</dispatcher>
                <dispatcher>FORWARD</dispatcher -->
            </filter-mapping>
            <filter-mapping>
                <filter-name> sitemesh </filter-name>
                <url-pattern> /* </url-pattern>
                <!-- dispatcher>REQUEST</dispatcher>
                <dispatcher>FORWARD</dispatcher -->
            </filter-mapping>
            <filter-mapping>
                <filter-name> clickstreamFilter </filter-name>
                <url-pattern> *.html </url-pattern>
            </filter-mapping>
            <!--
            五大监听器之一 :
            listener开始一次跟踪,filter捕捉每一次请求,在这里捕捉以html结尾的请求。
            在项目主页http://www.opensymphony.com/clickstream/提供了显示当前在线信息的jsp和servlet
            clickstream.jsp,viewstream.jsp 以及ActiveStreamServlet.
            appfuse直接使用了上诉的两个jsp文件
            几乎没有做任何改动。
            -->
            <listener>
                <listener-class> com.opensymphony.clickstream.ClickstreamListener </listener-class>
            </listener>
            <!-- 
            五大监听器之二 :
            struts 的菜单处理监听器
            -->
            <listener>
                <listener-class> net.sf.navigator.menu.MenuContextListener </listener-class>
            </listener>
            <!-- 
            五大监听器之三 :
            spring中的提供了一个名为org.springframework.web.util.IntrospectorCleanupListener的监听器。它主要负责处理由
            JavaBeans Introspector的使用而引起的缓冲泄露。spring中对它的描述如下:它是一个在web应用关闭的时候,清除JavaBeans
            Introspector的监听器.在web.xml中注册这个listener.可以保证在web 应用关闭的时候释放与掉这个web  应用相关的class
            loader 和由它管理的类如果你使用了JavaBeans Introspector来分析应用中的类,Introspector 缓冲中会保留这些类的引用.
            结果在你的应用关闭的时候,这些类以及web 应用相关的class loader没有被垃圾回收.不幸的是,清除Introspector的唯一方式是刷
            新整个缓冲.这是因为我们没法判断哪些是属于你的应用的引用.所以删除被缓冲的introspection会导致把这台电脑上的所有应用的
            introspection都删掉.需要注意的是,spring 托管的bean不需要使用这个监听器.因为spring它自己的introspection所使用的缓冲
            在分析完一个类之后会被马上从javaBeans Introspector缓冲中清除掉.应用程序中的类从来不直接使用JavaBeans Introspector.
            所以他们一般不会导致内部查看资源泄露.但是一些类库和框架往往会产生这个问题.例如:Struts 和Quartz.单个的内部查看泄漏会导致整
            个的web应用的类加载器不能进行垃圾回收.在web应用关闭之后,你会看到此应用的所有静态类资源(例如单例).这个错误当然不是由这个类自
            身引起的.
            -->
            <listener>
                <listener-class> org.springframework.web.util.IntrospectorCleanupListener </listener-class>
            </listener>
            <!-- 
            五大监听器之四 :
            -->
            <listener>
                <listener-class> com.lady.webapp.listener.StartupListener </listener-class>
            </listener>
            <!-- 
            五大监听器之五 :
            -->
            <listener>
                <listener-class> com.lady.webapp.listener.UserCounterListener </listener-class>
            </listener>
            <!-- 
            两大servlet之一 :
            -->
            <servlet>
                <servlet-name> springMVC </servlet-name>
                <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
                <init-param><param-name> contextConfigLocation </param-name>
                    <param-value>
                        /WEB-INF/classes/springconfig/springMVC.xml
                        <!--  /WEB-INF/lj-springapp-servlet.xml
                        /WEB-INF/ysm-springapp-servlet.xml  -->
                    </param-value>
                </init-param>
                <load-on-startup> 2 </load-on-startup>
            </servlet>
            <!-- 
            两大servlet之二 :
            -->
            <servlet>
                <servlet-name> dwr-invoker </servlet-name>
                <servlet-class> uk.ltd.getahead.dwr.DWRServlet </servlet-class>
                <init-param>
                    <param-name> debug </param-name>
                    <param-value> true </param-value>
                </init-param>
            </servlet>
            <servlet-mapping>
                <servlet-name> springMVC </servlet-name>
                <url-pattern> *.html </url-pattern>
            </servlet-mapping>
            <servlet-mapping>
                <servlet-name> dwr-invoker </servlet-name>
                <url-pattern> /dwr/* </url-pattern>
            </servlet-mapping>
            <session-config>
                <session-timeout> 10 </session-timeout>
            </session-config>
            <welcome-file-list>
                <welcome-file> index.jsp </welcome-file>
            </welcome-file-list>
            <error-page>
                <error-code> 500 </error-code>
                <location> /error.jsp </location>
            </error-page>
            <error-page>
                <error-code> 400 </error-code>
                <location> /index.jsp </location>
            </error-page>
            <error-page>
                <error-code> 403 </error-code>
                <location> /403.jsp </location>
            </error-page>
            <error-page>
                <error-code> 404 </error-code>
                <location> /404.jsp </location>
            </error-page>
        </web-app>

     

    最后,抽点时间介绍一下 Tapestry :

    同样是很优秀的 JavaEE 开发框架,同样有 maven 的支持,他的设计风格却与 Appfuse 大相径庭,不过基于 servlet 的模块式开发思想,整洁的模板代码风格,以及 Tapestry 广泛使用的 org.apache 系列的类库,这可能也是他也很有“人缘”的原因了,不惜为 developer 们相当不错的选择~

     

    首先同样是安装(比 Appfuse 更方便):

    mvn archetype:create -DarchetypeGroupId=org.apache.tapestry -DarchetypeArtifactId=tapestry-simple -DarchetypeVersion=5.0.2 -DgroupId=org.example -DartifactId=tapestry -DpackageName=org.example.tapestry -Dversion=1.0.0-SNAPSHOT

    注意 artifactId 和 packageName 必须对应否则 Eclipse Maven2 会报错哦。

    然后直接打开 Eclipse 执行 Eclipse>File>Import 导入项目即可。

    最后进入tapestry项目目录,运行mvn jetty:run查看效果。

     

    然后是开发中的技巧:持续更新中,可以看看新作《Appfuse 源代码分析

     

    Keep walking ...


    原文链接: http://blog.csdn.net/shagoo/article/details/3950492

    转载于:https://my.oschina.net/chen106106/blog/44997

    展开全文
  • Java Appfuse-源代码分析
  • appfuse 有struts2+hibernate+spring的整合 springmvc+hibernate+spring的整合 多模块,但模块都有 学习开发参考使用非常方便 可以到官方下载最新版的,我只是把自己下载的打包整理一下 注意哈,都是基于maven的...
  • appfuse_AppFuse 3.0

    2020-05-13 00:15:52
    appfuseAppFuse所宣布的, AppFuse 3.0在这里。 AppFuse是用于在JVM上构建Web应用程序的全栈框架。 它使用Maven Archetype插件生成了一个入门Java项目,因此您可以轻松地开始创建完整的Java EE应用程序。 如...

    appfuse

    如AppFuse所宣布的, AppFuse 3.0在这里。 AppFuse是用于在JVM上构建Web应用程序的全栈框架。 它使用Maven Archetype插件生成了一个入门Java项目,因此您可以轻松地开始创建完整的Java EE应用程序。 如AppFuse 3.0 – Java 7,Spring 4,PrimeFaces,Mockito,Bootstrap 3,Wicket所述,最新版本已替换了先前版本中使用的许多技术,如下所述。

    在3.0版本中,AppFuse使用Mojarra代替MyFaces作为JSF实现。 它的JSF框架和库也使用PrimeFaces代替Tomahank。

    AppFuse 3.0将Mockito用于其测试模拟框架,仅保留jMock。 Bootstrap 3用于前端框架,默认设置为Bootswatch的Spacelab主题。 还使用了artifactId appfuse-basic-wicket-archetype Apache Wicket作为Web Framework选项提供。 AppFuse 3.0使用Facelet布局,并集成了用于JavaScript和CSS优化的wro4j,以及用于处理JavaScript依赖项的WebJars。 从现在开始,所有依赖项都更新为最新版本,使用了Spring 4和Spring Security 3.2,它们也需要Java 7和Maven。

    Bootstrap,jQuery,Maven,Java 7,JSP 2.1,Servlet 3.0,Hibernate或JPA,Spring和Spring Security是AppFuse 3.0项目中遇到的技术。 Web框架可以是JSF,Spring MVC,Struts 2,Tapestry 5或Wicket,由您决定。

    此版本提供了几个值得注意的功能,例如身份验证和授权,用户管理,记住我,密码提醒,注册和注册,SSL切换,电子邮件,无扩展名的URL,文件上传,通用CRUD,IDE支持和货运和Spring简介。

    开始使用AppFuse的一种简单方法是AppFuse快速入门指南 。 该项目所需的全部是Java 7,Maven 3和MySQL 5,它们是可以轻松更改的默认数据库。

    翻译自: https://www.javacodegeeks.com/2014/01/appfuse-3-0.html

    appfuse

    展开全文
  • appfuse新手上路

    2010-04-14 09:47:03
    新手使用appfuse2.0,启动步骤和配置过程
  • appfuse-beginner

    2019-03-18 01:58:08
    NULL 博文链接:https://spiderren.iteye.com/blog/627709
  • Appfuse使用教程

    2010-04-07 12:15:47
    Maven是一个java项目管理工具,深化了ant,但又有自己一整套的项目集成策略。Apache Maven一个潜在的基于java的apache ant的构建工具的替代者。 Maven与ant两者之间的比较:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,416
精华内容 1,766
热门标签
关键字:

appfuse