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


в JSP как я могу получить параметры из URL?

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

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

7 171

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

о Скрытые Объекты на Унифицированный Язык Выражений на Java EE 5 Tutorial пишет:

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

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

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

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

Итак, чтобы ответить на ваш вопрос, вы должны иметь доступ к нему следующим образом (используя 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);
}