如何从URL获取参数与JSP

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

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

是否有请求。getAttribute("accountID")就像有会话或类似的东西吗?< / p >
589284 次浏览

在GET请求中,请求参数取自查询字符串(URL上问号后面的数据)。例如,URL http://hostname.com?p1=v1&p2=v2包含两个请求参数——p1和p2。在POST请求中,请求参数来自查询字符串和在请求体中编码的已发布数据。

下面的例子演示了如何在生成的输出中包含一个请求参数的值:

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

如果使用URL访问页面:

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

结果输出将是:

Hello <b>John Smith</b>!

如果查询字符串上没有指定name,输出将是:

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>!");
}
%>
String accountID = request.getParameter("accountID");

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

使用EL (JSP表达式语言):

${param.accountID}

关于统一表达语言隐式对象Java EE 5教程写道:

隐式对象

JSP表达式语言定义了一组隐式对象:

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

有趣的部分是粗体:)

所以,为了回答你的问题,你应该能够像这样访问它(使用EL):

${param.accountID}

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

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

如果我可以在这里补充评论的话……

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

对我不起作用(它输出0)。

相反,这是可行的:

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

示例:您想删除带有subject_id的主题记录

@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
subjectsDao.delete(subjectid);
return new ModelAndView("redirect:/subject_setup");
}

该参数将用于查询的输入

public int delete(int subjectid) {
String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
return template.update(sql);
}

www.somesite.com/Transaction_List.jsp?accountID=5

对于这个URL, java中有一个方法调用request.getParameter,如果你想在这里将一个数字转换为int,类似地,将字符串值转换为string。所以根据你的要求,只需要复制到下一页的下面一行,

int  accountId =(int)request.getParameter("accountID");

你现在可以在整个页面中使用accountId来调用这个值。

这里accountId是参数的名称,你也可以使用它获得多个参数,但这行不通。它将只与GET方法工作,如果你点击POST请求,那么他们将是一个错误。

希望这对你有帮助。

page 1: 细节 第二页: %>;% String id = request.getParameter("userid") //现在您可以使用id查询HSQL详细产品