Java 将映射或对象从jsp传递到servlet
我有一个将映射从servlet传递到jsp的应用程序。在jsp中,我显示了映射,并提供了一个选项来删除或编辑映射的值。但是,在更改值之后,如何将映射发送回另一个servlet,在那里它接收映射 假设我有一个servet“servletA”,它将映射传递给jsp,如下所示:Java 将映射或对象从jsp传递到servlet,java,jsp,servlet-3.0,Java,Jsp,Servlet 3.0,我有一个将映射从servlet传递到jsp的应用程序。在jsp中,我显示了映射,并提供了一个选项来删除或编辑映射的值。但是,在更改值之后,如何将映射发送回另一个servlet,在那里它接收映射 假设我有一个servet“servletA”,它将映射传递给jsp,如下所示: public int Id=11111; Map<String,String> configParamsMap=new HashMap<String,String>(size); configP
public int Id=11111;
Map<String,String> configParamsMap=new HashMap<String,String>(size);
configParamsMap.put("1", "arg1");
configParamsMap.put("2", "arg2");
configParamsMap.put("3", "arg3");
configParamsMap.put("4", "arg4");
//
System.out.println("parameters passing to the jsp:: appId"+appId+"::configId"+configId);
request.setAttribute("configParamsMap", configParamsMap);
request.setAttribute("Id", Id);
RequestDispatcher rd = request.getRequestDispatcher("/JSP/display.jsp");
rd.forward(request, response);
public int Id=11111;
Map configParamsMap=新哈希映射(大小);
configParamsMap.put(“1”、“arg1”);
configParamsMap.put(“2”、“arg2”);
configParamsMap.put(“3”、“arg3”);
configParamsMap.put(“4”、“arg4”);
//
System.out.println(“传递给jsp::appId”+appId+“::configId”+configId的参数);
setAttribute(“configParamsMap”,configParamsMap);
setAttribute(“Id”,Id);
RequestDispatcher rd=request.getRequestDispatcher(“/JSP/display.JSP”);
转发(请求、响应);
在jsp中,我可以删除或编辑这些值。我正在执行以下删除操作并传递参数
<c:forEach var="configParams" items="${configParamsMap}">
<!-- KEY: ${configParams.key} - VALUE: ${configParams.value} -->
<tr>
<td>
<c:out value="${configParams.key}" />
</td>
<td><input type="text" name="" value="${configParams.value}" /></td>
</tr>
</c:forEach>
</table>
<form action="sevletB?action=Delete" method="post"><input
type="submit" value="Delete"></input>
<input type="hidden" name="Id" value="${Id}"></input>
</form>
我的问题是如何像我对参数“id”所做的那样将映射传递回另一个servlet“servletB”。此映射应该是一个,其中用户编辑了一些值,即jsp中映射的当前状态。- 您可以有一个隐藏的
- 用map的值填充
${mapitem.value}
- 提交给servletB(在servletB中读取)
- 将所有代码写入表单标签中
使用此代码:
<c:forEach var="configParams" items="${configParamsMap}" varStatus="itemsRow">
<tr>
<td>
<c:out value="${configParams.key}" />
</td>
<td><input type="text" name="" value="${configParams.value}" /></td>
</tr>
</c:forEach>
使用将包含${configParams.key}
值的隐藏字段。使用循环迭代器${itemsRow.index}
生成可区分的参数名,如
提交表单时,您可以通过在
getParameter(“”)
方法中提供名称来访问请求中的所有这些值。您不能通过HTTP请求传递映射。
我想您希望跟踪所有更改,特别是从JSP到服务器端的删除
因此,与其将其存储在请求中,不如将其存储在会话中
JSP中的
session.setAttribute("configParamsMap", configParamsMap);
并在servlet中获取要从请求中删除的id
String idToDelete = request.parameter("id");
//Now delete the id from the map
Map<String,String> configParamsMap = (Map<String,String>)session.getAttribute("configParamsMap");
//Delete it from the map
configParamsMap.remove(idToDelete );
String idToDelete=request.parameter(“id”);
//现在从地图上删除id
Map configParamsMap=(Map)session.getAttribute(“configParamsMap”);
//从地图上删除它
configParamsMap.remove(idToDelete);
TechExchangeCan你能再详细说明一下吗,使用一些shore codes@TechExchangeCan你能告诉我如何设置以及如何从JSP将其提交到servlet B吗?我刚才提到的不完全语法输入有一个选择类型输入请参见下面的代码你能告诉我确切的语法并更新它吗?因为当我尝试时,会出现错误
String idToDelete = request.parameter("id");
//Now delete the id from the map
Map<String,String> configParamsMap = (Map<String,String>)session.getAttribute("configParamsMap");
//Delete it from the map
configParamsMap.remove(idToDelete );