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

В JSP, как мне получить параметры из URL?

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

Есть ли request.getAttribute( "accountID" ), например, для сеансов или чего-то подобного?

Ответ 1

В запросе 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>!");
    }
%>

Ответ 2

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

Неявные объекты

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

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

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

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

${param.accountID}

Или, используя JSP Scriptlets (не рекомендуется):

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

Ответ 3

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

${param.accountID}

Ответ 4

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

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

Для этого URL есть вызов метода request.getParameter в java, если вы хотите, чтобы число здесь приводилось к int, аналогично для строкового значения, приведенного к string. так что по вашему требованию, просто скопируйте мимо строки ниже на странице,

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

Теперь вы можете вызвать это значение, используя accountId на всей странице.

здесь accountId - это имя параметра, с помощью которого вы также можете получить более одного параметра, но это не работает. Он будет работать только с методом GET если вы нажмете запрос POST тогда они будут ошибкой.

Надеюсь, это полезно.