博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2中带参数的结果集
阅读量:6340 次
发布时间:2019-06-22

本文共 3041 字,大约阅读时间需要 10 分钟。

 

 

2.首先,新建一个struts2项目,项目名为ResultParam,打开index.jsp页面,修改编码格式为utf-8,添加一个超链接,用于向结果集传参数,完整代码如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   2 <%   3 String path = request.getContextPath();   4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   5 %>   6    7    8    9     10       11       12     My JSP 'index.jsp' starting page  13     
14
15
16
17
18
21 22 23 24
    25
  1. 传递参数
  2. 26
27 28

 

 

相应的struts.xml配置文件的配置如下:

 

1 
2 5 6
7 8
9
10
11
12
/user_success.jsp?t=${type}
13
14
15

 

 

 

接着新建一个Action类,为UserAction类,用来指定一个成员变量type,添加set和get方法,并添加一个默认的execute方法,返回类型为String

返回"success"的话就重定向到/user_success.jsp?t=${type}页面上去

 

UserAction类代码如下:

 
  1. 1 package com.gk;   2    3 public class UserAction {   4     private int type;   5    6     public int getType() {   7         return type;   8     }   9   10     public void setType(int type) {  11         this.type = type;  12     }  13   14     public String execute() {  15         return "success";  16     }  17 }

     

当我们点击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页面代码如下:

 

 
  1. 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   2 <%@ taglib uri="/struts-tags"  prefix="s"%>   3 <%   4 String path = request.getContextPath();   5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";   6 %>   7    8    9   10     11       12       13     My JSP 'user_success.jsp' starting page  14       15     
    16
    17
    18
    19
    20
    23 24 25 26 27 返回成功 28 来自值栈:
    29 来自ActionContext:
    30 31
    32 33

     

注:<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这个属性是用于存储传入的参数。所以可以取出。

 

你可能感兴趣的文章
[转] gdb中忽略信号处理
查看>>
SpringMVC学习笔记
查看>>
XP下Winform背景透明问题
查看>>
【剑指offer】数组中只出现一次的数字
查看>>
Centos安装vncserver服务
查看>>
instanceof, isinstance,isAssignableFrom的区别
查看>>
react className 有多个值时的处理 / react 样式使用 百分比(%) 报错
查看>>
Codeforces 474D Flowers
查看>>
javaScript中的this关键字解析
查看>>
Javascript的变量与delete操作符
查看>>
JavaScript 获取当前时间戳
查看>>
关于测试的好文
查看>>
实现用户要求的若干道2年级四则运算题程序测试
查看>>
IIS配置
查看>>
扩展JQUERY 表单加载JSON数据
查看>>
【学习笔记】Java中生成对象的5中方法
查看>>
POJ Problem 3620 Avoid The Lakes 【DFS】
查看>>
[学习笔记]半平面交
查看>>
05java基础
查看>>
[转]solr 查询参数说明
查看>>