收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 


struts2的笔记
状态: 离线
人气:600557
访问用户量:853
笔记经验:
总积分:567
级别:普通会员
搜索本笔记
ta的交流分类
ta的交流主题贴(5)
ta的所有交流贴(5)
ta的全部笔记
全部笔记(89)
未分类笔记(3)
研磨struts2(86)
存档
2012-04(85)
2012-03(4)

2012-04-23 09:44:56
《研磨struts2》第十八章 结合JFreeChart 之 18.2 Struts2插件概述
浏览(5004)|评论(0)   交流分类:Java|笔记分类: 研磨struts2

        Struts2并没有求大求全,企图把所有的功能都包含进来,而是设计了一个灵活、可扩展的插件体系,让所有的人都可以以做插件的方式,为Struts2添加新的功能,这也是Struts2非常吸引人的地方之一。

来简单的认识一下Struts2的插件。打开Struts2 下载包中的lib目录struts-2.1.8.1\lib,会发现,这里面以struts2作为文件名开头的文件可以被分成两类,一类是Struts2的核心包,比如struts2-core-2.1.8.1.jar;而其他的都叫struts2-xxx-plugin-2.1.8.1.jar,很显然,后者都是Struts2的插件。

       这些插件的存在形式就是普通的jar包,看起来和其他jar包也没什么区别,但是,如果打开来看,就发现内藏玄机了。打开看看,会发现,只要是插件的jar包,其根目录下都有一个叫struts-plugin.xml的文件,里面有这个插件相应的配置。

       以struts2-jfreechart-plugin-2.1.8.1.jar中的struts-plugin.xml为例来观察一下,示例如下:

 

java代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
<struts>
    <package name="jfreechart-default" extends="struts-default">
       	<result-types>
    		<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult">
    			<param name="height">150</param>
    			<param name="width">200</param>
    		</result-type>
    	</result-types>
    </package>
</struts>

               仔细看一下,根元素为<struts>,<struts>元素中有一个<package>元素,而<package>元素中有一个<result-types>子元素,而<result-types>子元素中有一个<result-type>子元素。

       好像很熟悉啊。没错,其实这个struts-plugin.xml实际上就是个struts.xml,因此我们也可以在自己的配置文件里这样写。

       至此,可以看到Struts2插件的存在方式:

  • 命名规则为struts2-xxx-plugin-版本号.jar
  • 存在形式就是一个普通的jar包。
  • 这个jar包的根目录必须存在一个叫struts-plugin.xml,而其本质就是一个struts.xml。

而使用Struts2插件的时候,只需要把这个jar包拷贝到web工程的编译路径上即可。

18.2.2 Struts2插件的加载顺序和作用

在启动web容器的时候,Struts2有一个运行时配置,它会按照以下顺序加载配置文件:

  • struts-default.xml这个文件应该在核心包中,也就是struts2-core-版本号.jar中,通常有一个。
  • struts-plugin.xml这种文件应该在所有的插件包中,也就是以struts2-xxx-plugin-版本号.jar,通常会有多个。
  • struts.xml这个文件应该在我们的web应用的classpath根目录上有一个。

通常情况下,插件的配置文件优先于我们的配置文件加载,因此,我们可以像引用struts-default 包一样来引用struts-plugin.xml文件中的其他包。

       比如,有了上面的那个JFreeChart插件的struts-plugin.xml后,我们的<package>元素只要继承插件中的包,就可以任意使用这个包内的任意资源,如下示例:

 

java代码:
    <package name="sample" namespace="/sample" extends="jfreechart-default">
    	<action name="sampleAction" class="cn.javass.action.SampleAction">
    		<result type="chart"/>
    	</action>
    </package>

这里注意两个要点:

  • 我们的包继承了jfreechart-default包,因此,我们的包中可以随意使用jfreechart-default包中的东西,在上面的例子中定义的<result type=”chart”>,就使用了jfreechart-default包中定义的的<result-type name=” chart”>。
  • Struts2的包在继承关系上是递归的, jfreechart-default包又继承自struts-default包,因此,我们的sample包也可以自由使用struts-default的东西。

插件就是以这种声明新包,然后在新包中声明新功能的方式,来简洁的加入到应用中,而且在插件中还可以通过声明来替换struts-default包中的默认行为。

 

私塾在线网站原创《研磨struts2》系列

转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4169.html

欢迎访问http://sishuok.com获取更多内容

相关笔记推荐
精品视频课程推荐

Java数据结构和算法精讲版
本课程专注于数据结构和算法的内容,使用Java来进行代码示例,不空洞的讲解概念和理论,重点放在代码的实现和示例上。 从零开始、全面系统、成体系的讲解数据结构和基本算法,循序渐进的讲述构建软件系统所常见的数据结构和算法。

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

struts2防重复提交视频教程
深入浅出的讲解在Struts2开发中,如何防止页面的重复提交

struts2验证器框架视频教程
深入浅出的讲解Struts2的验证器框架,包括:预定义验证器和自定义开发验证器

浏览(5004)|评论(0)   交流分类:Java|笔记分类: 研磨struts2

评论(0)
请登录后评论 登录

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网