【问题标题】:JSP, GET and POST parametersJSP、GET 和 POST 参数
【发布时间】:2010-11-14 15:04:48
【问题描述】:

我需要用 JSP 做一些小任务;作为 JSP 的新手,我想知道是否有可能从 HTTP 请求中仅获取 GET 或仅获取 POST 参数。

我见过ServletRequest.getParameter(和类似的),但似乎这些方法同时获得了 GET POST 参数。有没有办法只获取其中一个,而无需自己解析 URL 或请求正文?如果没有,是否有任何值覆盖哪个值的优先规则(如 POST 参数总是覆盖 GET 参数)?

【问题讨论】:

  • 这实际上是代码异味。功能需求是什么?为什么不给 GET 和 POST 一个不同的名字呢?
  • @BalusC:这实际上是一个安全问题。要求仅将特定参数作为 POST 参数(或分别作为 GET)发送可以提高最终用户的安全性。而且我真的不想盲目地接受任何类型的参数,因为我在多年创建 Web 应用程序的过程中学会了避免这种情况。
  • 然后只需确定请求方法或实现一个 servlet,它使您只能在某个方法上执行代码。请参阅 Bozho 的回答。
  • 好吧,看看我对那个答案的评论。

标签: java jsp servlets


【解决方案1】:

通常,最好在 servlet 中处理请求。他们有doGet(request, response)doPost(request, response) 方法,用来区分两者。

如果你真的坚持要在 JSP 中做,你可以使用request.getMethod() 区分方法。它将返回 GETPOST

既然这是作业,我想重点是学习如何使用 servlet 及其doX 方法,所以就这样做吧。

更新:可以获取查询字符串(request.getQueryString()),它只是获取参数,并解析它,但我不会说那是常见且良好的做法。

【讨论】:

  • 是的,但请记住,您可以在 POST 中包含 URL 参数,因此关于优先级和来源的问题仍然适用,即使在 servlet 中(当然,这就是 JSP 的样子)。
  • 我们必须使用JSP;不,不要仅仅因为它是家庭作业就暗示它背后的原因。该课程只是随机提出新技术,并希望我们在不给出先前指示的情况下用它做某事等。是的,作为 T.J. Crowder 说,你仍然可以在 POST 请求中设置 GET 参数。
  • 在 MVC 上下文中,建议通过充当控制器的 servlet 处理请求。 JSP 基本上是视图。
【解决方案2】:

在 JSP 中,您可以查看请求对象以确定它是哪种请求(GET 或 POST),但只有一个参数映射。

【讨论】:

    【解决方案3】:

    试试 [Servlet + JSP]。在 Servlet 中,您可以在 doPost() 或 doGet() 之间进行选择

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 1970-01-01
      • 2012-02-10
      • 2013-05-13
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多