Java-struts2 之值栈问题

这里是根据一个小项目,将数据库的值查出来,然后在页面前台进行遍历的方法

放入值的几种方式:

package com.sun.action;

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.mysql.jdbc.Connection;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.sun.model.User;

public class UserListAction extends ActionSupport{

	static PreparedStatement ps = null;
    static ResultSet rs;

	 public String execute()throws Exception{

		 Connection con = null;  //创建用于连接数据库的Connection对象
		 List<User> users  = new ArrayList<User>();
      try {
          Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动  

        con = (Connection) DriverManager.getConnection(
                  "jdbc:mysql://127.0.0.1:3306/test", "root", "123456");// 创建数据连接
           //System.out.println("数据库连接成功");

               String sql = "select * from user";// 删除数据的sql语句
               ps = (PreparedStatement) con.prepareStatement(sql);
              rs = ps.executeQuery();
              User c = null;
	           while(rs.next()){
	        	   c = new User();
	        	   c.setAge(rs.getInt("age"));
	        	   c.setId(rs.getInt("id"));
	        	   c.setName(rs.getString("name"));
	        	   c.setSex(rs.getString("sex"));
	           //System.out.println(rs.getString("name"));
	        	   users.add(c);

	           }
           con.close();   //关闭数据库连接
           } catch (Exception e) {
            System.out.println("数据库连接失败" + e.getMessage());
	      } 

           HttpServletRequest request = ServletActionContext.getRequest();
         //  request.setAttribute("users", users) ;
         //  ActionContext.getContext().put("users", users);
         ActionContext.getContext().getValueStack().push(users);
         ActionContext.getContext().getValueStack().push(users);

		 return "list_ok";
	 }
}
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@ taglib prefix="s" uri="/struts-tags"%>
<!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>显示用户的列表</title>
</head>
<body>
<table>
  <tr>
    <th>ID</th>
    <th>姓名</th>
    <th>年龄</th>
    <th>性别</th>
  </tr>

<%-- HttpServletRequest request = ServletActionContext.getRequest();
         //  request.setAttribute("users", users) ;

         <s:iterator value="#request.users" >
  <tr>
    <td><s:property value="id" /></td>
    <td><s:property value="name" /></td>
    <td><s:property value="age" /></td>
    <td><s:property value="sex" /></td>
  </tr>
  </s:iterator> --%>

<%--  ActionContext.getContext().put("users", users); <s:iterator value="#users" var="u">
  <tr>
    <td><s:property value="#u.id" /></td>
    <td><s:property value="#u.name" /></td>
    <td><s:property value="#u.age" /></td>
    <td><s:property value="#u.sex" /></td>
  </tr>
  </s:iterator> --%>

<%--   ActionContext.getContext().getValueStack().push(users); <s:iterator >
  <tr>
    <td><s:property value="id" /></td>
    <td><s:property value="name" /></td>
    <td><s:property value="age" /></td>
    <td><s:property value="sex" /></td>
  </tr>
  </s:iterator> --%>

</table>
</body>
</html>
时间: 2024-11-06 03:29:01

Java-struts2 之值栈问题的相关文章

Struts2的值栈和对象栈

ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContext ValueStack与ActionContext的联系和区别: 如何获得ActionContext: 如何向ActionContext中存入值: 如何从ActionContext中读取值: HttpServletRequest类或request的Map 使用HttpServletRequest类

Java中的值栈

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

【struts2】值栈(后篇)

在值栈(前篇)我们学习了值栈的基本知识,接下来,来看看在程序中具体如何使用值栈. 1 ActionContext的基本使用 1.1 如何获取? 要获取ActionContext有两个基本的方法,如果在不能获取到ActionInvocation的地方,可以直接使用ActionContext一个静态的getContext方法,就可以访问到当前的ActionContext了,示例如下: ActionContext ctx = ActionContext.getContext(); 如果在能获取到Act

【struts2】值栈(前篇)

1 值栈是什么? 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样一来,数据被集中管理起来而不会凌乱,大大方便了程序编写.Struts2中关于值栈的另外一个很激动人心的特性就是:大多数情况下,你根本无需关心值栈,你不用管它在哪里,不用管它里面有什么,你只需要去获取自己需要的数据就可以了.也就是说,你可以隐式的使用值栈.当然,

Struts2 之值栈

值栈(ValueStack) http://www.cnblogs.com/bgzyy/p/8639893.html 这是我的有关 struts2 的第一篇文章,对于里面我们说到的一个 struts2 HelloWorld 小练习,即在输入框输入信息提交后在另外一个页面显示输入的信息,显示页面的代码如下: UserName: ${userName}<br> Email: ${email}<br> Address: ${address}<br> 为什么这样一个简单的标签就

Struts2的值栈

一次对于action的request只有一个值栈,对于普通jsp页面的请求值栈为空. 对于result,在服务器端forward时(dispatcher,chain)时不需要使用参数从之前的值栈中拿出参数t再通过"?tparam=${t}"传递来实现动态结果集. 在客户端forward(redirect,redirectAction)时需要用以上方法传递参数,然后再在新的普通jsp页面或者action中同过"#paramenters.t"获得该参数.

关于Struts2的值栈和OGNL的简单理解

1.值栈是什么? 值栈是对应每一个请求对象的内存数据中心.每次请求一个action生成一个狭义上的值栈(ValueStack).这个值栈存储了我们定义在action中的每个属性的值,这些属性必须有get和set方法,以致于我们可以在jsp页面中使用EL表达式. 2.值栈的作用: 值栈能够在线程安全的情况下提供公共的数据存取服务.当有请求到达时,struts会为每个请求创建一个新的值栈.值栈封装了一次请求所有需要操作的相关的数据. 3.值栈的内容: 在struts中是有广义和狭义值栈之分的.狭义值

Struts2 的 值栈

1.ValueStack 对象的内部有2个逻辑部分: -- ObjectStack:Struts 把 Action 和相关对象亚茹ObjectStack中 -- ContextMap:Sturts 把各种各样的映射关系(一些 Map 类型的对象)压入ContextMap中,实际上就是对ActionContext的一个引用 2.Struts 会把下面这些映射压入ContextMap中: -- parameters: 该Map中包含当前请求的请求参数: -- request: 该Map中包含当前re

struts2值栈分析

前段日子对ognl表达式不是很理解,看了几本书上关于ognl表达式的描述后还是感觉很难,前几天学习了struts2中值栈的内容,现在感觉ognl表达式其实很容易. struts2中利用值栈来存储数据,在struts2中,把数据存在值栈中,然后在jsp页面用ognl表达式取出. 在struts2中的action有三种方法获取值栈 ValueStack valueStack=ActionContext.getContext().getValueStack(); ValueStack valueSta

走进Struts2(五)— 值栈和OGNL

值栈 1.值栈是什么? 简单说:就是对应每一个请求对象的轻量级的内存数据中心. Struts2引入值栈最大的好处就是:在大多数情况下,用户根本无须关心值栈,不管它在哪里,不用管它里面有什么,只需要去获取自己需要的数据就可以了. 2.值栈能干什么? 简单说:就是能够线程安全的为每一个请求提供公共的数据式服务. 3.值栈包含Map栈和对象栈,值栈通过ActionContext的getValueStack()方法来获取值栈,但是在通常情况下,向valuestack中压入值都是由Struts2去完成的,