*笔者白白萌新一枚,旨在了解和记录所遇到的知识,如有问题错误欢迎指出改正*

首先什么是webwork:

     1、WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架(可以说是众多web框架的老前辈之一了)2、目前的WebWork已经被拆分成了Xwork1和WebWork2两个部分

webwork处理流程:


既然webwork为web框架的先行者,并在当时占据一席之地肯定有过人之处
而其中有以下几个自认为是webwork的标志性核心功能概念:

1、Action类:
 在webwork中一般Action的类需要实现Action接口,或者直接继承基础类ActionSupport,他们会其中一般而言,一个action对应着一次请求,它们会实现默认的execute方法,并返回一个字符串结果Result
2、Results:
 Action类的返回值或者说是一个结果页面的定义。其中Result Type表示如何以及用哪种视图技术展现结果。(WebWork支持多种视图技术 jsp、FreeMark等)
3、拦截器(interceptor)
     实现Interceptor接口的拦截器,代码部分在intercept方法中实现。实际上一个拦截器就是在xwork.xml文件中定义的一个无状态Java类它至少要实现XWork的**com.opensymphony.xwork.interceptor.Intercepto**r接口**补充:**:有无状态指的是是否有数据存储功能。有状态的类,就是类有实例变量的对象 ,可以保存数据,因此也是非线程安全的。在不同方法调用间不保留任何状态。而无状态的类对象就是一次性操作,不能保存数据。因为其没有实例变量的对象 .不能保存数据,是不变类也是线程安全的。在intercept方法中,可以直接返回一个Result字符串,这样整个执行直接“短路”(很少使用)所以,一般都会在这个方法里调用参数对象invocation的invoke方法,并返回这个方法执行的结果。这样会持续执行后面的拦截器方法以及Action的execute方法等。
4、xwork配置文件
改类文件的作用:
xwork.xml是webwork的核心配置文件的所在,与web.xml类似在web服务器启动的时候调用
*补充:web服务器启动的时候会调用的一个配置文件,我们通过在配置文件告诉web服务器,在启动的时候,还需要加载启动哪些东西*
其主要的功能是在遇到某个的请求时,将其分配到哪个指定的类下去处理
,并对处理结果的页面也在此处进行分配
例:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN""http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork><!-- default文件是webwork提供的,它描述了webwork在工作过程中用到的各个Servlet的返回值类型、各拦截器的名称及其相对应的类  -->
<include file = "webwork-default.xml" /><!--namespace 简单而言就是多了一层访问路径 --><!-- 其主要的作用是在项目较为庞大,对action进行管理和区分-->
<package name = "default" extends = "webwork-default" namespace="login"><!--此时定义了具体的访问路径问 login/loginer.action--><!--并在此处指定了LoginAction这个类进行处理--><action name = "login" class = "com.ggg.action.LoginAction" ><!--result为定义结果页,此处定义访问的成功界面为loginResult.jsp--><result name = "success" ><param name="location">/loginResult.jsp</param></result ><!--result为定义结果页,此处定义访问的失败界面为error.jsp--><result name = "error" ><param name="location">/error.jsp</param></result ><interceptor-ref name = "params" /></action >
</package>
</xwork>
web应用-流程(例)

那么接下来我将用一个非常简单的例子来演示
运行结果:
index.jsp:
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

login 提交 `

xwork.xml:如上
Login.action:


```java
package com.ggg.action;import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ModelDriven;public class LoginAction implements Action, ModelDriven {private String loginer;private String loginResult;@Overridepublic String execute() throws Exception {if(loginer.equals("admin")){loginResult = loginer+"登录成功!";return SUCCESS;}else{return ERROR;}}@Overridepublic Object getModel() {return null;}public String getLoginer() {return loginer;}public void setLoginer(String loginer) {this.loginer = loginer;}public String getLoginResult() {return loginResult;}public void setLoginResult(String loginResult) {this.loginResult = loginResult;}
}

success.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--在结果页面中使用了 WebWork 标签库。我们用到的是 property 标签,可以通过此标签可以返回action中对应的属性-->
<%@ taglib prefix = "ww" uri = "/webwork" %>
<html>
<head><title>SUCCESS</title>
</head>
<body>
<h3><ww:property value="%{loginResult}"/></h3>
</body>
</html>

在上述的案例中,我们可以看到我们并没有什么多余的获取参数的操作,就可以获取到前端输入的数据,他是如何实现的呢,实际上它是通过值堆栈和表达式语言来实现的,当一个action携带者登录信息loginer请求时,相应的表达式就会对其进行解析,并执行对应的setLoginer()方法(值得一提的是,set方法在execute 之前就已经执行了)
具体详细内容请见如下连接:
添加链接描述

浅谈WebWork--一个小白对webwork的认识相关推荐

  1. 编程浅谈-以一个初出茅庐的Java程序员视角

    编者是一个从事Java开发的普通软件攻城狮,迄今为止,粗粗算来不过刚刚进入编程的世界不过两年,但在这两年的光阴里,每当我抬头仰望星空(苦命加班)时脑海里总有这样一个疑问--"什么是编程&qu ...

  2. 浅谈接到一个别人做一半的项目如何去接手。

    在工作中难免会遇到一些接手别人做到一半的项目(并且没人讲代码的时候),这时候我们应该怎么去分析这个项目呢?(VUE) 首先拿到别人的代码的时候去分析以下几个事情.这里使用VUE项目举例, 一.首先观察 ...

  3. python对初学者的看法_python学习之道(1)——新手小白对print()函数的理解,Python,之路,一,浅谈...

    Python学习之路(一) --浅谈新手小白对print()函数的理解 写在前面 笔者目前为在校大四学生(某末流211),大学生活即将画上终点,然而却还没有真正精通一门语言,很是惭愧.在大学期间参加了 ...

  4. 高德地图只显示一个省_浅谈当下各种导航软件:高德地图、百度地图、腾讯地图...

    浅谈当下各种导航软件:高德地图.百度地图.腾讯地图,之前出门找不到路只能靠问路,现在我们生活中出现了各种各样的导航软件,甚至让用户出现了选择困难症,不知道选择哪一款软件比较号,在这里小编就要给大家来分 ...

  5. [2017.11.11特辑]以一个光棍节表白案例浅谈ECMAScript6模块化的使用方法

    双十一,购物节与光棍节,在这个特殊的日子里研究了一下模块化开发的我,突然想结合这个日子,以一个表白的例子浅谈es6模块化的用法. 在之前的 javascript 中一直是没有模块系统的,随着JavaS ...

  6. 浅谈SQL注入风险 - 一个Login拿下Server(转)

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:"老师你这SQL有注 ...

  7. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  8. 【python 笔记/小白快速入门python】python浅谈(一)犹抱琵琶半遮面

    python浅谈(一)犹抱琵琶半遮面 继浅谈(零)初识庐山真面目[https://blog.csdn.net/HarryOtter/article/details/90519877 ] 之后,终于窥得 ...

  9. 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...

    自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...

最新文章

  1. JAVA中的集合与排序
  2. css:中文词不断开,整体换行
  3. 使软件可二次开发_基于C++的?UG二次开发
  4. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫
  5. 最小生成树——Prim(普利姆)算法
  6. 教师计算机网络培训工作总结,教师培训工作的自我总结
  7. java蓝桥杯dfs_第七届 蓝桥杯决赛 Java B组 打靶 解题报告(DFS,回溯,全排列)-Go语言中文社区...
  8. rip协议中周期性广播路由信息的报文_距离矢量路由协议-RIP
  9. 关于原型污染漏洞的完整指南
  10. gcc/g++ 的参数总结(二)
  11. JS - 移动设备终端的touch事件
  12. Java的BIO,NIO和AIO的区别于演进
  13. 计算机专业英语字典aqq,最新的英语qq网名
  14. 【Scratch-动作模块】碰到边缘就反弹和翻转方式
  15. 企业信息化的若干原则性问题
  16. 视频流媒体直播平台运行报Only one usage错误原因排查分析
  17. 北京理工大学-嵩天python语言程序设计-9-Python计算生态概览
  18. 基于html+css的内容旋转
  19. strstr 函数介绍
  20. Appium用xpath定位掌阅APP导航页的跳过按钮(只有class和index)

热门文章

  1. python变量使用前必须声明_python变量不需要声明吗
  2. Python之父强烈推荐,Python3网络爬虫开发实战,爬虫入门必看书籍,豆瓣评分9.2
  3. Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous Vehicle Applications阅读
  4. element-plus table表格换行变色以及部分el自带样式的修改
  5. 简述 Hibernate 和 JDBC 的区别、优缺点
  6. 怎么屏蔽还有照片_在朋友圈发男神照片,忘了屏蔽父母,老妈的回应亮了…
  7. linux的filesystem
  8. idea启动项目报错:Process finished with exit code -1073741819 (0xC0000005)
  9. 智慧水务系统解决核心问题
  10. android指南针功能,足球竞猜平台 -官网