26

我一直在使用以下 3 种方式来访问 URL 中的查询参数。

JSP

String success = request.getParameter("success");
if(success!=null) {
//do something
}

JSTL

<c:if test="${not empty param.success}">
//do something
</c:if>

JavaScript

function getQueryParameter ( parameterName ) {
  var queryString = window.top.location.search.substring(1);
  var parameterName = parameterName + "=";
  if ( queryString.length > 0 ) {
    begin = queryString.indexOf ( parameterName );
    if ( begin != -1 ) {
      begin += parameterName.length;
      end = queryString.indexOf ( "&" , begin );
        if ( end == -1 ) {
        end = queryString.length
      }
      return unescape ( queryString.substring ( begin, end ) );
    }
  }
  return "null";
}

所有这三个都对我有用,但我想知道其中是否有任何问题,哪个是首选?

4

1 回答 1

16

在第一种方法中,您使用 Scriptlets 访问请求参数,它确实有效,但您必须对 null 进行额外检查。因此,总是避免使用 Scriptlet。

在使用 JSTL 的第二种方法中,它比第一种方法更好,它是对 scriptlet 的改进版本,为您提供更大的灵活性和健壮性。所以,这是我们一直鼓励的事情。这是三者中最好的方法。

在最后一种方法中,使用 Javascript,虽然是另一种方法;但从不鼓励。仔细处理参数需要格外小心,并且您有更好的选择来完成相同的工作。Javascript 处理这不是一个理想的任务!

于 2012-10-25T06:28:13.163 回答