如何使用JSP从URL获取参数

时间:2009-12-11 19:46:09

标签: java jsp url get-method

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

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

是否有一个request.getAttribute(“accountID”)就像会话或类似的东西一样?

9 个答案:

答案 0 :(得分:223)

关于Implicit ObjectsUnified Expression LanguageJava EE 5 Tutorial写道:

  

隐式对象

     

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

     
      
  • pageContext:JSP页面的上下文。提供对各种对象的访问,包括:      
        
    • servletContext:JSP页面的servlet的上下文以及同一应用程序中包含的任何Web组件。请参阅访问Web上下文。
    •   
    • session:客户端的会话对象。请参阅维护客户状态。
    •   
    • request:触发JSP页面执行的请求。请参阅Getting Information from Requests
    •   
    • response:JSP页面返回的响应。请参阅构建响应。
    •   
  •   
  • 此外,还有几个隐式对象可以轻松访问以下对象:      
        
    • param:将请求参数名称映射到单个值
    •   
    • paramValues:将请求参数名称映射到值数组
    •   
    • header:将请求标头名称映射到单个值
    •   
    • headerValues:将请求标头名称映射到值数组
    •   
    • cookie:将Cookie名称映射到单个Cookie
    •   
    • initParam:将上下文初始化参数名称映射为单个值
    •   
  •   
  • 最后,有些对象允许访问使用范围对象中描述的各种范围变量。      
        
    • pageScope:将页面范围的变量名称映射到其值
    •   
    • requestScope:将请求范围的变量名称映射到其值
    •   
    • sessionScope:将会话范围的变量名映射到其值
    •   
    • applicationScope:将应用程序范围的变量名称映射到其值
    •   
  •   

有趣的部分是粗体:)

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

${param.accountID}

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

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

答案 1 :(得分:167)

在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>!");
    }
%>

答案 2 :(得分:71)

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

${param.accountID}

答案 3 :(得分:20)

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

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

对我不起作用(打印0)。

相反,这有效:

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

答案 4 :(得分:5)

request.getParameter("accountID")正是您正在寻找的。这是Java Servlet API的一部分。有关详细信息,请参阅http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html

答案 5 :(得分:4)

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

答案 6 :(得分:0)

示例您想要删除主题记录及其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);
}

答案 7 :(得分:0)

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

为此URL在Java中有一个方法调用request.getParameter,如果您想在此处将数字强制转换为int,对于字符串值强制转换为string。因此,根据您的要求,只需复制到页面下面的行下方,

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

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

这里accountId是参数的名称,您也可以使用此参数获得多个参数,但这不起作用。如果您按下GET请求,则仅适用于POST方法,那么它们将是错误的。

希望这会有所帮助。

答案 8 :(得分:0)

第1页: 详情 第2页 : <%字符串ID = request.getParameter(“ userid”);%> //现在您可以将id用于hsql详细产品的sql查询