说明:为了增加对框架的了解和应用面前正在学习webwork框架。之前也学习了主流的ssh框架,总体来说一接触给我的感觉webwork和struts2及其相似,所以觉得更有必要通过学习webwork来和struts进行对比学习和应用。webwork号称是要超越struts把握web MVC开发未来的框架,关于webwork的介绍学习资料很多可以自己搜索。
我学习的路径是通过webwork in action这本书籍,下面粘上我笔记。
1、架构
1.架包、配置文件(webwork-default.xml、xwork.xml、webwork.properties)、控制
器
2、基础配置
web.xml
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/lib/webwork-2.2.7.jar</taglib-location>
</taglib>
xwork.xml
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<default-interceptor-ref name="completeStack"/>
<action name="firstAction"
class="com.webwork.demo.action.FirstAction">
<result name="success">index.jsp</result>
</action>
</package>
控制器中的设计和struts2一样,直接继承Action类实现excute方法
2、webwork标签
1、<%@ taglib uri="webwork" prefix="ww"%>页面引用
<ww:property value="message"/>
2、<ww:if test="messgae!=null">
3、基本类和方法
类:
1、控制器可以继承Action类或者ActionSupport类
方法:
2、addFieldError();
addFieldErrot("name","错误信息");
在jsp页面或者错误信息:<ww: if test="fieldError['name']!=null">
4、action、result、interceptor
1、result的类型可以选择不同的模版jsp、Velocity、FreeMarker-》servlet分发请求模版类型
2、interceptor是一个特殊的对象,围绕着action和result的执行过程,并且在action执行之前被调用(也有可能在之后被调用),控制器控制这action是否被执行或者如何被执行。可以将多个interceptor组合构成一个interceptor栈。
3、action:基本属性有名称name和对应的类class,名称是类的映射
action的定义和访问
1、还为action可以指定method属性,即action的别名
2、在没有配置别名的情况下可以通过action!method.action访问控制器
3、通过使用param标签,action能够被自定义或者参数化。
<action name="firstAction" class="com.webwork.demo.action.FirstAction"
<result name="success">index.jsp</result>
<param name="url">http://baidu.com/service.wsdl</param>
<param name="timeout">30</param>
</action>
4、result:result的配置有两部分组成,一个是result映射,另一部分是result类型
1、类型type:redirect、dispatcher定义
<result-types>
<result-type name="dispatcher" class="" default="true"/>//将dispatcher设置为默认的result类型
<result-type name="redirect" class=""/>
</result-types>
2、利用全局result映射减少重复配置(定义在package里面)
<package name="default" extends="webwork-default">
<golbal-results>
<result name="login" type="redirect">login.jsp</result>
<result name="save">save.jsp</result>
</golbal-results>
</package>
5、interceptor
1、在package中定义一组拦截器(拦截器组)
<intercptors>
<interceptor name="time" class=""/>
<interceptor name="login" class=""/>
</interceptors>
2、使用拦截器<action>和<interceptors>是同意级别
在<action>标签内部引用,和<result>标签同以级别
<interceptor-ref name="time"/>
<interceptor-ref name="login"/>
3、拦截器栈
<intercptors>
<interceptor name="time" class=""/>
<interceptor name="login" class=""/>
<interceptor-satck name="myStack">
<interceptor-ref="time"/>
<interceptor-ref="login"/>
</interceptor-stack>
</interceptors>
4、引用拦截器栈
<interceptor-ref name="myStack"/>
5、默认的拦截器使用在<action>同级别之上引用,其他action将可以不用再单独引用拦截器。但是如果单独为action定义了拦截器那么将会覆盖默认的拦截器。
基础配置就先到这了!不好勿喷