我为hashmap创建了一个对象,其中包含一些键,one.jsp中的值,现在我想在two.jsp中使用相同的对象。如何将此对象发送到two.jsp,以及如何在two.jsp中访问数据(键,值)。
编辑:
one.jsp
HashMap map = new HashMap();
map.add( new Integer( 2 ), "two" );
map.add( new Integer( 4 ), "four" );
System.out.println( map );
// sending param to two.jsp
session.setAttribute("value",map);
two.jsp
// how can i access that object "map" here ?
String map=session.getAttribute("value"); // error
错误
error :object cant be assign to string –
解决
HashMap s_hm=(HashMap)session.getAttribute("value");
答案 0 :(得分:2)
根据您的需要,您可以将其作为属性添加到request
/ session
,然后再将其转发到第二个jsp:
request.setAttribute("transferMap",map );
transferMap
是属性的名称,map
是实际的地图。
答案 1 :(得分:1)
您可以将值放在会话中,并可以在整个会话中检索相同的值 保持会议尝试这种方式
session.setAttribute("value",map);
并使用
进行检索session.getAttribute("value");
这是用于在会话中保留值的演示代码。 以下代码将值放在会话
中<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%session.setAttribute("hi","hi");
Map map = new HashMap();
map.put( new Integer( 2 ), "two" );
map.put( new Integer( 4 ), "four" );
//System.out.println( map );
// sending param to two.jsp
session.setAttribute("value",map);%>
以下代码将从会话中检索值以及在浏览器上显示
<%out.println(session.getAttribute("value"));%>
浏览器输出
{2=two, 4=four}
答案 2 :(得分:0)
使用servlet设置属性而不是one.jsp
request.setAttribute("hashMap",map );
//Forward the request to two.jsp using Request Dispatcher
RequestDispatcher rd = request.getRequestDispatcher("/two.jsp");
rd.forward(request, response);
然后在 two.jsp 中使用jstl来检索它。
<c:out value="${hashMap[2]}"/>
<c:out value="${hashMap[4]}"/>
您需要在项目中包含jstl jar,并在jsp中包含此行。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>