Strus2.16 零配制+rest full
Woodfish_zhong 2009-03-31
最近在做网上审批的申报系统, 带着我做的那位同事由于也是一直想学新东西所以一心想用最新的东西,起初做这个平台的设计框架的时候技术总监建议用sevlete+jdbc来做,但是同事找借口要用新技术,刚好有一天我给他推荐了springside3这个框架。Springside3中比springside2的版式本有比较大的改进,其中有一点那就是利用了strurts2.0的零配制(Convention Plugin)也就是说不用配制strus.xml文件了。后来在就要开发展中,技术总监又说要用rest full,当时我就没有听过。他就简单地说了一点点。课下我就回去研究了。但由于我对其零配制还没有很深的了解, 也没有做过一个例子,所以研究半天最终并没有和我们的springside3零配制结合起来。最终今天我那个同事把这个问题搞定,在这里说一说。
网上有很多的资料,讲得都很简单。而且只是一个官网上的一个例子。这里就不讲那个例子了, 就直接把我们项目中用到的jar包, 以及要配制的文件, 以及配制中的一些意义解释一下。
一、 Struts2.0.xml
虽然说是零配制,但并不是这个文件都没有了, 如果没有这一个文件, 那就算不上是一个strus2的项目了。只不过这里配制的东西,并不是业务上的东西,而且是一个整体上的,零配制所需要的一些配制。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<!-- 这个东西为什么注了,是由于用rest full了, 不注会与下面的冲突
constant name="struts.convention.default.parent.package" value="crud-default" /-->
<!—下面的这个配制是对于action类的包的上一级一定要有这样一个包,也就是说action类不管你放在多深,其有必定要在action这样一个名字的包 ,一般来说,action下面应该就是某一业务的包名,某一业务包名下面就是一些XxxxAction.java(注意命名)文件-->
<constant name="struts.convention.package.locators" value="action" />
<!—这是一个返回页面的存放的一级文件夹,其下面的文件夹里可以是包函包业务的文件夹,各业务文件夹下面是jsp-->
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
<!—以上是对于struts2.0零配制所需要的配制,下面的就是rest所需的一些配制-->
<!—这是一个命名规则,如果value写的是Action,那么你的action请求java类就是XxxAction.java,如果是Control,那么就是XxxControl.java-->
<constant name="struts.convention.action.suffix" value="Action"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<!—下面这个是rest的一个定义好的,就不用管它了-->
<constant name="struts.convention.default.parent.package" value="rest-default"/>
<package name="crud-default" extends="convention-default">
<!-- 基于paramsPrepareParamsStack,增加store interceptor -->
<interceptors>
<interceptor-stack name="crudStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="crudStack" />
</package>
<!--
使用ZeroConfig + CodeBehind插件,实现约定大于配置的零配置文件风格.
特殊的Result路径在Action类中使用@Result设定.
<include file="test.xml"/>
-->
</struts>
二、 Web.xml
Strus2过滤并不是用*.action了,而是用下面的写法。其它地方没有改变
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
三、 需要比springside3更多要添加的jar包
ognl-2.6.11.jar
json-lib-2.1-jdk15.jar
struts2-rest-plugin-2.1.6.jar
xstream-1.3.1.jar