webwork是struts2的前身,是一个mvc框架,使用方法和struts2很相似。研究webwork已经没有太大的意义,但是对于理解struts2的核心机制还是有一定意义的。下面介绍如何通过webwork2来搭建一个简单的demo。

第一步:建立maven工程,引入webwork依赖。

<dependency><groupId>com.opensymphony</groupId><artifactId>webwork</artifactId><version>2.2.6</version>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency>

第二步:这里配置一个User实体,用来做简单登录和注册。

User.java

package com.xxx.webwork.entity;public class User {private String username;private String password;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;}}

LoginAction.java

package com.xxx.webwork.action;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ModelDriven;
import com.xxx.webwork.entity.User;public class LoginAction implements Action,ModelDriven {private User user = new User();public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String execute() throws Exception {if(user.getUsername().equals("admin")&& user.getPassword().equals("123456")) {return SUCCESS;}else {  return ERROR;}}@Overridepublic Object getModel() {return user;}}

第三步:配置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="webwork" extends="webwork-default"><action name="admin" class="com.xxx.webwork.action.AdminAction"><result name="success" type="freemarker"><param name="location">/WEB-INF/content/admin/index.html</param></result></action><action name="login" class="com.xxx.webwork.action.LoginAction"><result name="success" type="freemarker"><param name="location">/success.html</param></result><result name="error" type="freemarker"><param name="location">/error.html</param></result><interceptor-ref name="model-driven"/><interceptor-ref name="params"/></action><action name="regist" class="com.xxx.webwork.action.RegistAction"><result name="success" type="freemarker"><param name="location">/success.html</param></result></action></package>
</xwork>

第四步:配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>webwork</display-name><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list><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>
</web-app>

第五步:编写前台页面

index.html

<!doctype html>
<html><head><meta charset="UTF-8"/></head><body><div id="container"><div class="main"><form method="post" action="login.action"><div class="box-item"><label>用户名:</label><input type="text" name="username"/></div><div class="box-item"><label>密码:</label><input type="password" name="password"/></div><div class="box-item"><input type="submit" value="登录"/></div></form></div><a href="register.html">注册</a></div></body>
</html>

success.html

<!doctype html>
<html><head><meta charset="UTF-8"/></head><body><div id="container"><h2>hello,welcome,${user.username}</h2></div></body>
</html>

error.html

<!doctype html>
<html><head><meta charset="UTF-8"/></head><body><div id="container"><h2>oh,sth is wrong.</h2></div></body>
</html>

启动web服务器,访问首页,出现登录页:

输入admin/123456,点击登录,会跳转到成功页面,同时,显示用户名admin。如果用户名密码不对,跳转到错误页面。

 错误页面:

LoginAction中引入了模型驱动ModelDriven,这样,页面上的参数可以直接通过username,password的名字传过来封装成User对象,否则需要通过user.username,user.password来传过来。涉及到传参,一般需要在action中声明页面对应的参数。还有一种做法,就是通过request.getParameter("username")的方式获取参数,下面给出RegistAction的代码,通过该代码,了解一下如何通过request的方式获取参数。

package com.xxx.webwork.action;
import javax.servlet.http.HttpServletRequest;
import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
import com.xxx.webwork.entity.User;
public class RegistAction implements Action{@Overridepublic String execute() throws Exception {HttpServletRequest request = ServletActionContext.getRequest();String username =(String) request.getParameter("username");String password = (String) request.getParameter("password");System.out.println("regist : "+username+" --> "+password);User user = new User();user.setUsername(username);user.setPassword(password);ActionContext.getContext().put("user", user);return SUCCESS;}}

这种方式也就是传统Servlet获取参数的方式。为此需要在项目中引入javax.servlet:javax.servlet-api的依赖。

另外页面使用freemarker作为模板,传统的freemaker需要.ftl文件后缀,但是我们如果使用.html文件作为freemarker模板,好像也是可以的。本例中的页面全部就是html文件。

xwork.xml的配置和struts.xml的配置基本类似,但是需要引入默认的webwork-default.xml配置文件。

webwork简单示例相关推荐

  1. python文本处理实例_Python 文件处理的简单示例

    这篇文章主要为大家详细介绍了Python 文件处理的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 相关的AP ...

  2. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  3. python简单单元测试示范卷_Python 单元测试的简单示例

    这篇文章主要为大家详细介绍了Python 单元测试的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 以前我是不 ...

  4. python二分法求解_Python使用二分法求平方根的简单示例

    这篇文章主要为大家详细介绍了Python使用二分法求平方根的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 使 ...

  5. Unity 简单示例代码和向导/Unity Aplication Block

    Unity 简单示例代码和向导 关于Unity 的说明和下载地址,请访问[微软控制反转和依赖注入容器Unity 1.0发布] http://forum.entlib.com/Default.aspx? ...

  6. php定时刷新token,PHP 定时任务获取微信access_token的简单示例

    搜索热词 感兴趣PHP 定时任务获取微信access_token的简单示例的小伙伴,下面一起跟随编程之家 jb51.cc的小编来看看吧. 最近开发微信公众平台,公众号调用各接口时都需使用access_ ...

  7. python 搭建的http 动态服务器_Python 创建HTTP服务器的简单示例

    这篇文章主要为大家详细介绍了Python 创建HTTP服务器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  8. python简单装饰器_python装饰器的简单示例

    这篇文章主要为大家详细介绍了python装饰器的简单示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 装饰器的语法以 ...

  9. javascript worker 多线程 简单示例

    javascript worker 多线程 简单示例 项目结构 主线程 index.html <!DOCTYPE html> <html lang="en"> ...

最新文章

  1. Web前端开发笔记——第二章 HTML语言 第五节 图像标签
  2. Kubernetes pod状态出现ImagePullBackOff的原因
  3. Linux启动或重启网卡【命令】
  4. CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
  5. MongoDB 插入文档
  6. 【论文速读】ChengLin_Liu_ICCV2017_Deep_Direct_Regression_for_Multi-Oriented_Scene_Text_Detection...
  7. unity3d自动寻路教程
  8. 1 Centos7安装(jdk8)Tomcat9并设置为开机启动
  9. org.jgroups.ChannelException: failed to start p...
  10. Prototype使用Class
  11. 最小生成树相关知识链接
  12. android电视开发远程开关机,一种电视电脑一体机及其实现远程开关机控制的方法...
  13. Inno Setup 系列之自定义卸载文件名称的脚本
  14. js pdf文件 如何调用打印机打印_js直接打印pdf文件内容
  15. renderTo和applyTo的区别
  16. 使用百度批量拾取坐标点-汇总
  17. aka名字_中国新说唱:马来王子尤长靖,尤长靖自编AKA名字
  18. Android apk闪退问题
  19. BBR:Congestion-Based Congestion Control解读
  20. 小技巧:如何创建公共邮箱?教育邮箱创建哪个好?

热门文章

  1. BeanUtils与BeanCopier的区别
  2. java 分析英文段落,查找、统计单词
  3. C++ iterator用法
  4. 在此计算机上运行应用程序不可选,win10提示此应用无法在你的电脑上运行若要找到适用怎么解决...
  5. 解决加了登录过滤器不显示图片的问题
  6. OpenGL API - glViewport
  7. 基于web的房屋房源中介管理系统
  8. 超凡 win7 服务器正在连接,win7 64位 ramos内存系统视频教程——p驱单镜像 wimboot压缩,指针、wim在同一vdf内...
  9. 或许GitHub最好的选择真的是微软
  10. Paging3、Room使用,1、从本地Room数据库加载 2、直接网络获取数据加载 3、网络访问数据到Room数据库再加载 4、封装使用