Как получить параметры из URL-адреса с помощью JSP

в JSP как получить параметры из URL-адреса?

например, у меня есть URL www.somesite.com/Transaction_List.jsp?accountID=5
Я хочу получить 5.

есть запрос.getAttribute ("accountID") вроде есть для сессий или что-то подобное?

7 ответов


в запросе 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>!

если имя не указано в строке запроса, вывод будет:

Hello <b>null</b>!

в этом примере используется значение параметра запроса в скриптлет:

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

о Скрытые Объекты на Язык Единого Выражения, the Java EE 5 учебник пишет:

Скрытые Объекты

язык выражений JSP определяет набор неявных объектов:

  • pageContext: контекст для страницы JSP. Предоставляет доступ к различным объектам, включая:
    • servletContext: контекст сервлета JSP страницы и веб компоненты, содержащиеся в том же приложении. См. раздел доступ к веб-контексту.
    • session: объект сеанса для клиента. См. Раздел Поддержание Состояния Клиента.
    • request: запрос, запускающий выполнение страницы JSP. См.получение информации из запросов.
    • response: ответ, возвращенный страницей JSP. См. Раздел Построение Ответов.
  • кроме того, несколько доступны неявные объекты, обеспечивающие легкий доступ к следующим объектам:
    • param: сопоставляет имя параметра запроса с одним значением
    • paramValues: сопоставляет имя параметра запроса с массивом значений
    • header: сопоставляет имя заголовка запроса с одним значением
    • headerValues: сопоставляет имя заголовка запроса с массивом значений
    • cookie: сопоставляет имя файла cookie с одним куки
    • initParam: сопоставляет имя параметра инициализации контекста с одним значением
  • наконец, есть объекты, которые позволяют получить доступ к различным переменным области, описанным в разделе использование объектов области.
    • pageScope: отображает имена переменных с областью видимости страницы в их значения
    • requestScope: сопоставляет имена переменных с областью запроса к их значениям
    • sessionScope: сопоставляет имена переменных в области сеанса с их значения
    • applicationScope: Maps application-имена переменных с областью видимости для их значений

интересные части выделены жирным шрифтом :)

Итак, чтобы ответить на ваш вопрос, вы должны иметь доступ к нему следующим образом (используя EL):

${param.accountID}

или JSP Scriptlets (не рекомендуется):

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

используйте EL (язык выражения JSP):

${param.accountID}


Если я могу добавить комментарий здесь...

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

не работает для меня (он печатает 0).

вместо этого это работает:

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


request.getParameter("accountID") Это то, что вы ищете. Это часть API сервлета Java. См.http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletRequest.html для получения дополнительной информации.


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

пример вы хотели удалить запись темы с ее 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);
}