刚才我们已经知道了,在纵向上是webwork的mvc容器在起作用,在横向上是依赖于Spring的Ioc来管理类.
那么我们从最初的web.xml配置说起吧.
web.xml文件配置:
xml 代码
- <!---->xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <context-param>
- <param-name>contextConfigLocationparam-name>
- <param-value>/WEB-INF/classes/applicationContext.xmlparam-value>
- context-param>
-
- <filter>
- <filter-name>webworkfilter-name>
- <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcherfilter-class>
- filter>
-
- <filter-mapping>
- <filter-name>webworkfilter-name>
- <url-pattern>*.actionurl-pattern>
- filter-mapping>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
- listener>
-
-
- <taglib>
- <taglib-uri>webworktaglib-uri>
- <taglib-location>/WEB-INF/lib/webwork-2.2.4.jar taglib-location>
- taglib>
- web-app>
接着我们注意看form表单
其中action指向login.action意思是要它来处理,那么它在何方.请看xwork.xml的配置:
xml 代码
- <action name="login" class="LoginAction">
- <result name="success" type="dispatcher">
- <param name="location">/main.jspparam>
- result>
- <result name="loginfail" type="dispatcher">
- <param name="location">/index.jspparam>
- result>
- <interceptor-ref name="modelParamsStack" />
- action>
根据上面的配置我们有理由相信这个name为login的action会处理这个post的请求的.但是这个action的本质是什么呢?
有一点webwork基础的人都知道一般它可以是一个实现了Action接口的类.
这个时候请注意看 class="LoginAction"意思是说这个action实际上就是由loginAction 来处理了.为什么这里不是通常的
"com.xxxx.XXAction".因为从这里开始Ioc就接管了它. 在bean配置文件里我们定义了:
<bean class="com.starter.action.LoginAction" id="LoginAction"></bean><bean class="com.starter.action.LoginAction" id="LoginAction"></bean>注意一下webwork.properties的配置
<property name="objUser">
<ref bean="User"></ref></property>
<property name="userService">
<ref bean="UserService"></ref></property>
由此我们可以看到刚才的class="LoginAction"实际上LoginAction只是一个bean的id而已.具体是什么在配置文件中已经定义好了.并对该action类注入了2个属性.至此我们需要考虑的就只是业务逻辑与数据的具体操作实现了.此时Everyting is controled by Ioc.
- <bean id="LoginAction" class="com.starter.action.LoginAction">
- <property name="objUser">
- <ref bean="User" />
- </property>
- <property name="userService">
- <ref bean="UserService" />
- </property>
- </bean>
- <bean id="UserService"
- class="com.starter.service.impl.UserServiceImpl">
- <property name="userDao">
- <ref bean="UserDAO" />
- </property>
- </bean>
- <bean id="UserDAO" class="com.starter.dao.impl.UserDAOImpl2" parent="baseDAO"></bean>
- <bean id="User" class="com.starter.vo.User"></bean>
webwork.objectFactory = spring
webwork.tag.altSyntax = true
只要遵循面向接口的编程原则,下面的细节不提了.
暂放几天代码提供下载.请点这里