webwork
Xwork 简洁、灵活功能强大,它是一个标准的command模式实现,并且完全从web层脱离出来。xwork提供了很多的核心功能。webwork建立在xwork之上,处理HTTP的响应和请求。webwork2使用ServletDispatcher将HTTP的请求的变成Action,session,application范围的映射,request请求参数映射。webwork2的视图表示方法有:JSP,Velocity,freemarker,jasperreports,XML。
我的第一个webwork程序:
1.新建项目webworkfirst(文件夹,在D:/tomcat5.0/webapps目录下面),新建D:/tomcat5.0/webapps、webworkfirst/WEB-INF目录,把web.xml,webwork.tld放在该目录下。
项目框架如下:
D:/tomcat5.0/webapps/webworkfirs
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/web.xml
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/webwork.tld
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/classes
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/classes/components.xml
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/classes/webwork-default.xml
D:/tomcat5.0/webapps/webworkfirst/WEB-INF/classes/xwork.xml
2.新建Action类:(HelloWorldAction.java)
package helloworld;
import com.opensymphony.xwork.Action;
public class HelloWorldAction implements Action{
String greeting;
public String getGreeting(){
return greeting;
}
public String execute() throws Exception{
greeting = " Hello World!";
return SUCCESS;
}
}
3.xwork.xml:
<!DOCTYPE xwork
PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<default-interceptor-ref name="defaultStack"/>
<action name="hello" class="helloworld.HelloWorldAction">
<result name="success" type="dispatcher">
<param name="location">/greeting.jsp</param>
</result>
<interceptor-ref name="defaultStack"/>
</action>
</package>
</xwork>
4.web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>WebWork 2.0 Example App</display-name>
<!-- <filter>-->
<!-- <filter-name>webwork</filter-name>-->
<!-- <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>-->
<!-- </filter>-->
<filter>
<filter-name>container</filter-name>
<filter-class>com.opensymphony.webwork.lifecycle.RequestLifecycleFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>container</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
-->
<listener>
<listener-class>com.opensymphony.webwork.lifecycle.ApplicationLifecycleListener</listener-class>
</listener>
<listener>
<listener-class>com.opensymphony.webwork.lifecycle.SessionLifecycleListener</listener-class>
</listener>
<servlet>
<servlet-name>webwork</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>
<servlet>
<servlet-name>validation</servlet-name>
<servlet-class>com.opensymphony.webwork.validators.ValidationServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>freemarker</servlet-name>
<servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>validation</servlet-name>
<url-pattern>/validation</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/webwork.tld</taglib-location>
</taglib>
</web-app>
5.greeting.jsp
<%@ taglib prefix="ww" uri="webwork" %>
<html>
<head>
<title>First WebWork Example </title>
</head>
<body>
<p>
<ww:property value="greeting"/>
</p>
</body>
</html>