在两个JSP页面之间传递参数
我是网络编程新手,我坚持设计一个简单的流程 假设我有一个简单的对象,比如在两个JSP页面之间传递参数,jsp,spring-mvc,Jsp,Spring Mvc,我是网络编程新手,我坚持设计一个简单的流程 假设我有一个简单的对象,比如 public class Object1 { private int ID; private String text; { getters and setters etc} } 我从DAO中得到一堆(取决于以DB为单位的记录编号)作为列表,并将它们打印在页面上的循环中,我们称之为jspPage1。我还有另一个页面,jspPage2,它使用Object1.ID 我想要的是: 创建某种连接,这样,当用户单击或选
public class Object1
{
private int ID;
private String text;
{ getters and setters etc}
}
我从DAO中得到一堆(取决于以DB为单位的记录编号)作为列表
,并将它们打印在页面上的循环中,我们称之为jspPage1
。我还有另一个页面,jspPage2
,它使用Object1.ID
我想要的是:
创建某种连接,这样,当用户单击或选择对象时,所选对象的ID(在jspPage1
上)将发送到jspPage2
到目前为止我的想法
- 使用ID信息创建用于重定向的超链接,例如:
<c:forEach items="${objects}" var="object1"> <tr> <td><a href="/jspPage2?id=${object1.ID}">${object1.text} </a></td> </tr> </c:forEach>
这很糟糕,任何人都可以篡改地址栏并更改ID 价值观 - 我可以混淆选项1的论点信息。这似乎是一个错误 更安全一点,但一些任性的用户仍然可以和 创建哈希
- 我可以编写一些脚本,比如,
request.setAttribute(“ID”,object1.ID)但是我被告知在JSP页面中包含代码和逻辑是错误的
我接近这个问题的方法根本上是错误的,我应该考虑一个不同的设计。(如果有任何提示)您可以将这些值存储到会话中,然后在第二个jsp页面中使用
否则可以使用
request.setAttribute(“name”,value)代码>您可以将这些值存储到会话中,然后可以在第二个jsp页面中使用
否则可以使用request.setAttribute(“name”,value)代码>我能想到的一种方法是使用MVC方法。一旦用户单击URL,就可以让servlet验证对象id是否有效。换句话说,servlet将包含您的所有逻辑。因此,在jspPage1中
<c:forEach items="${objects}" var="object1">
<tr>
<td><a href="
<c:url value='/checkId' >
<c:param name='id'value ='${object1.ID}' />
</c:url>
">${object1.text}</a>
</tr>
</c:forEach>
最后,在jsppage2中,只需显示对象id
<h1>${param.id}</h1>
${param.id}
我能想到的一种方法是使用MVC方法。一旦用户单击URL,就可以让servlet验证对象id是否有效。换句话说,servlet将包含您的所有逻辑。因此,在jspPage1中
<c:forEach items="${objects}" var="object1">
<tr>
<td><a href="
<c:url value='/checkId' >
<c:param name='id'value ='${object1.ID}' />
</c:url>
">${object1.text}</a>
</tr>
</c:forEach>
最后,在jsppage2中,只需显示对象id
<h1>${param.id}</h1>
${param.id}
为了在会话中存储这些值,我必须在jsp页面中编写一个scriptlet,对吗?(因为我不知道用户会选择什么)。如果是这样的话,我已经考虑过这种方法,不喜欢它。请参阅选项#3为了在会话中存储这些值,我必须在jsp页面中编写一个scriptlet,对吗?(因为我不知道用户会选择什么)。如果是这样的话,我已经考虑过这种方法,不喜欢它。请参阅选项#3公开分配参数,但检查控制器中的有效性。是的,我认为这可能是最好的方法。谢谢。公开传递参数,同时检查控制器中的有效性。是的,我认为这可能是最好的方法。非常感谢。