Jsp实现页面forEach循环遍历多条数据的显示和后台对应数据的获取(strurs1)实现

简介: 使用jstl标签和form动态的页面数据显示操作获取! html代码: <body> <center> <div id="header"></div> <div id="divuser"><input id="contextPath" type="hidden" value="${pageC

使用jstl标签和form动态的页面数据显示操作获取!

html代码:

<body>
    <center>
    	<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}">
    				<tr>
    					<td><span>user data is null!</span></td>
    				</tr>
    			</c:if>
    			<c:forEach items="${userList}" var="user" varStatus="userStatus">
    				<tr>
    				  <td width="40" align="center" class="tb_td_border">
			          <input id="uid${userStatus.index}" name="uid" type="radio" value="${userStatus.index}" />
				  </td>
    				  <td width="100" align="center" class="tb_td_border">
				    <label for="uid${userStatus.index}"><span class="font12_blue">${user.userName }</span></label>
				  </td>
    				  <td width="100" align="center" class="tb_td_border">
				    <label for="uid${userStatus.index}"><span class="font12_blue">${user.userGender}</span></label>
				  </td>
    				  <td width="100" align="left" class="tb_td_border">
				    <label for="uid${userStatus.index}"><span class="font12_blue">${user.userEmail }</span></label>
				  </td>
    				  <td width="100" align="center" class="tb_td_border">
				    <label for="uid${userStatus.index}"><span class="font12_blue">${user.userBirthDay }</span></label>
				  </td>
    				  <td width="100" align="center" class="tb_td_border">
				    <label for="uid${userStatus.index}"><span class="font12_blue">${user.userAddress }</span></label>
				  </td>
    				  <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>
    				</tr>
    					<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>
	    			<tr>
	    				<td colspan="7" align="right">
	    					<input type="button" id="btsubmit" name="btsubmit" value="go>>..." />
	    				</td>
    				</tr>
    		</table>
    	</form>
    	</div>
    	<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}">
					<tr>
						<td>user data is null!</td>
					</tr>
				</c:if>
				<c:forEach items="${userLink}" var="usernn" varStatus="usernnStatus">
					<tr>
					<td width="100" align="center">${usernn.key }</td>
					<td align="center">${usernn.value.id } - ${usernn.value.name } - ${usernn.value.phone }</td>
					</tr>
				</c:forEach>  		
    		</table>
    	</div>
    </center>
  </body>

注解:<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操作页面元素,和后台获取请求数据。

js代码:

$(document).ready(function(){
	//submit html data
	$("#btsubmit").click(function(){
		var raduid = $("input[name=uid]:checked").val();
		if(raduid == null || raduid == ""){
			alert("请选择用户");
			return;
		}
		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.src;  
   
 if (img_path.lastIndexOf("images/jiantouup.jpg")>=0)
 {
	 obj.src="images/jiantoudown.jpg";
	 $("tr[class='bkhide']").show();
 }      
 else{
	 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()”,可以使用:

$.ajax({
		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>


Action处理:

package com.ts.actions;
import java.io.UnsupportedEncodingException;
import java.util.LinkedHashMap;
import java.util.Vector;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.ts.services.vo.LinkUser;
import com.ts.services.vo.UserSVo;
import com.ts.testdatas.LinkedMapTestData;
import com.ts.testdatas.UserTestData;

 /**
 * ClassName: LinkedMapDataAccessAction <br/>
 * Date: 2015-1-14 上午10:20:49 <br/>
 * <br/>
 * 
 * @author tskk@ts.com
 * 
 * first made 
 * @version 0.0.1<br/>
 * 
 */

public class UserDataAccessAction extends DispatchAction {
    //log
    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();
        LOG.info("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
        try {
            request.setCharacterEncoding("GBK");
        } catch (UnsupportedEncodingException e) {
            LOG.info("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);
        LOG.info(sf.toString());
        LinkedMapTestData linkdata = new LinkedMapTestData();
        LinkedHashMap<String, LinkUser> userLink = linkdata.getLinkedHashMapData(userId, nickName);
        LOG.info("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", "女", "18707005525", "ttian@ts.com", "1992-02-08", "北京朝阳", "研究生","xiaoA");
        UserSVo userkke = new UserSVo("us2", "可可", "20", "女", "18707005526", "kke@ts.com", "1994-02-07", "北京昌平", "本科","xiaoB");
        UserSVo userkka = new UserSVo("us3", "卡卡", "19", "女", "18707005527", "kka@ts.com", "1995-02-06", "天津西青", "高中","xiaoC");
        UserSVo userddan = new UserSVo("us4", "淡淡", "18", "女", "18707005528", "ddan@ts.com", "1996-02-05", "兰州城关", "高中","xiaoD");
        UserSVo usernna  = new UserSVo("us5", "娜娜", "17", "女", "18707005529", "nna@ts.com", "1997-02-04", "甘肃临夏", "初中","xiaoE");
        userList.add(usertttian);
        userList.add(userkke);
        userList.add(userkka);
        userList.add(userddan);
        userList.add(usernna);
        return userList;
    } 
}

 

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 = null;
        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 linkedHashMap;
    }
}


此处的LinkedHashMap中key和value中放了对象,在页面可以通过“${usernn.value.id }”或“${usernn.key.id }”获取其中的值显示。

目录
相关文章
|
24天前
|
Java 应用服务中间件 开发工具
如何使用IDEA创建JSP页面
如何使用IDEA创建JSP页面
44 0
|
3月前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
2月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
3月前
|
存储 Java
JSP中实现留言页面的编写并将留言信息展示出来
这篇文章介绍了如何在JSP中编写留言页面,并通过JavaBean类存储用户留言信息,同时展示了留言信息的展示方法。
JSP中实现留言页面的编写并将留言信息展示出来
|
3月前
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
3月前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
|
3月前
|
安全 Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+jsp实现的健身房管理系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术实现的健身房管理系统。随着健康生活观念的普及,健身房成为日常锻炼的重要场所,高效管理会员信息、课程安排等变得尤为重要。该系统旨在通过简洁的操作界面帮助管理者轻松处理日常运营挑战。技术栈包括:JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Shiro、Spring Boot 2.0等。系统功能覆盖登录、会员管理(如会员列表、充值管理)、教练管理、课程管理、器材管理、物品遗失管理、商品管理及信息统计等多方面。
|
3月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
74 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
24天前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
54 0
|
3月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上

相关课程

更多