Struts2中带参数的结果集

2.首先,新建一个struts2项目,项目名为ResultParam,打开index.jsp页面,修改编码格式为utf-8,添加一个超链接,用于向结果集传参数,完整代码如下:
相应的struts.xml配置文件的配置如下:
接着新建一个Action类,为UserAction类,用来指定一个成员变量type,添加set和get方法,并添加一个默认的execute方法,返回类型为String
返回"success"的话就重定向到/user_success.jsp?t=${type}页面上去
UserAction类代码如下:
package com.gk; public class UserAction {
private int type; public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} public String execute() {
return "success";
}
}
当我们点击index.jsp页面下的传递参数超链接时,执行Action后,已经将Action的成员属性写入了值堆栈了
因此可以在配置文件中使用OGNL表达式${type}取出type的值
所以当result重定向到/user_success.jsp?t=${type}时,在地址栏上面是可以显示出index.jsp页面中的type=1这个值。
但是只有Action才具有值堆栈的,对于JSP页面来说是没有什么值堆栈的。
因为在result重新定向到/user_success.jsp?t=${type}后,是不能从值堆栈中取出t的值,只能从ActionContext里取出t的值,即Action的上下文环境中取出,就可以在jsp页面中读取出t的值了,可以使用ActionContext Stack的parameters参数读取。
user_success.jsp页面代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'user_success.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
返回成功
来自值栈:<s:property value="t"/><br/>
来自ActionContext:<s:property value="#parameters.t"/><br/> <s:debug></s:debug>
</body>
</html>
注:<s:property value="t"/>取不到值,因为jsp不是一个Action没有值堆栈。
<s:property value="#parameters.t"/>可以取出t的值,因为#方式是从ActionContext中取属性值。ActionContext堆栈中具有parameters这个属性是用于存储传入的参数。所以可以取出。
等一会我们可以看下value stack(值栈)里的东西和ActionContext(Action的上下文环境)里面的东西。
3.接着我们部署这个项目到Tomcat服务器上,开启Tomcat服务器,输入相应的地址,运行结果如下:

点击传递参数超链接后,如下图所示:

其中重定向时传递了type这个参数,并从ActionContext中获取到了t的值,值栈中却获取不到,接着我们点击Debug按钮,看下里面的内容:

其中值栈里面没有t的相关内容,我们可以看下栈的上下文,即Stack Context,也是ActionContext里的内容,
栈的上下文环境,这些选项要使用#key的形式初始化。
在user_success.jsp页面中,使用#parameters.t的形式取得t的值,我们可以去找下有无parameters这个key,并且内容究竟有没有t:
上图中有parameters这个key,并且里面也有一个t,在红色框框的下面,ActionContext堆栈中具有parameters这个属性是用于存储传入的参数。所以可以取出。
Struts2中带参数的结果集的更多相关文章
- 01_15_Struts2_带参数的结果集
01_15_Struts2_带参数的结果集 1. 背景说明 服务器端页面跳转的时候,通过struts提供的标签的valuestack可以直接取.服务器端的转发,valuestack的对象属性可以共享. ...
- struts2中constant参数设置
序号 方法 说明 1 <constant name="struts.i18n.encoding" value="UTF-8"/> 指定web应用默认 ...
- C语言中带参数的宏
带参数的宏定义有如下的格式: [#define 指令----带参数的宏] #define 标识符(x1,x2,……,xn) 其中 x1,x2,……xn是标志符(宏的参数) 注意:在宏的名字和括号之间 ...
- Python中带参数的装饰器
装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...
- Struts2中请求参数的接收方式和ModelDriven机制及其运用
odelDriven 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar ...
- struts result动态结果集 带参数的结果集
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC &qu ...
- Struts2_带参数的结果集
页面请求: <a href="user/user?type=1">传参数</a> action: public Integer type; public S ...
- PyQt Designer中带参数的信号为什么匹配不到带参数的槽函数?
老猿在学习ListView组件时,想实现一个在ListView组件中选中一个选择项后触发消息给主窗口,通过主窗口显示当前选中的项的内容. 进入QtDesigner后,设计一个图形界面,其中窗口界面使用 ...
- (八)Struts2中的参数封装
一.静态参数封装 什么是静态参数? 静态参数就是硬编码的,不可随意改变. 例子: (1)我们首先创建一个Action类,里面有两个参数,用来封装请求参数 public class User exten ...
随机推荐
- 一个进程发起多个连接和gethostbyname等函数
一.在前面讲过的最简单的回射客户/服务器程序中,一个客户端即一个进程,只会发起一个连接,只要稍微修改一下就可以让一个客户端发起多个连 接,然后只利用其中一个连接发送数据. 先来认识一个函数getsoc ...
- Web - TCP与UDP的差别
是否面向连接:TCP面向连接.UDP面向非连接. 传输可靠性:TCP可靠.UDP不可靠. 应用场合:TCP经常使用于传输大量数据,UDP经常使用于传输少量数据. 速度:TCP传输速度较慢,而UDP速度 ...
- python中杂乱问题
1 字符串格式化中的格式指定 format_spec ::= [[fill]align][sign][#][][width][,][.precision][type] fill ::= <any ...
- git版本控制文件提交到composer应用市场,并下载用市场的软件库
要把github中的项目提交到composer中去,必须在github管理的项目中新建对应的composer.json文件, composer.json文件建立的方法 cmd定位到项目目录 compo ...
- PHP的cURL快速入门 (小偷采集程序)
cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP.FTP.TELNET等.很多小偷程序都是使用这个函数. 最爽的是,PHP也支持 cURL 库.本文将介绍 cUR ...
- javascript ES6模块化
一.将模块导出去 /* *将模块导出去 *a.js文件 */ const a=12; export default a; /* *将模块导出去 *b.js文件 */ const a=5; export ...
- [Jobdu] 题目1529:棋盘寻宝
题目描述: 现在有一个8*8的棋盘,上面放着64个价值不等的礼物,每个小的棋盘上面放置一个礼物(礼物的价值大于0小于1000),一个人的初始位置在棋盘的左上角,每次他只能向下或向右移动一步,并拿走对应 ...
- SVN的搭建与使用
1.什么是SVN? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到 ...
- 深入浅出分析MySQL常用存储引擎
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- innerHTML与innerText区别
document 对象中有innerHTML和innerText 两个属性, 这两个属性都是获取document对象的文本内容的,这两个属性间有哪些区别呢?通过几个例子来看一下. 示例1 <ht ...