下面我们就用一段完整的代码来简单解析webwork的配置与使用
配置文件如下:
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>Acme Corp</display-name>
<!--
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> -->
<!-- START SNIPPET: example
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
-->
<!--
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>-->
<!-- END SNIPPET: example -->
<!-- START SNIPPET: compatibility
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
END SNIPPET: compatibility -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.action</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>
<!-- START SNIPPET: taglib -->
<!--
This typically isn't required, as the taglib is included in webwork.jar.
If you really need a taglib configuration within web.xml, copy webwork/src/java/META-INF/taglib.tld
to the WEB-INF directory as webwork.tld.
-->
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/taglib.tld</taglib-location>
</taglib>
</web-app>
xwork.xml
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN"
"http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<!-- method灞炴€х敤鏉ヨ缃搴旂殑鏂规硶鍚?-->
<action name="login" class="com.xxx.action.LoginAction" method="login">
<interceptor-ref name="params"></interceptor-ref>
<interceptor-ref name="validationWorkflowStack"></interceptor-ref>
<result name="success" type="dispatcher">
<param name="location">/main.jsp</param>
</result>
<result name="loginfail" type="dispatcher">
<param name="location">/index.jsp</param>
</result>
<result name="input" type="dispatcher">
<param name="location">/index.jsp</param>
</result>
</action>
</package>
</xwork>
validators.xml
<validators>
<validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
</validators>
Action
//此注释规范不规范,仅为讲解之用
//程序中对应的基本jar文件在图片中
package com.xxx.action;
import java.util.Map;
//import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
//import com.opensymphony.xwork.ModelDriven;
import com.xxx.model.LoginInfo;
//如果不实现Model, Action接口,getModel()方法略去。(注:getMedel()负责了参数的
//接受和保留)。略去getModel()的同时,对应域(loginInfo)必须有get、set方法
/**
* 继承ActionSupport,ActionSupport需要rife-continuations.jar的支持
* @author cong-px
*/
public class LoginAction extends ActionSupport {
private static final String LOGIN_FAIL = "loginfail";
LoginInfo loginInfo = null;
//在实现Action接口时此处方法名为execute()
//此处可以自定义方法名
public String login () throws Exception {
if("cong".equalsIgnoreCase(loginInfo.getUsername())&&
"peixue".equalsIgnoreCase(loginInfo.getPassword())) {
ActionContext ctx = ActionContext.getContext();
Map<String, String> session = ctx.getSession();
session.put("username", loginInfo.getUsername());
loginInfo.getMessages().add("Message1");
loginInfo.getMessages().add("Message2");
loginInfo.getMessages().add("Message3");
return SUCCESS;
} else {
loginInfo.setErrorMessage("UserName Error");
return LOGIN_FAIL;
}
}
/**
* 获得LoginInfo信息
* @return
*/
public LoginInfo getLoginInfo() {
return loginInfo;
}
public void setLoginInfo(LoginInfo loginInfo) {
this.loginInfo = loginInfo;
}
}
对应的验证文件
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="loginInfo.username">
<field-validator type="requiredstring">
<message key="USERNAME_REQUIRED">username must'nt null!</message>
</field-validator>
</field>
</validators>
国际化
package_en_US.properties
USERNAME_REQUIRED=username is not null!!
package_zh_CN.properties
USERNAME_REQUIRED=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.
此时为汉字对应的二进制编码.可由Eclipse的插件自动转化.(若谁不知道,可邮件给我:)
LoginInfo
package com.xxx.model;
import java.util.LinkedList;
import java.util.List;
public class LoginInfo {
private String username;
private String password;
private String errorMessage;
private List<String> messages = new LinkedList<String>();
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public List<String> getMessages() {
return messages;
}
}
程序结构如图所示:
如需要完整jar文件,我可转发给他.
- 大小: 8.4 KB
分享到:
相关推荐
"浅析Java企业开发" 本文将对Java企业开发的现状和发展趋势进行探讨,并对Struts、Hibernate、MyBatis和Spring这些开源框架进行分析。 首先, Java企业开发存在技术陈旧、保守,交付周期长,对新技术、新趋势的...
JSP安全编程实例浅析、JSP编程进度条设计实例、JSP的运行内幕、JSP和IIS的最佳解决方案实例分析、jsp内置对象--session对象和out对象、JSP中request属性的用法、用WebWork、JSP、Velocity建立注册页面、在JSP中使用...
它基于Webwork的设计思想,同时融合了Struts1的优点。Struts2的出现,让众多开发者和用户对其产生了浓厚的兴趣。Struts2教程系列旨在帮助读者快速入门并掌握Struts2框架的使用,特别适合那些希望在最短时间内了解...
- **Struts2起源**:Struts2并非一个全新的Web框架,而是建立在WebWork框架设计理念之上,融合了Struts1的优点而形成的一个框架。可以说,它是Struts1与WebWork框架的结合体。 - **Struts2的吸引力**:由于其优秀的...
- **起源与发展**:Struts2并非一个全新的框架,而是基于Struts1和WebWork的优点结合而成的一个框架。它继承了Struts1的一些特性,同时吸收了WebWork的核心设计理念。 - **优势特点**:相比于Struts1,Struts2提供了...
Struts2是一种基于MVC(Model-View-Controller)架构的开源Web应用框架,它以WebWork框架的设计理念为核心,同时融合了Struts1的优点,旨在提供一个更加灵活、高效且易于使用的Web开发解决方案。自其诞生以来,...
- **起源与发展**:Struts2并非新生事物,而是建立在Struts1和WebWork基础上的一个Web应用框架。它融合了两者的优势,提供了更为强大的功能支持。 - **设计理念**:以WebWork的设计思想为核心,继承Struts1的优点,...
- **Struts2的由来**:Struts2是基于WebWork框架的思想,并吸收了Struts1的优点发展而来的一种Web应用框架。它既不是WebWork也不是Struts1的简单替代品,而是一种全新的框架,融合了两者的优势。 - **Struts2的特点*...
它最初由WebWork框架发展而来,并结合了Struts 1的优点,提供了更加优雅的MVC(模型-视图-控制器)实现。Struts2以其简便的配置、强大的功能和良好的扩展性而受到开发者的青睐。 在Struts2框架中,主要的技术概念...
它是Struts1的一个重大升级版本,吸取了Struts1的优点并融合了WebWork框架的核心设计理念。 - **设计理念**: - **核心思想**:以WebWork的设计思想为基础,结合Struts1的优点。 - **目标**:提供更灵活、易用且...
- **起源与发展**:Struts2并非新生事物,而是建立在Struts1和WebWork基础上的一个Web应用框架。它融合了两者的优势,提供了更为强大的功能支持。 - **设计理念**:采用MVC(Model-View-Controller)架构模式,将...
它继承了Struts1的一些优点,并且吸收了WebWork框架的设计思想,形成了自己独特的优势。Struts2不仅支持传统的MVC架构,还引入了许多新的特性,如拦截器、OGNL表达式引擎、类型转换和数据验证等。 #### 二、Struts2...