Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在两个JSP页面之间传递参数_Jsp_Spring Mvc - Fatal编程技术网

在两个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页面中使用


否则可以使用
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公开分配参数,但检查控制器中的有效性。是的,我认为这可能是最好的方法。谢谢。公开传递参数,同时检查控制器中的有效性。是的,我认为这可能是最好的方法。非常感谢。