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

放入值的几种方式:

Struts2的三种存值取值的方式

值栈:

栈上下文:

ActionContext:

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>

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

  1. struts2(二)值栈 threadlocal ogal ui

    值栈(重要)和ognl表达式 1.  只要是一个mvc框架,必须解决数据的存和取的问题 2.  Struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构 3.  把数据存在值栈中,在页面上利用 ...

  2. Struts2的值栈和OGNL牛逼啊

    Struts2的值栈和OGNL牛逼啊 一 值栈简介: 值栈是对应每个请求对象的一套内存数据的封装,Struts2会给每个请求创建一个新的值栈,值栈能够线程安全的为每个请求提供公共的数据存取服务. 二 ...

  3. 【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】

    一.struts2系统验证 1.基于struts2系统验证的方式实际上就是通过配置xml文件的方式达到验证的目的. 2.实际上系统校验的方法和手工校验的方法在底层的基本实现是相同的.但是使用系统校验的 ...

  4. Struts2的值栈和对象栈

    ValueStack 如何得到值栈: 如何将对象存入值栈: 让值栈执行表达式来获得值: 在JSP中跳过栈顶元素直接访问第二层: 在JSP中访问值栈对象本身(而不是它们的属性) ActionContex ...

  5. Java中的值栈

    OGNL表示式使用 和 值栈 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的表达式 ...

  6. Struts2向值栈中压入属性的方式

    Struts2在初始化Action的时候会先向值栈中压入一个action对象,里面包含了各个属性,这些属性是怎么被压进去的?或者说是根据什么来压入的?直到2016年5月5日才理解,原来是在初始化act ...

  7. Struts2 的 值栈和ActionContext

    1.ValueStack 和 ActionContext 的关系与区别: -- 相同点:它们都是在一次HTTP请求的范围内使用的,它们的生命周期都是一次请求 -- 不同点:ValueStack 分为对 ...

  8. Struts2 之值栈

    值栈(ValueStack) http://www.cnblogs.com/bgzyy/p/8639893.html 这是我的有关 struts2 的第一篇文章,对于里面我们说到的一个 struts2 ...

  9. 【struts2】值栈(后篇)

    在值栈(前篇)我们学习了值栈的基本知识,接下来,来看看在程序中具体如何使用值栈. 1 ActionContext的基本使用 1.1 如何获取? 要获取ActionContext有两个基本的方法,如果在 ...

  10. 【struts2】值栈(前篇)

    1 值栈是什么? 简单的说:值栈是对应每一个请求对象的轻量级的内存数据中心. Struts2中一个很激动人心的特性就是引入了值栈,在这里统一管理着数据,供Action.Result.Intercept ...

随机推荐

  1. 利用if else 求房贷

    static void Main(string[] args)        {            while (true)     //主要就是公式的运用和if else 的嵌套         ...

  2. Android Loader详解四:回调及完整例子

    onLoadFinished 这个方法是在前面已创建的装载器已经完成其加载过程后被调用.这个方法保证会在应用到装载器上的数据被释放之前被调用.在此方法中,你必须删除所有对旧数据的使用(因为它将很快会被 ...

  3. (转载)php获取form表单中name相同的表单项

    (转载)http://hi.baidu.com/ruhyxowwzhbqszq/item/5fd9c8b9b594db47ba0e12a9 比如下面的表单: /*form.php*/ <form ...

  4. 区别typedef和#define

    1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define PI 3.1415 ...

  5. POJ -- 1151

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16222   Accepted: 6172 Descrip ...

  6. NHibernate加载DLL错误

    这几天在开发关于Rest的服务,其中用到了NHibernate来进行数据库交互,突然有一天发现了一个错误,如下: Could not load file or assembly 'NHibernate ...

  7. Unity3d Fast Indirect illumination Using Two Virtual Spherical Gaussian Lights-Square Enix论文

    博主实现(in Unity3d 5) used one spotlight 史克威尔效果展示(夜光引擎?) 博主近期渲染:最近用unity5弄的一些渲染 ---- by wolf96  http:// ...

  8. Android开发必知--使用View.setId的正确姿势

    这两天在写一个柱状图的自定义控件,用的直接继承ViewGroup的方式实现的,我们都知道,这是自定义控件里面最简单的一种了,有时间写个总结分享一下.这里我想说的重点是,在写这个自定义控件的时候遇到了个 ...

  9. JavaScript高级程序设计31.pdf

    其它方面的变化 DOM的其他部分在“DOM2级核心”中也发生了一些变化,这些变化与XML命名空间无关,而是确保API的可靠性及完整性 DocumentType类型的变化 DocumentType类型新 ...

  10. [转]Angular, Backbone, or Ember: Which is Best for your Build?

    In order to choose which framework is right for your build, we've asked four important questions of ...