jsp进行list遍历jsp怎么遍历list

81848人阅读
1:使用jstl标签 (可以和自定义标签配合使用)
首先引用jstl标签
&%@ taglib uri=&/jsp/jstl/core& prefix=&c& %&
然后使用foreach标签
&c:forEach items=&${list}& var=&user& varStatus=&vs&&
&s:property value=&#vs.index+1&/&
&td align = &center&&${user.PId}&/td&
&td align = &center&&${user.PLoginname}&/td&
&td align = &center&&${user.PUserName}&/td&
&td align = &center&&${user.PEmail}&/td&
&td align = &center&&&html:department pdeptid=&${user.PDeptid}&&&/html:department&&/td& &!-- 自定义标签 --&
&/c:forEach&
可以用&c:if test=&${not empty list}&&&/c:if&&&&和 &c:if test=&${not empty list}&&&/c:if& 来处理是否为空的情况。如果不为空,显示值,为空的话,显示无记录等。
后台可以把list放到值栈或者放到request.例如:request.setAttribute(&list&, XXXXlist);
2:使用jsp内嵌java代码遍历List (在后台把List放到session中,如果是大数据量,不应使用此方法)
首先在后台把list放入到session中
request.getSession().setAttribute(Data.ALLNEWSLIST, list);
红色标记的Data.ALLNEWSLIST 为常量 在com.mon包下的Data类中定义
public static final String ALLNEWSLIST=&ALLNEWSLIST&;
jsp代码:(注意标红的代码不要忘记引入对应的类)
&%@ page language=&java& import=&java.util.*,com.mon.*,com.xiami.onlineshop.data.*& pageEncoding=&GBK&%&
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
String ntype=
int pagenum=1;
if(request.getParameter(&pagecurrent&)!=null){
pagenum=Integer.parseInt(request.getParameter(&pagecurrent&));
List list=
if(session.getAttribute(Data.ALLNEWSLIST)!=null){
list = (List)session.getAttribute(Data.ALLNEWSLIST);
int l = list.size();
&table border=1 width=&100%&&
&tr bgcolor=&#8E8E8E&&&&首页&商城动态&/tr&
&br&&br& &/font&&/center&
&font color=#272727&第&%=pagenum %&页&Br&&br&&/font&
for(int i=0;i&l;i++){
News news =(News)list.get(i);
ntype=news.getNtype();
&tr bgcolor=&#93FF93&&
&td bgcolor=&#6C6C6C&&&%=news.getNid() %&&/td&
&td bgcolor=&#ADADAD&&&a href=&servlet/ShowDetailNews?nid=&%=news.getNid() %&&&&%=news.getNtitle() %&&/a&&/td&
&/table&&br&
&a href=&servlet/ShowAllNews?page=1&type=&%=ntype %&&&首页&/a&&
&a href=&servlet/ShowAllNews?page=&%=pagenum-1 %&&type=&%=ntype %&&&上一页&/a&&
&a href=&servlet/ShowAllNews?page=&%=pagenum+1 %&&type=&%=ntype %&&&下一页&/a&&
&a href=&servlet/ShowNewsEndPage?type=&%=ntype %&&&尾页&/a&
3:使用Struts标签
&%@ taglib prefix=&s& uri=&/struts-tags&%&
&s:iterator value=&#request.userList& status=&stat& id=&sd&&
&tr align=&center&&
&s:property value=&#sd[6]& /&
&s:property value=&#sd[1]& /&
&s:property value=&#sd[2]&&&/s:property&
&s:property value=&#sd[4]&&&/s:property&
&s:property value=&#sd[5]&&&/s:property&
&/s:iterator&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1963374次
积分:16312
积分:16312
排名:第674名
原创:206篇
转载:212篇
评论:143条
(2)(2)(4)(1)(3)(1)(1)(2)(1)(3)(1)(6)(5)(1)(1)(2)(1)(1)(10)(11)(4)(15)(4)(6)(4)(6)(6)(1)(3)(2)(2)(3)(4)(8)(4)(5)(3)(1)(2)(3)(4)(5)(6)(10)(1)(16)(21)(31)(10)(38)(22)(58)(14)(37)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'Jsp实现页面forEach循环遍历多条数据的显示和后台对应数据的获取(strurs1)实现
使用jstl标签和form动态的页面数据显示操作获取!
html代码:
使用jstl标签和form动态的页面数据显示操作获取!
html代码:
&div id="header"&&/div&
&div id="divuser"&
&input id="contextPath" type="hidden" value="${pageContext.request.contextPath}"/&
&form id="userform"&
&table id="usertb" width="655" border="0" cellpadding="2" cellspacing="0"&
&caption&用户信息表&/caption&
&c:if test="${empty userList}"&
&td&&span&user data is null!&/span&&/td&
&c:forEach items="${userList}" var="user" varStatus="userStatus"&
&td width="40" align="center" class="tb_td_border"&
&input id="uid${userStatus.index}" name="uid" type="radio" value="${userStatus.index}" /&
&td width="100" align="center" class="tb_td_border"&
&label for="uid${userStatus.index}"&&span class="font12_blue"&${user.userName }&/span&&/label&
&td width="100" align="center" class="tb_td_border"&
&label for="uid${userStatus.index}"&&span class="font12_blue"&${user.userGender}&/span&&/label&
&td width="100" align="left" class="tb_td_border"&
&label for="uid${userStatus.index}"&&span class="font12_blue"&${user.userEmail }&/span&&/label&
&td width="100" align="center" class="tb_td_border"&
&label for="uid${userStatus.index}"&&span class="font12_blue"&${user.userBirthDay }&/span&&/label&
&td width="100" align="center" class="tb_td_border"&
&label for="uid${userStatus.index}"&&span class="font12_blue"&${user.userAddress }&/span&&/label&
&td width="110" align="center" class="tb_td_border"&
&div id="divnickname${userStatus.index}"&
&input id="nickname${userStatus.index }" name="nickname" type="text" class="font12_blue" maxlength="7" style="width: 100;" value="" onfocus="radiocheckbytextfocus(this);" /&
&/div&&/td&
&input name="userId" type="hidden" value="${user.userId }" /&
&input name="userName" type="hidden" value="${user.userName }" /&
&input name="userGender" type="hidden" value="${user.userGender}" /&
&input name="userEmail" type="hidden" value="${user.userEmail }" /&
&input name="userBirthDay" type="hidden" value="${user.userBirthDay }" /&
&input name="userAddress" type="hidden" value="${user.userAddress }" /&
&/c:forEach&
&td colspan="7" align="right"&
&input type="button" id="btsubmit" name="btsubmit" value="go&&..." /&
&div id="divbodyer"&&/div&
&hr size="2" noshade="noshade" width="665px" color="#4DFFFF"; /&
&div id="div2user"&
&table id="tbusernn" width="665" cellpadding="0" cellspacing="0" border="0"&
&c:if test="${empty userLink}"&
&td&user data is null!&/td&
&c:forEach items="${userLink}" var="usernn" varStatus="usernnStatus"&
&td width="100" align="center"&${usernn.key }&/td&
&td align="center"&${usernn.value.id } - ${usernn.value.name } - ${usernn.value.phone }&/td&
&/c:forEach&
注解:&label for="uid${userStatus.index}"& for标签:for 属性规定 label 与哪个表单元素绑定(显示的联系),点击文本就会自动选中,当前for指向id的radio按钮。
jstl的c:forEach标签的属性:用于通用数据循环,它的属性:
items(属 性):进行循环的项目 (描述),否(是否必须),无(缺省值)
var:代表当前项目的变量名,否,无
varStatus:显示循环状态的变量,否,无
begin:开始条件,否,0
end:结束条件,否,集合中的最后一个项目
step:步长,否,1
jstl中的varStatus和 var 属性一样, varStatus 用于创建限定了作用域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,而是赋予 javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
&c:forEach var=”user" items=”${users}" varStatus=”status”&
&c:out value=”${status.current}”/& 当前对象
&c:out value=”${status.index}”/& 此次迭代的索引
&c:out value=”${status.count}”/& 已经迭代的数量
&c:out value=”${status.first}”/& 是否是第一个迭代对象
&c:out value=”${status.last}”/& 是否是最后一个迭代对象
&/c:forEach&
&c:forEach&标签的items属性支持Java平台所提供的所有标准集合类型。此外,您可以使用该操作来迭代数组(包括基本类型数组)中的元素。它所支持的集合类型以及迭代的元素如下所示:
java.util.Collection:调用iterator()来获得的元素。
java.util.Map:通过java.util.Map.Entry所获得的实例。
java.util.Iterator:迭代器元素。
java.util.Enumeration:枚举元素。
Object实例数组:数组元素。
基本类型值数组:经过包装的数组元素。
用逗号定界的String:分割后的子字符串。
javax.servlet.jsp.jstl.sql.Result:SQL查询所获得的行。
并且使用“index”可以动态的使用js操作页面元素,和后台获取请求数据。
$(document).ready(function(){
//submit html data
$("#btsubmit").click(function(){
var raduid = $("input[name=uid]:checked").val();
if(raduid == null || raduid == ""){
alert("请选择用户");
var userForm = $("#userform").get(0);
var path = $("#contextPath").val();
userForm.action =path+"/usergetinfo.do?param=getHtmlUserInfo";
userForm.method = "post";
userForm.submit();
$("#btsubmit").prop("disabled",true);
//鼠标进入文本框,自动选中radio
function radiocheckbytextfocus(obj){
var nicknameId = $(obj).attr("id");
var radioId = nicknameId.substring(8);
var uidId = "#uid"+radioId;
$(uidId).prop("checked",true);
注解:$( elem ).attr( "checked" )
1.6版本前返回值为boolean,1.6+返回值为string,为属性的实际值,而不是boolean.
新的浏览器返回的是“checked”,老的浏览器返回的是true,所以不能使用attr ;.prop()方法被用来处理boolean attributes。
页面隐藏多条数据,值显示几条可以:
function bkchange(obj)
var img_path=obj.
if (img_path.lastIndexOf("images/jiantouup.jpg")&=0)
obj.src="images/jiantoudown.jpg";
$("tr[class='bkhide']").show();
obj.src="images/jiantouup.jpg";
if($("input[name=uid]:checked").val()+1&3){
$("input[name=sid]").attr("checked",false);
$("tr[class='bkhide']").hide();
js操作表格迭代操作数据(迭代行下列获取单元格数据):
$("#tbuser tr").each(function(){
//get user name
var userName = $(this).children("td").eq(1).text().trim();
js使用“$(obj).attr("id");”获取当前的id。或者$(this).attr("id");
js提交异步提交表单表单,数据为“$("#userForm").serialize()”,可以使用:
url:"getNickName.do?uid="+index,
type:"post",
timeout:20000,
data:$("#userForm").serialize(),
success:function(data){
if(data==null){
data = "";
$(divuserhint).html("");
$(userId).attr("value",data);
clockradio("query");//callback "query"=method flag
error:function(){
$(userId).attr("value","");
$(divuserhint).html(user_info[3]);//js i18n
struts的配置文件(struts-config.xml):
&form-beans&
&form-bean name="UserDataForm" type="com.ts.form.UserDataForm"&&/form-bean&
&/form-beans&
&action path="/usergetinfo" name="UserDataForm" parameter="param"
scope="request"
type="com.ts.actions.UserDataAccessAction"&
&forward name="success" path="/tsjsp/userinfo.jsp"&&/forward&
Action处理:
package com.ts.
import java.io.UnsupportedEncodingE
import java.util.LinkedHashM
import java.util.V
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpS
import org.apache.log4j.L
import org.apache.struts.action.ActionF
import org.apache.struts.action.ActionF
import org.apache.struts.action.ActionM
import org.apache.struts.actions.DispatchA
import com.ts.services.vo.LinkU
import com.ts.services.vo.UserSVo;
import com.ts.testdatas.LinkedMapTestD
import com.ts.testdatas.UserTestD
* ClassName: LinkedMapDataAccessAction &br/&
上午10:20:49 &br/&
* first made
* @version 0.0.1&br/&
public class UserDataAccessAction extends DispatchAction {
private static final Logger LOG = Logger.getLogger(UserDataAccessAction.class);
* getUserInfo:users information &br/&
* @param mapping mapping
* @param form form
* @param request request
* @param response response
* @return forword mapping &br/&
public ActionForward getDBUserInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
//get request session
HttpSession session = request.getSession();
Vector&UserSVo& userList = UserTestData.getUserTestData();
("userList - :"+userList.size());
session.setAttribute("userList", userList);
return mapping.findForward("success");
* getUserInfo:users information &br/&
* @param mapping mapping
* @param form form
* @param request request
* @param response response
* @return forword mapping &br/&
* @throws UnsupportedEncodingException if has error
public ActionForward getHtmlUserInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){
//get request session
HttpSession session = request.getSession();
//set request encoding
request.setCharacterEncoding("GBK");
} catch (UnsupportedEncodingException e) {
("set request encoding failure!");
StringBuffer sf = new StringBuffer();
//get html request data
int uid = Integer.parseInt(request.getParameter("uid"));
sf.append("uid:"+uid);
String userId = request.getParameterValues("userId")[uid];
sf.append(" name:"+userId);
String name = request.getParameterValues("userName")[uid];
sf.append(" name:"+name);
String gender = request.getParameterValues("userGender")[uid];
sf.append(" gender:"+gender);
String email = request.getParameterValues("userEmail")[uid];
sf.append(" email:"+email);
String birthDay = request.getParameterValues("userBirthDay")[uid];
sf.append(" birthDay:"+birthDay);
String address = request.getParameterValues("userAddress")[uid];
sf.append(" address:"+address);
String nickName = request.getParameterValues("nickname")[uid];
sf.append(" nickname:"+nickName);
(sf.toString());
LinkedMapTestData linkdata = new LinkedMapTestData();
LinkedHashMap&String, LinkUser& userLink = linkdata.getLinkedHashMapData(userId, nickName);
("userLink- :"+userLink.size());
session.setAttribute("userLink", userLink);
return mapping.findForward("success");
可以通过"String name = request.getParameterValues("userName")[uid];"获取页面上的数据(radio=checked)。
此处数据用Vector和linkedHashMap存储:
public class UserTestData {
public static Vector&UserSVo& getUserTestData(){
Vector&UserSVo& userList = new Vector&UserSVo&();
UserSVo usertttian = new UserSVo("us1", "甜甜", "22", "女", "", "", "", "北京朝阳", "研究生","xiaoA");
UserSVo userkke = new UserSVo("us2", "可可", "20", "女", "", "", "", "北京昌平", "本科","xiaoB");
UserSVo userkka = new UserSVo("us3", "卡卡", "19", "女", "", "", "", "天津西青", "高中","xiaoC");
UserSVo userddan = new UserSVo("us4", "淡淡", "18", "女", "", "", "", "兰州城关", "高中","xiaoD");
UserSVo usernna
= new UserSVo("us5", "娜娜", "17", "女", "", "", "", "甘肃临夏", "初中","xiaoE");
userList.add(usertttian);
userList.add(userkke);
userList.add(userkka);
userList.add(userddan);
userList.add(usernna);
return userL
public class LinkedMapTestData {
LinkedHashMap&String, LinkUser& linkedHashMap = new LinkedHashMap&String, LinkUser&();
public LinkedHashMap&String, LinkUser& getLinkedHashMapData(String userId,String nickName) {
Vector&UserSVo& vector = UserTestData.getUserTestData();
UserSVo user =
for(int i=0,j=vector.size();i&j;i++){
user = vector.get(i);
LinkUser userlink = user.getUser();
userlink.setId(user.getUserId());
userlink.setName(user.getUserName());
userlink.setPhone(user.getUserPhone());
if(user.getUserId().equals(userId)){
user.setUserNickName(nickName);
linkedHashMap.put(user.getUserNickName(),userlink);
return linkedHashM
此处的LinkedHashMap中key和value中放了对象,在页面可以通过“${usernn.value.id }”或“${usernn.key.id }”获取其中的值显示。
版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至: 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
用云栖社区APP,舒服~
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
一项针对阿里云资源和互联网应用进行监控的服务。云监控服务可用于收集获取阿里云资源的监控指标,探测互联网服务可用性...
基于大数据的移动云服务。帮助App快速集成移动推送的功能,在实现高效、精确、实时的移动推送的同时,极大地降低了开...
是一款简单高效的电子邮件发送服务,它构建在可靠稳定的阿里云基础之上,帮助您快速、精准地实现事务邮件、通知邮件和批...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
MaxCompute75折抢购
Loading...13226人阅读
jsp+freemarker(8)
1:使用jstl标签 (可以和自定义标签配合使用)
首先引用jstl标签
然后使用foreach标签
可以用&c:if test=&${not empty list}&&&/c:if&&&&和 &c:if test=&${not empty list}&&&/c:if& 来处理是否为空的情况。如果不为空,显示值,为空的话,显示无记录等。
后台可以把list放到值栈或者放到request.例如:request.setAttribute(&list&, XXXXlist);
2:使用jsp内嵌java代码遍历List (在后台把List放到session中,如果是大数据量,不应使用此方法)
首先在后台把list放入到session中
红色标记的Data.ALLNEWSLIST 为常量 在com.mon包下的Data类中定义
jsp代码:(注意标红的代码不要忘记引入对应的类)
3:使用Struts标签
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:417664次
积分:5075
积分:5075
排名:第5924名
原创:124篇
转载:79篇
评论:49条
(2)(2)(2)(19)(10)(3)(5)(6)(7)(2)(1)(3)(12)(3)(5)(12)(20)(24)(12)(6)(16)(21)(3)(7)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'jsp页面循环遍历输出结果 - ITeye问答
这是从数据库取数据的方法,我想知道jsp页面如何接受到这个结果集,并且循环遍历输出,谢谢,请详细一点
List&Map&String , Object&& custom(String staff){
Connection con =
PreparedStatement ps =
ResultSet rs =
List&Map&String, Object&& list =
con = JavaUtil.getInstence().getConnection();
String sql = "select name,linkman,contact,details,address from customer where staff = ?";
ps = con.prepareStatement(sql);
ps.setString(1, staff);
rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
String[] colNames = new String[count];
for(int i=0;i&i++){
colNames[i] = rsmd.getColumnLabel(i+1);
list = new ArrayList&Map&String, Object&&();
while(rs.next()){
Map&String, Object& map = new HashMap&String, Object&();
for (int i = 1; i & colNames. i++) {
map.put(colNames[i], rs.getObject(colNames[i]));
list.add(map);
}catch(Exception e){
e.printStackTrace();
JavaUtil.getInstence().free(rs, ps, con);
问题补充:我用的不是servlet,就是javabean
问题补充:我用的不是servlet啊,怎么取到这个嵌套map的list
采纳的答案
问题补充:
我用的不是servlet,就是javabean
原来如此? 呵呵!!
那就在页面
List&A& list = 你的javaBean.custom(); //获得这个数据!
for(A a:list){&&
&td&&%a.getName()%&&/td&&&
还有一种是用:struts标签-logic
&& & logic:iterate& id="user" name="userList"&
&&&&&&&& & bean:write name="user" property="name"/&& br&
&& & /logic:iterate&
原来还是嵌套MAP的 那就直接JAVA代码吧,只要页面最上面导包完整就没有问题的,你可以拿JSP当一个类或者Servlet用的
那就在JSP里在&%%&里写java代码就可以了,如果还是想用JSTL标签的方式可以在获得LIST后,用pageContext.setAttribute("list","list");放到当前页面中,然后下面用&c:forEach item="${list}" var="a" varStatus="n"&&/c:forEach&一样能获得啊。
servlet中request.setAttribute("list",list);
页面里两种:
第一:java代码方式
最好用泛型
List&A& list = (List&A&)request.getAttribute("list");
for(A a:list){
&td&&%a.getName()%&&/td&
第二:标准标签
页面头部引入&@ taglib uri="/jsp/jstl/core" prefix="c" /&
然后可以在数据表现处写:
&c:forEach items="${list}" var="a" varStatus="n"&
&td&${a.name}&/td&
&/c:forEach&
我用的是jstl标签:
&c:forEach var="tempmap" items="${xxList}"&
${tempmap["key"].某属性}
&/c:forEach&
&!--取出list中map键值为key的原属的 某属性--&
希望对你有用
已解决问题
未解决问题博客分类:
近段日子项目需要做一个向form里提交list的操作,从网上找了不少信息,虽然还是有些地方不理解,但终于还是将这个功能实现了。现在总结一下,有的地方我不了解标注了一下,也希望大虾给个解释,不胜感激。也希望能给需要的兄弟们一些信息。
首先,我们需要的list的要继承java.util.ArrayList重新定义一个OurList, 并重写了public Object get(int index)接口,防止越界,这个类是关键之所在,切记!!!
public class OurList extends ArrayList {
private static final long serialVersionUID = 1L;
private Class itemC
public OurList(Class itemClass) {
this.itemClass = itemC
public Object get(int index) {
while (index &= size()) {
add(itemClass.newInstance());
} catch (Exception e) {
e.printStackTrace();
return super.get(index);
然后,就要在ActionForm中声明我们需要的list:
public class OurActionForm extends ActionForm{
private List neededList = new OurList&needClass&();//needClass为指定数据对象
get();set();方法
再就是在jsp页面中的显示:
1.对于html:text格式如下:
&logic:iterate id="needed" name="OurActionForm" property="neededList" indexId="index"&
&td align="left" width=3%&&html:checkbox name="needed" property="argument" indexed="true"/&//indexed属性不能忘掉,用它来逐一遍历list中的记录。
2.对于html:hidden格式如下:
&logic:iterate id="needed" name="OurActionForm" property="neededList" indexId="index"&
&html:hidden ame="needed" property="argument" indexed="true"/&
这样我们就完成可以多行数据提交的ActionForm设计,这里还有点提醒,如果从浏览器端传过来的行索引是跳跃是的,如缺少中间行,而你不想要这些数据的话,且首尾行index相差很大的话,(这个地方不太懂)这种方式可能不太适合。这种多行提交形式比较适合对固定行的数据处理。
浏览: 57943 次
来自: 济南
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 jsp list 遍历 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信