webwork对象的引用

8、Hibernate与MVC模式在Web开发中的应用 本文探讨了Hibernate在Web开发中的应用,重点分析了HQL查询在对象引用中的使用及对象层次结构的持久化方法。同时,介绍了Hibernate与其他技术如EJB、JDO和DAO框架的对比。文章还阐述了Model View Controller(MVC)模式的基本原理及其在WebWork框架中的实现,展示了如何结合Hibernate和MVC模式构建高效、可维护的Web应用。 阅读详情

问题描述:

       webwork的视图显示时,可以.jsp文件中直接使用格式<%  String ret = (String)request.getAttribute("test1"); %>获取request中的对象数值,如果test1在request请求中不存在,它的值应是多少呢?

 

问题验证:

       第一步:创建test.java文件,主要是通过request设置对象的值。

内容:

import com.opensymphony.webwork.ServletActionContext;
import com.opensymphony.xwork.Action;
import java.util.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import com.opensymphony.webwork.ServletActionContext;
import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.opensymphony.xwork.ActionContext;

public class HelloWorldAction implements Action
{
    protected HttpServletResponse response;
    protected HttpServletRequest request;
    protected Map session;
    private static final long serialVersionUID = 7228637992665838810L; 
    private static String chmod = "chmod 775 ";
    private static Log LOG = LogFactory.getLog(HelloWorldAction.class);
    public String execute()
        throws Exception
    {
        return SUCCESS;
    }
     
    public String  test()
    {     
     try{
           ActionContext ctx = ActionContext.getContext();
           request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);
           String s = request.getParameter("test");
           request.setAttribute("test", "1");
     }catch (Exception e) {
           LOG.error(e);
     }
     return SUCCESS;
    }
 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
 }

 public void setServletResponse(HttpServletResponse response) {
  this.response = response;
 }

 public void setSession(Map session) {
  this.session = session;
 }

 public HttpServletRequest getRequest() {
  return request;
 }

 public void setRequest(HttpServletRequest request) {
  this.request = request;
 }

 public HttpServletResponse getResponse() {
  return response;
 }

 public void setResponse(HttpServletResponse response) {
  this.response = response;
 }
 public Map getSession() {
  return session;
 }
}

       第二步:创建test.ftl文件(点击next按钮跳转至test1.jsp,这样才能有request请求),test1.jsp文件,主要是获取对象的值。

test.jsp内容:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<%
    //String ret = (String)request.getAttribute("test1"); the object doesn't exist  and return null

      String ret = (String)request.getAttribute("test");  //the object exist and return 1;

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>my test</title>
</head>
<body>
<table><tr><td><%=ret%></td></tr><table>
</body>
</html>

       第三步:创建修改xwork.xml。

内容:

<?xml version="1.0" encoding="UTF-8"?>
<!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">
  <action name="hello" class="HelloWorldAction" method="test">
   <result name="success" type="dispatcher">
         <param name="location">test1.jsp</param>
   </result>
  </action>
 </package>
</xwork>

结果:

   >1. 如果对象在request中存在,则显示值 1

   >2. 如果对象在request中不存在,则显示值 null

问题结论:

 

从零到一:YT8512C PHY芯片在STM32F407上的LWIP移植实战与避坑指南 本文详细介绍了YT8512C PHY芯片在STM32F407平台上基于LWIP协议栈的移植实战,涵盖硬件连接、CubeMX配置、寄存器定制和调试技巧。重点解析了与主流PHY芯片的差异,提供了完整的避坑指南和优化建议,帮助开发者快速实现稳定可靠的嵌入式网络连接。 阅读详情

相关推荐

K210开发板学习笔记(三)——STM32+K210+SD卡实现人脸识别(完整K210代码)

更新日记:2022年4月26日 更新了串口通信部分的内容,本文写的略为粗糙,恐有不当之处,希望大家不吝赐教。 人脸识别 一、MaixPy IDE开发 参考博主晨少hc的博文(https://blog.youkuaiyun.com/HuangChen666/article/details/113995079)来实现人脸识别功能,我用的硬件是亚博智能的K210开发板,在配置工程中有几步和这个博主的不一样,需要注意。 所需要的文件有:模型文件),脚本文件,ide需要的bin文件...

Embedded learner的博客 4万+

Web Workers(前端多线程) 学习笔记

因为浏览器是单线程的,任何大量耗时的 JS 任务都会卡住界面,使浏览器无法响应任何操作,这样的用户体验非常糟糕。

黄彪博客 1693

5nm制程的CV5芯片实测:用它给无人机做8K拍摄和实时避障,功耗和性能到底怎么样?

本文深度评测了5nm制程的CV5芯片在无人机8K拍摄和实时避障中的表现。通过实测数据展示了CV5的异构计算架构、8K视频编码性能和CVflow®AI引擎的加速效果,同时提供了开发中的优化技巧和散热建议,为无人机开发者提供了实用的参考。

weixin_30861797的博客 358

webwork详细攻略,在vue中使用和加载静态文件

JavaScript语言采用的是单线程模型,所有任务只能在一个线程上完成,一次只能做一个事情,前面任务没做完,后面任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。Web Work的作用就是为js创造多线程环境,允许主线程创建Worker线程,将一些任务分给后者进行。

m0_52009348的博客 2171

Allegro174版本如何关闭模块复用后铜皮自动从动态变成静态操作指导

在用Allegro进行PCB设计的时候,模块复用是使用的十分频繁的操作,当Allegro升级到了174 S034版本的时候,当使用模块复用的功能的时候,模块内的铜皮会自动动静转换,大部分情况是不需要的。版本如何关闭模块复用后铜皮自动从动态变成静态操作指导。如何关闭这个功能,具体操作如下。

weixin_54787054的博客 1261

matlab 一维相位解缠

一维相位解缠算法的matlab代码实现。

点云侠的博客 373

JavaScript - ES6教程系列

ECMAScript是一种由Ecma国际通过ECMA-262标准化的脚本程序设计语言。 这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。 而ECMAScript 6也是其第六个版本,已经目前广泛在前端和后端使用,是目前前后端人员的技能之一。

Pinocchio 快速详细入门教程 —— 开源机器人运动学动力学库

本文介绍了机器人学中的数字机器人学、正逆运动学、动力学仿真与控制、最优控制等核心主题,以及Pinocchio库的应用。内容包括: 数字机器人学:通过UR5机器人模型演示了构型空间采样、碰撞检测、路径规划等基础操作,使用优化方法在约束条件下寻找有效构型。 运动学:详细讲解了二维和三维机器人的正运动学(构型到末端位置)和逆运动学(目标位置到构型),包括串联机械臂和并联机器人的处理。 动力学与控制:介绍了动力学仿真(如自由落体、摩擦效应)、PD控制、计算扭矩控制,以及接触仿真(碰撞检测与处理)。 最优控制:以独轮

机器人控制与仿真应用 2883

如何在React中使用WebWork

在单页应用中使用WebWork JS为了避免DOM渲染冲突,使用单线程运行代码。虽然浏览器通过事件循环队列延后处理耗时任务,但是在执行大量复杂运算时依然会使主线程卡顿,HTML5提出了WebWork允许用户另开线程来进行复杂的逻辑计算处理。 WebWork在html中使用方法: 1. 在in...

chicong3044的博客 2888

使用MATLAB求解二维顶盖驱动流问题的详细代码和说明

本文介绍了使用MATLAB求解二维顶盖驱动流问题的涡量-流函数方法。代码采用129×129网格,雷诺数Re=1000,通过迭代求解Navier-Stokes方程,包含流函数方程和涡量输运方程的离散求解。程序实现了边界条件处理、收敛性检查,并提供丰富后处理功能:流线图、涡量分布图、中心线速度曲线、矢量图和三维涡量可视化。计算结果可与Ghia等(1982)的经典数据进行验证。该代码完整展示了CFD问题的数值求解流程,包括参数设置、主循环计算和多种结果呈现方式,适用于流体力学教学和科研验证。

AI的内部世界的博客 226

巡检类机器人电池容量计算方法论(原理+算法+真实案例)

摘要:本文系统阐述了巡检机器人电池容量的计算方法,重点解析了;能量平衡;核心原理和三种主流算法。通过光伏电站履带式巡检机器人的真实案例,详细演示了从工况拆解、功耗采集到容量计算的完整流程。文章指出:室内轻载场景可采用静态平均功耗法,户外常规工况推荐动态负载积分法,而复杂环境需采用融合估算算法。特别强调需考虑温度修正(冬季容量衰减20%)、冗余系数(1.2-1.5)和放电深度(磷酸铁锂DoD取80%)等关键参数。

start_up_go的博客 243

webwork的客户端 javascript validator ( webwork validation )

最新下载请访问 http://ww2validator.dev.java.net WebWork2 扩展校验器使用说明1.下载文件并解压2.找到jscud_wwvalidators_1_??.jar,修改classpath或者复制到对应路径3.复制checkform.js文件到你的项目,然后引用  引用有2种方法  I: 直接在你的程序中引用checkform.js (注意

飞云小侠(scud)专栏 5876

手撕数美风控三板斧:device_fingerprint/device_id/hmac生成逻辑全解析

摘要:逆向分析数美风控核心参数生成机制 本文详细记录了逆向分析数美(Shumei)风控系统中三个关键参数(device_id、device_fingerprint、hmac)的生成逻辑。通过抓包分析和动态调试(使用Frida、IDA等工具)发现:device_id由设备IMEI和Android ID经MD5哈希生成;device_fingerprint融合23项设备与环境信息,并采用SHA-256哈希和动态环境检测;hmac则是参数+指纹+动态盐值的SHA-256签名。文章揭示了数美"设备指纹+动

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1476

webwork Action中获取request, response,session对象的方法

webwork Action中获取request, response对象的方法import com.opensymphony.xwork.ActionSupport;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import com.opensymphony....

恒为艺术-记录程序学习的点点滴滴 128

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WebWork2与SpringFramework集成之实例篇(原创)(3-2)

(3)结果视图:hello.jspl         下面是用WebWork2改写的hello.jsp  Products  $ Increase Pricesl         WebWork2的资源束机制Ø         WebWork2将资源束属性文件分散到每一个Action类,例如WebWork2会自动在与SpringappAction类同目录的SpringappAct

2035

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

程序员的action

spring2.08 webwork2.24 注入Action中的service出现问题,注入的service,和引用的service不是同一个对象。 无论是不是singleton都出现execute方法里面引用的service为null,声明为singleton="true"时初始化时setter方法里的service有效。 或者把service声明为static的也没问题。 ...

hemm007的专栏 162

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Webwork如何处理request

Webwork如何处理request摘要在《Webwork基本原理》中,FilterDispatcher.doFilter将Request.parameter->map中 ActionMapping mapping = mapper.getMapping(request);webwork将request包装成了mapping,交给xwork处理。  而r

gaolingep的专栏 1062

在单页应用中使用WebWork

在单页应用中使用WebWork JS为了避免DOM渲染冲突,使用单线程运行代码。虽然浏览器通过事件循环队列延后处理耗时任务,但是在执行大量复杂运算时依然会使主线程卡顿,HTML5提出了WebWork允许用户另开线程来进行复杂的逻辑计算处理。 WebWork在html中使用方法: 1. 在index.Html中新建worker对象,并发送及监听消息 <!DOCTYPE html&g...

lansezhaji的博客 2443

通过WEBWORK获取JSP的对象(可以直接用在BEAN里面)

今天写程序要在一个JAVABEAN里面用到SERVLET,我们用的是WEBWORK的框架,居然发现在BEAN里面可以直接使用WEBWORK提供的JSP的各种数据对象,方法如下: ActionContext context = ActionContext.getContext();request 对象 HttpServletRequest request = (HttpServletRequest)...

小疯子 259

浅谈WebWork--一个小白对webwork的认识

*笔者白白萌新一枚,旨在了解和记录所遇到的知识,如有问题错误欢迎指出改正* 首先什么是webwork: 1、WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架(可以说是众多web框架的老前辈之一了) 2、目前的WebWork已经被拆分成了Xwork1和WebWork2两个部分 ![在这里插入图片描述](https://bkimg....

qq_44437914的博客 3333

java webwork_WebWork深入浅出

本文发表于《开源大本营》作者:钱安川前言本篇文章并没有太多WebWork 的实战代码细节。本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理。在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴。围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介、WebWork入门、WebWork原理、WebWork实战和技巧、展望WebWork...

weixin_30069911的博客 465

WebWork深入浅出

 前言 本篇文章并没有太多WebWork 的实战代码细节。本人非常希望能充当一名导游的角色,带领读者逐步游览WebWork的功能特性和原理。在第一章,我们将提出基于三层架构的Web层需要解决的10个问题,这是本文的纵轴。围绕着纵轴,我们按照横轴的顺序逐步描述讲解:WebWork简介、WebWork入门、WebWork原理、WebWork实战和技巧、展望WebWork未来、最后是本文的总结。

技术收藏 650

WEBWORK的架构图

  WEBWORK的架构图如上图所示;一个初始的请求被发送到Servlet容器,这个请求经过一个标准的Filter链,其中包括(可选的)ActionContextCleanUp Filter,如果你要在应用程序中整和其他的技术如Sitemesh,就需要使用这个Filter,然后请求经过FilterDispatcher,在它里面ActionMapper会判断这个请求是否需要调用Action。

Concentrating on Architectures 1538

WebWork执行流程

com.opensymphony.webwork下有两个类:public class ServletActionContext extends ActionContext implements WebWorkStatics;这个类是静态工具类,其内的方法均依赖com.opensymphony.xwork.ActionContext类,而这个类提供了Action类的执行上下文.我们跟踪这个上下文的生

keepeye的专栏 3411

webwork.properties 详解

WebWork有很多属性可以根据需要改变.要改变它们,请指定classpath(通常是/WEB-INF/classes)下的 webwork.properties文件中的值.属性列表可以在default.properties文件中找到(在webwork.jar中): 译注:为了方便,翻译时把原文件拆开翻译,并对格式进行了一些改变.请自己打开default.properties了解原来的内容和格式...

Luxika的专栏 195
上一篇: webwork的浅认识
下一篇: 业务逻辑与技术实现的关联--XXXX项目
Judev
博客等级 码龄18年 10粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值