[size=small] struts2.1.6已经出了一段时间了,网上看到的例子比较少。自已试用并少量修改了一些其中的功能。
struts2.1.6最大特色就是更突出插件化,核心包也变小了,我们可以按需添加自己想要的功能插件。停用codebehind插件,使用convention插件,配置简明多了,在动态方法调用的基础上基本可以实现零配置。再结合restful插件,实现rest风格的url。
总结一下convention插件特点:
项目启动时自动搜索类文件,可以设置要排除的包,要搜索的jar包,要匹配哪些包,命名空间的起始包名,result结果返回页面文件的基本路径。按配置规约,一个类的位置就决定了包(struts2)、命名空间、返回文件夹位置。类名就决定了action名称、返回文件名称。如"HelloWorldAction"默认取名为"hello-world"。命名空间,继承的父包名,action名都可以自定义。
result返回值默认为Action接口中定义的几个字符串,会自动找已经配置好的页面文件夹下以action名字命名的文件,首先是jsp文件,然后是velocity,freemarker。如果action为"hello-world",会找"hello-world.jsp"。如果只有"hello-world.jsp"一个文件,则Action接口中定义字符串"success","error","input"都指向同一个文件。如果有"hello-world-error.jsp",则"error"指向,以此类推。如果自定义一个返回值"return",则指向"hello-world-return.jsp"。
annotation注解比原来核心包自带的注解简化许多,和xml配置格式统一起来。可以在package-info.java文件中添加注解,直接配整个包公共部分。可以在一个action类上加注解直接配整个类的公共部分。可以为action中的一个方法单独配置。
struts.xml的dtd中多了一个unknowhandle的配置。可以配置找不到action定义,action方法定义及返回结果定义时的处理过程,为程序添加了极大的自由度。是一个栈式结构,可以配置多个unknowhandle,依次查找直到最后才抛出异常。
[/size]
struts2.1.6最大特色就是更突出插件化,核心包也变小了,我们可以按需添加自己想要的功能插件。停用codebehind插件,使用convention插件,配置简明多了,在动态方法调用的基础上基本可以实现零配置。再结合restful插件,实现rest风格的url。
总结一下convention插件特点:
项目启动时自动搜索类文件,可以设置要排除的包,要搜索的jar包,要匹配哪些包,命名空间的起始包名,result结果返回页面文件的基本路径。按配置规约,一个类的位置就决定了包(struts2)、命名空间、返回文件夹位置。类名就决定了action名称、返回文件名称。如"HelloWorldAction"默认取名为"hello-world"。命名空间,继承的父包名,action名都可以自定义。
result返回值默认为Action接口中定义的几个字符串,会自动找已经配置好的页面文件夹下以action名字命名的文件,首先是jsp文件,然后是velocity,freemarker。如果action为"hello-world",会找"hello-world.jsp"。如果只有"hello-world.jsp"一个文件,则Action接口中定义字符串"success","error","input"都指向同一个文件。如果有"hello-world-error.jsp",则"error"指向,以此类推。如果自定义一个返回值"return",则指向"hello-world-return.jsp"。
annotation注解比原来核心包自带的注解简化许多,和xml配置格式统一起来。可以在package-info.java文件中添加注解,直接配整个包公共部分。可以在一个action类上加注解直接配整个类的公共部分。可以为action中的一个方法单独配置。
struts.xml的dtd中多了一个unknowhandle的配置。可以配置找不到action定义,action方法定义及返回结果定义时的处理过程,为程序添加了极大的自由度。是一个栈式结构,可以配置多个unknowhandle,依次查找直到最后才抛出异常。
[/size]