如何使用JSP从URL获取参数

在JSP中,我如何从URL中获取参数?

例如,我有一个URL www.somesite.com/Transaction_List.jsp?accountID=5
我想得到5。

有没有一个request.getAttribute(“accountID”)像会议或类似的东西?

在GET请求中,请求参数取自查询string(URL中问号后面的数据)。 例如,URL http://hostname.com?p1=v1&p2=v2包含两个请求参数; – p1和p2。 在POST请求中,请求参数是从查询string和在请求主体中编码的发布数据中获取的。

此示例演示如何在生成的输出中包含请求参数的值:

 Hello <b><%= request.getParameter("name") %></b>! 

如果该页面是通过URL访问的:

 http://hostname.com/mywebapp/mypage.jsp?name=John+Smith 

结果输出将是:

 Hello <b>John Smith</b>! 

如果在查询string上没有指定名称,输出将是:

 Hello <b>null</b>! 

本示例在scriptlet中使用查询参数的值:

 <% if (request.getParameter("name") == null) { out.println("Please enter your name."); } else { out.println("Hello <b>"+request. getParameter("name")+"</b>!"); } %> 

关于统一expression式语言的隐式对象 , Java EE 5教程写道:

隐式对象

JSPexpression式语言定义了一组隐式对象:

  • pageContext :JSP页面的上下文。 提供访问各种对象,包括:
    • servletContext :JSP页面的servlet和同一应用程序中包含的任何Web组件的上下文。 请参阅访问Web上下文。
    • session :客户端的会话对象。 请参阅维护客户端状态。
    • request :请求触发JSP页面的执行。 请参阅从请求获取信息 。
    • response :JSP页面返回的响应。 请参阅构build响应。
  • 此外,有几个隐式对象可用,可以方便地访问以下对象:
    • param :将请求参数名称映射到单个值
    • paramValues :将请求参数名称映射到值数组
    • header :将请求标题名称映射到单个值
    • headerValues :将请求标题名称映射到值数组
    • cookie :将cookie名称映射到单个cookie
    • initParam :将上下文初始化参数名称映射到单个值
  • 最后,有些对象允许访问使用范围对象中描述的各种范围variables。
    • pageScope :将页面范围的variables名称映射到它们的值
    • requestScope :将请求范围的variables名称映射到它们的值
    • sessionScope :将会话范围的variables名称映射到它们的值
    • applicationScope :将应用程序范围的variables名称映射到它们的值

有趣的部分大胆:)

所以,要回答你的问题,你应该可以像这样访问它(使用EL):

 ${param.accountID} 

或者,使用JSP Scriptlets (不推荐):

 <% String accountId = request.getParameter("accountID"); %> 

使用EL(JSPexpression式语言):

${param.accountID}

如果我可以在这里添加评论…

<c:out value="${param.accountID}"></c:out>

不适合我(打印0)。

相反,这工作:

<c:out value="${param['accountID']}"></c:out>

request.getParameter("accountID")就是你要找的。 这是Java Servlet API的一部分。 有关更多信息,请参阅http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html

 String accountID = request.getParameter("accountID"); 
Interesting Posts