strut2后台向前台传值问题

6 篇文章 0 订阅

1、用session 代码:

ActionContext.getContext().getSession().put("questionList", list);

问题,session不能放太大的东西,如果list过大,session就会很大,不太好

2、ongl表达式:

代码:

public PeopleAction extends ActionSuper{ 
private List<People> peopleList; //定义需要传递到页面的list对象 需要提供get set 方法 
get... 
set... 
public String getList(){ 
peopleList = peopleServer.getList(); //将获取的数据赋值给list 

然后再需要显示的页面使用jstl或者struts自己的标签循环显示 
<c:forEach item="${peopleList}" var="item"> 
.... 
</c:forEach> 
}

3、将值set到list中在结果页面用El表达式${requestScope.questionList}就可以得到

4、

1.action标签允许开发者在JSP页面中直接调用action,该标签有以下属性:

(1)executeResult:可选属性,为一个Boolean类型值,用来指定是否显示action的执行结果,默认值为false,即不显示。

(2)id:可选属性,用来引用该action的标识。

(3)name:必填属性,用来指定该action的实现类位置。

(4)namespace:可选属性,用来指定该标签调用的action所在的命名空间。

(5)ignoreContextParams:可选属性,用来指定该页面中的请求参数是否需要传入调用的action,默认值为false,即将本页面的请求参数传入被调用的action。

2.Struts2页面中需要显示动态数据时,需要将这些数据在页面文件外面获取,然后通过某种方式传到页面中,因为要避免在JSP页面中编写Java代码。比如需要从数据库中读取一系列数据,我们一般要通过action来获取这些数据,然后让页面得到action中获取的数据。

3.下面举一个简单的例子:

显示数据库中所有的书本信息

(1)书本的实体类为Book.java,反向表生成Hibernate实体类等过程这里不说。下面是Book.java的示例内容:

package entity;

public class Book implements java.io.Serializable {

private Integer bookId; 
private String bookName; 
private String bookAuthor;

public Integer getBookId() { 
return this.bookId; 
}

public void setBookId(Integer bookId) { 
this.bookId = bookId; 
}

public String getBookName() { 
return this.bookName; 
}

public void setBookName(String bookName) { 
this.bookName = bookName; 
}

public String getBookAuthor() { 
return this.bookAuthor; 
}

public void setBookAuthor(String bookAuthor) { 
this.bookAuthor = bookAuthor; 
}

}

(2)查询所有书本的方法,该方法所在的类为BookManage.java,其示例内容如下:

package dao;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
import java.util.*; 
import entity.*;

public class BookManage extends HibernateDaoSupport {

@SuppressWarnings("unchecked") 
public List<Book> allBook(){ 
String hql = "from Book as book "; 
try{ 
List<Book> allBook = this.getHibernateTemplate().find(hql); 
return allBook; 
}catch (RuntimeException re) { 
throw re; 


}

(3)创建一个action用来获取所有书本信息,action为AllBookAction.java,其示例内容如下:

package com.xiaoqi.action;

import javax.servlet.http.HttpServletRequest; 
import org.apache.struts2.ServletActionContext; 
import com.opensymphony.xwork2.ActionSupport;

import java.util.*; 
import dao.BookManage; 
import entity.Book;

@SuppressWarnings("serial") 
public class LeftAction extends ActionSupport{

private BookManage bookManage;

public void setBookManage(BookManage bookManage) { 
this.bookManage = bookManage; 
}

public String execute(){

List<Book> allBook = bookManage.allBook(); 
HttpServletRequest request = ServletActionContext.getRequest(); 
request.setAttribute("allBook", allBook);

return null; 

}

在上述代码中,将获取的所有书本信息保存到了名为"allBook"的request对象中,并返回null,因为返回值在现在这种情况下没有用。

(4)在struts.xml中,配置该action,内容如下:

<action name="allBookAction" class="AllBookAction"> 
</action>

(5)applicationContext.xml中配置该action,内容如下:

<bean id="bookManage" class="dao.BookManage" abstract="false" lazy-init="default" autowire="default" dependency-check="default"> 
<property name="sessionFactory" > 
<ref local="sessionFactory"/> 
</property> 
</bean>

<bean id="AllBookAction" class="com.xiaoqi.action.AllBookAction" > 
<property name="bookManage"> 
<ref bean="bookManage" /> 
</property> 
</bean>

(6)最后看下显示页面book.jsp,其内容如下:

<%@ page language="java" pageEncoding="gb2312"%> 
<%@taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<head> 
...... 
</head>

<body> 
<center> 
<s:action name="allBookAction" executeResult="false"></s:action> 
<div> 
<ul> 
<li>所有书本</li> 
<s:iterator value="#request.allBook"> 
<li> 
书ID:<s:property value="bookId" /> 
</li> 
<li> 
书名:<s:property value="bookName"/> 
</li> 
<li> 
作者:<s:property value="bookAuthor"/> 
</li> 
</s:iterator> 
</ul> 
</div> 
</center> 
</body>

上述代码中,先用<s:action name="allBookAction" executeResult="false"></s:action>访问AllBookAction,记得executeResult值为false。然后在<s:iterator value="#request.allBook">中指明要循环哪个request对象所保存的List,这里要循环名为allBook的request对象所保存的List。通过<s:property value="bookName"/>直接输出该request对象中所保存的List中的书本对象Book的bookName属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值