学习本文章前需知getRequestDispatcher的使用
2. 使用setAttribute将al和hm对象绑定并传出
前言
作为个人学习记录,有误和不清楚地方可评论指正,互相学习共同进步!谢谢!
提示:以下是本篇文章正文内容
一、setAttribute是什么?
setAttribute(String name, Object o)他是传递参数的一种方式,特别是对一些特殊数据,属于页面之间的传值,从a.jsp到b.jsp一次传递,之后这个request就会失去他的作用范围,再传就要重新设一个request.setAttribute()。
二、使用步骤示例
1.建ArrayList和HashMap
ArrayList<String> al=new ArrayList<String>();
al.add("zs");
al.add("ls");
al.add("ww");
HashMap<String,Integer> hm=new HashMap<String,Integer>();
hm.put("zs", 21);
hm.put("ls", 18);
hm.put("ww", 18);
2. 使用setAttribute将al和hm对象绑定并传出
request.setAttribute("name", al);
request.setAttribute("nameyear", hm);
3.目标jsp取值
ArrayList a=(ArrayList)request.getAttribute("name");//取值放到了a和h中
HashMap h=(HashMap)request.getAttribute("nameyear");
4.示例输出
ArrayList a=(ArrayList)request.getAttribute("name");
HashMap h=(HashMap)request.getAttribute("nameyear");
out.print("for循环输出ArrayList:"+"<br>");
for(int i=0;i<a.size();i++){
out.print(a.get(i)+"<br>");
}
out.print("迭代器输出ArrayList:"+"<br>");
Iterator it1=a.iterator();
while(it1.hasNext()){
out.print(it1.next()+"<br>");
}
out.print("foreach输出ArrayList:"+"<br>");
for (Object i : h.keySet()) {
out.print( i + " 的年龄是:" + h.get(i)+"<br>");
}
out.print("迭代器输出HashMap:"+"<br>");
Set st=h.keySet();
Iterator it2=st.iterator();
while(it2.hasNext()){
String s=(String)it2.next();
out.print(s + " 的年龄是:" + h.get(s)+"<br>");
}
三.全部代码
传出代码:
<%@page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
ArrayList<String> al=new ArrayList<String>();
al.add("zs");
al.add("ls");
al.add("ww");
HashMap<String,Integer> hm=new HashMap<String,Integer>();
hm.put("zs", 21);
hm.put("ls", 18);
hm.put("ww", 18);
request.setAttribute("name", al);
request.setAttribute("nameyear", hm);
RequestDispatcher rd=request.getRequestDispatcher("neizhiduixiang.jsp");
rd.forward(request,response);
%>
</body>
</html>
传入代码(foreach和迭代器遍历输出):
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" import="java.util.*"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
ArrayList a=(ArrayList)request.getAttribute("name");
HashMap h=(HashMap)request.getAttribute("nameyear");
out.print("for循环输出ArrayList:"+"<br>");
for(int i=0;i<a.size();i++){
out.print(a.get(i)+"<br>");
}
out.print("迭代器输出ArrayList:"+"<br>");
Iterator it1=a.iterator();
while(it1.hasNext()){
out.print(it1.next()+"<br>");
}
out.print("foreach输出ArrayList:"+"<br>");
for (Object i : h.keySet()) {
out.print( i + " 的年龄是:" + h.get(i)+"<br>");
}
out.print("迭代器输出HashMap:"+"<br>");
Set st=h.keySet();//ArrayList和HashMap传入类型为Object类
Iterator it2=st.iterator();
while(it2.hasNext()){
String s=(String)it2.next();
out.print(s + " 的年龄是:" + h.get(s)+"<br>");
}
%>
</body>
</html>
总结
setAttribute和getAttribute是页面传值的一种方法