(Struts2)值栈(二)

为什么你的SiC MOSFET仿真不准?可能是离子注入的‘沟道效应’在捣鬼(Silvaco BCA模块详解) 本文深入分析了SiC MOSFET仿真中离子注入沟道效应的关键影响,揭示了Silvaco BCA模块在模拟SiC晶向和角度参数时的核心设置要点。通过详细解析晶圆偏切与注入角度的等效关系,提供优化MOSFET沟道区注入仿真的五步实战方法,帮助工程师将阈值电压仿真误差从26%降低到5%以内。 阅读详情

6、在JSP中获取值栈的数据

      *  注意:

                  >  访问root中的数据,不需要 #

                  >  访问context其他对象数据   加 #

                  >  如果向root中存入对象的话,优先使用push方法

                  >  如果向root中存入集合的话,优先使用set方法

       *   在OgnlContext中获取数据

                  >  在Action中向域对象存入值

                  >  request:  <s:property  value="#request.username" />

                  >  session:  <s:property  value="#session.username" />

                  >  application:<s:property  value="#application.username"/>

                  >  attr  :      <s:property  value="#attr.username" />

                  >  parameters:<s:property  value="#parameters.cid" />

     struts.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<package name="demo1" namespace="/" extends="struts-default">
		<!-- 使用值栈: 压栈和取值 -->
		<action name="save" class="com.itheima.demo2.ValueStack1Action" method="save">
			<result name="success">/demo2/vs.jsp</result>
		</action>
	</package>
</struts>

例1:

     Action类:

/**
 * 演示值栈对象的目录结构
 * @author Administrator
 */
public class ValueStack1Action extends ActionSupport{
	/**
	 * 演示从值栈中获取值
	 */
	public String save() {
		// 获取值栈对象
		ValueStack vs = ActionContext.getContext().getValueStack();
		// 压栈
		vs.push("美美");
        vs.set("msg", "小凤");
		return SUCCESS;
	}
}

        vs.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3>
	// 压栈:vs.push("美美");
	// 获取到栈顶的值
	<s:property value="[0].top" />

    // 栈顶是map集合,通过key获取值
	// vs.set("msg","小凤");
	<s:property value="[0].top.msg" />
        
    <!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
</body>
</html>
例2:
        Action类:
/**
 * 演示值栈对象的目录结构
 * @author Administrator
 */
public class ValueStack1Action extends ActionSupport{
	/**
	 * 演示从值栈中获取值
	 */
	public String save() {
		// 获取值栈对象
		ValueStack vs = ActionContext.getContext().getValueStack();
		// 创建User对象
		User user = new User("小苍","1234");
		// 压栈
		vs.push(user);
		
		// 使用set压栈
		vs.set("user", user);
		
		return SUCCESS;
	}
}

       JSP:        

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3>
    <!-- push取值的方式 -->
    <s:property value="username"/>
	 
    <!-- set取值的方式 -->
	<s:property value="[0].top.user.username" />
	<s:property value="[0].top.user.password" />
   <!--  省略关键字
	<s:property value="user.username"/>
	<s:property value="user.password"/>
    -->
    
    <!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
</body>
</html>

例3:

      Action类:

/**
 * 演示值栈对象的目录结构
 * @author Administrator
 */
public class ValueStack1Action extends ActionSupport{
	/**
	 * 演示从值栈中获取值
	 */
	public String save() {
		// 获取值栈对象
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		List<User> ulist = new ArrayList<User>();
		ulist.add(new User("熊大","123"));
		ulist.add(new User("熊二","456"));
		ulist.add(new User("熊三","789"));
		
		// 把ulist集合压栈
		vs.push(ulist);
		
		vs.set("ulist", ulist);
		
		return SUCCESS;
	}
}
        JSP1:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3>
    <!-- push方式的取值 -->
    <s:property value="[0].top[0].username"/>
	<s:property value="[0].top[0].password"/>
	<s:property value="[0].top[1].username"/>
	<s:property value="[0].top[1].password"/>
	<s:property value="[0].top[2].username"/>
	<s:property value="[0].top[2].password"/>

	<!-- set方式取值 -->
    <s:property value="[0].top.ulist[0].username" />
	<s:property value="ulist[0].username" />

    <!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
</body>
</html>

        JSP2:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3>	
	<!-- 
		迭代的标签
			属性: 
			 * value 要迭代的集合,需要从值栈中获取
			 * var   迭代过程中,遍历的对象
			     * var编写的话, 把迭代产生的对象默认压入到context栈中, 从context栈取值,加#
			     * var不编写,默认把迭代产生的对象压入到root栈中
            for(User user:ulist)
	-->

	// 编写var的属性
	<s:iterator value="[0].top.ulist" var="user">
	    <s:property value="#user.username"/>
	    <s:property value="#user.password"/>
	</s:iterator>
		
	// 没有编写var属性,[0].top都是可以省略的
	<s:iterator value="[0].top.ulist">
	    <s:property value="username"/>
	    <s:property value="password"/>
	</s:iterator>
	
	<!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
	
</body>
</html>

例4:

      Action类:

/**
 * 演示值栈对象的目录结构
 * @author Administrator
 */
public class ValueStack1Action extends ActionSupport{
	/**
	 * 演示从值栈中获取值
	 */
	public String save() {
		// 获取值栈对象
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		// 从context栈中获取值, 底层已经封装request session 对象, 操作的就是map集合
		HttpServletRequest request = ServletActionContext.getRequest();
		request.setAttribute("msg", "美美");
		request.getSession().setAttribute("msg", "小凤");
		
		return SUCCESS;
	}
}
        vs.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3>
	
	<!-- 从context栈中获取值, 加#号 -->
	<s:property value="#request.msg"/>
	<s:property value="#session.msg"/>
	<s:property value="#parameters.id"/>
	<s:property value="#attr.msg"/>
	 
	<!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
</body>
</html>


7、EL表达式也会获取到值栈中的数据

      *   StrutsPreparedAndExecuteFilter的doFilter代码中   request  = prepare.wrapRequest(request);

           >  对Request对象进行了包装,StrutsRequestWrapper

           >  增强了request的getAttribute

                    Object  attribute =  super.getAttribute(key);

                    if( attribute  == null){

                           attribute  =  stack.findValue(key);

                    }

            >  访问request范围的数据时,如果数据找不到,就会去值栈中找

            >  request对象具备访问值栈数据的能力 (查找root的数据)


Action类:

/**
 * 演示值栈对象的目录结构
 * @author Administrator
 */
public class ValueStack1Action extends ActionSupport{
	/**
	 * 演示从值栈中获取值
	 */
	public String save() {
		// 获取值栈对象
		ValueStack vs = ActionContext.getContext().getValueStack();
		
		List<User> ulist = new ArrayList<User>();
		ulist.add(new User("熊大","123"));
		ulist.add(new User("熊二","456"));
		ulist.add(new User("熊三","789"));
		
		// 把ulist集合压栈
		vs.set("ulist", ulist);
		
		return SUCCESS;
	}
}
JSP:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h3>从值栈中获取值</h3> 
	<!-- 
		在JSP页面上可以使用EL和JSTL标签库来取值
	 -->
	 <c:forEach items="${ ulist }" var="user">
	 	${ user.username } -- ${ user.password }
	 </c:forEach>
	 
	 <!-- 在JSP页面上,查看值栈的内部结构 -->
	<s:debug></s:debug>
	
</body>
</html>

下一篇:OGNL表达式的特殊符号

保姆级教程:用ESP32-S3点亮你的第一块ili9341触摸屏(附完整源码与避坑指南) 本文提供了一份详细的ESP32-S3与ili9341触摸屏的入门指南,涵盖硬件连接、环境配置、驱动补全、触摸校准及图形界面开发等关键步骤。特别针对新手常见问题提供解决方案,并附完整源码与避坑技巧,帮助开发者快速上手嵌入式图形界面开发。 阅读详情

相关推荐

中国30米逐年植被净初级生产力(NPP)数据集(1982年至今CASA模型)

1.3 气温、降水、地表太阳辐射数据 气温和降水数据月度空间插值数据是基于全国2400多个站点的日观测数据,在计算各气象要素月值的基础上,基于Anusplin软件插值生成的1982年以来各月度30米分辨率气温和降水栅格数据,插值过程中引入高程作为协变量。气温单位为℃,降水单位为mm。1.2 土地覆盖数据 土地覆盖数据来源于1985 年-2020年全球30米精细地表覆盖动态监测产品,该数据集包含29个地表覆盖类型,进行拼接、裁剪、重分类和重采样处理,获得8期250米分辨率的植被类型数据。

地球资源数据云的官方博客 2839

【struts2】(二)值栈

(一)理解值栈          struts2封装了很多东西,大大的简化了我们的代码。今天我们来看一下struts2是如何存取数据的。         在使用过程中,我们一般在页面发送一个请求去访问action类,这是会自动创建一个值栈。在使用过程中,我们一般在Action类中查出数据,然后返回到页面上。struts中利用值栈来存储这些数据。         在struts2中,把数据放到

Winter--王大梅 523

避开爬虫坑:手把手教你合法获取百度地图POI边界数据(以学校为例)

本文详细介绍了如何合规获取百度地图POI边界数据的方法论,特别以学校为例。通过解析POI数据结构、合法使用百度地图API接口、优化请求策略以及数据处理技巧,帮助开发者和研究者在遵守平台规则的前提下高效获取地理信息。适用于学术研究、商业分析等多种场景,确保数据采集的合法性与准确性。

weixin_28683065的博客 394

struts2框架(二)-值栈

说到struts2,就不得不说值栈了。 那什么是值栈呢? 举个例子,你在action中值给了一个set和get方法是怎么把它传到jsp页面中的呢? 这就是值栈在起作用。要想知道,你当前页面用OGNL表达式能取到哪些值,就在jsp页面中写一行代码: 在这里面有你可以取到的值。

sheng_xinjun的博客 354

RandLA-Net 调通代码1:Windows 11 + Tensorflow 2.4 + S3DIS数据集【踩坑+填坑】

TF不上进啊,学学pytorch

累了就要打游戏 2481

STM32/GD32以太网开发避坑指南:ZLG EPORTM模块调试实战(含YT8512H配置)

本文针对STM32/GD32平台使用ZLG EPORTM模块进行以太网开发时遇到的常见问题,提供了详细的调试实战指南。重点解析了从传统PHY驱动迁移到YT8512H芯片的核心步骤,包括软件复位延时、RMII时钟配置等关键陷阱,并分享了LWIP集成与稳定性验证的实用经验,帮助开发者高效避坑。

rice5的博客 1161

Struts2.x教程(二) OGNL和值栈

OGNL(Object Graph Nvigation Language,对象图导航语言)是一个开源的表达式引擎。通过使用OGNL的表达式语法可以存取Java对象树的任意属性和调用Java对象树的方法等。 ValueStack,被称为值栈,是对OGNL的扩展,Struts2正式通过ValueStack来使用OGNL进行赋值和取值操作的。

boyazuo的专栏 2151

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1573

struts2_day03_05_值栈内部结构(一)_06_值栈内部结构(二)_07_向值栈放数据三种方式

值栈内部结构 1 值栈分为两部分: 第一部分 root,结构是list集合 (1)一般操作都是root里面数据   第二部分 context,结构map集合   2 struts2里面标签 s:debug,使用这个标签可以查看值栈结构和存储值 (1)访问action,执行action的方法有返回值,配置返回值到jsp页面中,在jsp页面中使用这个标签 点击

huanglianggu的专栏 273

CADENCE 25.1打开元件库ERRORCannot perform the operation because of an exception.

摘要:解决CADENCE25.1打开元件库报错"ERRORCannotperformtheoperationbecauseofanexception"的方法:该错误通常由软件中文设置导致。解决方案为:进入Options→Preferences→MorePreferences,取消勾选两个本地语言选项后重启软件即可恢复正常。此方法简单有效,能快速解决因语言设置导致的元件库访问异常问题。(98字)

0 1015

WinClaw安全实战 02|五层纵深防护体系全解析:从原理到实操,打造零风险AI智能体

2026年AI智能体爆发式普及,OpenClaw以27.3万GitHub星标成为现象级工具,但恶意Skill投毒、提示词注入、数据外泄等安全事故频发,国家互联网应急中心、工信部等多部门接连发布风险警示。威努特基于国家关键信息基础设施安全防护经验,打造WinClaw安全版AI智能体,其核心竞争力在于**五层纵深防护体系**。本文从安全痛点切入,通过真实事故案例揭示风险本质,全景解构五层防护的架构设计与技术原理,逐层拆解身份认证、安装审查、消息拦截、执行约束、监控审计的实现逻辑,搭配20+实操演示、对比表格

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 497

Struts2笔记08 获取值栈对象

获取值栈的方式有多种 1.通过ActionContext类里面的方法得到值栈对象(常用方式)  每个action对象中只有一个值栈对象 2.使用ActionInvocation来获取      ActionContext ctx = actionInvocation.getInvocationContext();

Astarte的博客 247

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Struts 校验失败 值丢失

[b]struts.xml配置 [/b][code="java"] xxxxx [/code]. 其中,struts-default包含了struts2默认的拦截器栈. [code="java"] ...

程序猿猴 268

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深度学习工具包 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")

获取值栈对象

--------------------siwuxie095 获取值栈对象 在一个 Action 中获取值栈对象的方式共有两种 方式一:使用 ActionContext 对象获取值栈对象(常用) @Overr...

weixin_30770495的博客 110

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

struts2之值栈

文章目录1 值栈是什么2 值栈能干什么3 值栈有什么?3.1 狭义值栈3.2 广义值栈3.3 关于广义和狭义4 值栈的基本使用4.1 如何获取ActionContext4.2 获取过后,如何使用4.3 ValueStack的基本使用4.3.1 如何获取4.3.2 如何使用4.3.3 应用示例 1 值栈是什么 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心 Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action、Result、Interceptor等Struts2的

上善若泪 529

struts2中的值栈

一看到值栈我们应该想到的关于值栈的问题 0什么是值栈,为什么使用值栈 1 .值栈的内存结构 2.值栈的生命周期 3.如何获取值栈 4.如何向值栈中存数据,取数据 5.因为数据在值栈中,如何保存数据安全性 下面我们就根据这几个问题来看看值栈: 0.什么是值栈 在servlet中,一般处理数据我们会把数据放到request域,session,application域中,通过el表达式

jys1115的专栏 1004

【Struts2笔记整理七】值栈

值栈(ValueStack) 在 Struts2 中也是非常重要的知识,它其实类似于一个数据中转站,Struts2 框架中的所有数据都保存到了 ValueStack 中。ValueStack 贯穿整个 Action 的生命周期,只要 Action 一创建,Struts2 就会创建一个 ValueStack 对象。

小异常的博客 552

struts2为何使用值栈,如何获取值栈对象

一、什么是值栈 1、之前在web阶段,在servlet里面操作,把数据放到作用域对象里,在页面中使用el表达式获取到对应的值,域对象在一定的范围内存值和取值。 2、在struts2里面提供本身的一种存储机制,类似于域对象,是值栈,可以存值和取值 在action里面把数据存放到值栈里面,在页面中获取到值栈数据 3、servlet和action的区别 前面讲action生命周期时已经提到: servl...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 969

Struts2中的值栈

什么是值栈 ValueStack是Struts2的一个接口,字面意义为值栈,OgnlValueStack是ValueStack的一个实现类,客户端发起一个请求struts2架构就会创建一个action实例同时创建一个OgnlValueStack值栈实例。OgnlValueStack贯穿整个Action的生命周期,struts2中使用OGNL将请求Action的参数封装为对象储存到值栈中,并通过ON...

weixin_40007271的博客 356

Struts2--值栈(ValueStack)

值栈 值栈(ValueStack)就是 OGNL 表达式存取数据的地方。在一个值栈中,封装了一次请求所需要的所有数据。 在使用 Struts2 的项目中,Struts2 会为每个请求创建一个新的值栈,也就是说,值栈和请求是一一对应的关系,这种一一对应的关系使值栈能够线程安全地为每个请求提供公共的数据存取服务。 1.值栈的作用: 值栈可以作为一个数据中转站在前台与后台之间传递数据,最常见的就是将 S...

吴声子夜歌的博客 599

简单了解Struts2中的值栈

值栈对象 用户提交Action请求后系统当即创建Action实例和值栈对象,Struts2中的值栈ValueStack是一个接口,其实现类为OgnlValueStack。其中最重要的两个属性是CompoundRoot root(本质是ArrayList,值栈操作时视其为栈)和transient Map<String, Object> context(OgnlValueStack将创建的map的引用传递给context)。 Tips:transient关键字可以将一个类的指定属性忽略序列化传输..

WanAkiko. 248

struts2--关于值栈的概念性问题

重要参考:http://www.cnblogs.com/ningvsban/p/3739622.html http://www.cnblogs.com/ningvsban/p/3739682.html 结论: 1 狭义值栈   通常指的是实现com.opensymphony.xwork2.util.ValueStack接口的对象,目前就是com.opensymphony.x

nupt_Wang的专栏 1127

java struts2值栈ognl_Struts2-值栈与OGNL

OGNL表示式使用 和 值栈OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts2框架使用OGNL作为默认的表达式语言。* xwork 提供 OGNL表达式* ognl-3.0.5.jarOGNL 是一种比EL 强大很多倍的语言OGNL 提供五大类功能1、支持对象方法调用,如xxx.doSomeSpecial();...

weixin_30857403的博客 219

Struts2:值栈

值栈 在学习web开发时,我们在servlet里面进行操作,把数据放到域对象里面,在页面中使用el表达式获取数据,域对象在一定范围内存值和取值。 struts2本身就提供一种存储机制,类似于域对象,叫值栈,用于存值和取值。 在action把数据放到值栈里面,在页面中获取到值栈数据。 servlet和action区别 Servlet:默认在第一次访问时候创建,创建一次,单实例对象。 Ac...

离开屏幕的光,哪盏灯照亮你的孤独? 224

struts2的值栈的初步认识

Struts2OGNL概述 在web阶段,用EL表达式在jsp页面获取域对象的值。 用OGNL功能更强大,效率更高。 使用一般在struts2里操作值栈数据,和struts2标签一起使用,需要jar包,struts2提供了。 并且需要引入struts2标签库,<%@ taglib uri = "/struts-tags" prefix = "s" %> 然后使用<s:property value =

WaveBridge的博客 649

(Struts2)Action的三种访问方式

1、传统访问:通过&lt;action&gt;标签中的method属性,访问到Action中的具体的方法     *   传统的配置方式,配置更清晰更好理解!但是扩展需要修改配置文件     *   具体的实例如下:          *   页面代码:&lt;h3&gt;传统的配置文件的方式&lt;/h3&gt; &lt;a href="${pageContext.request.context...

Jadan-Z的博客 5556
上一篇: (Struts2)值栈(一)
下一篇: (Struts2)OGNL表达式的特殊符号
Jadan-Z
博客等级 码龄10年 8粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值