如何使用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名称映射到单个cookieinitParam
:将上下文初始化参数名称映射到单个值- 最后,有些对象允许访问使用范围对象中描述的各种范围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");