В JSP как получить параметры из URL?
Например, у меня есть URL, который www.somesite.com/Transaction_List.jsp?accountID=5
я хочу получить 5.
Есть ли request.getAttribute ("accountID"), как для сеансов или что-то подобное?
В JSP как получить параметры из URL?
Например, у меня есть URL, который www.somesite.com/Transaction_List.jsp?accountID=5
я хочу получить 5.
Есть ли request.getAttribute ("accountID"), как для сеансов или что-то подобное?
Ответы:
В запросе 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 написано:
Неявные объекты
Язык выражений JSP определяет набор неявных объектов:
pageContext
: Контекст для страницы JSP. Обеспечивает доступ к различным объектам, в том числе:
servletContext
: Контекст сервлета страницы JSP и любых веб-компонентов, содержащихся в одном приложении. См. Доступ к веб-контексту.session
: Объект сеанса для клиента. См. Поддержание состояния клиента.request
: Запрос, запускающий выполнение страницы JSP. См. Получение информации из запросов .response
: Ответ, возвращаемый страницей JSP. См. Построение ответов.- Кроме того, доступно несколько неявных объектов, которые обеспечивают легкий доступ к следующим объектам:
param
: Сопоставляет имя параметра запроса с одним значениемparamValues
: Сопоставляет имя параметра запроса с массивом значенийheader
: Сопоставляет имя заголовка запроса с одним значениемheaderValues
: Сопоставляет имя заголовка запроса с массивом значенийcookie
: Сопоставляет имя файла cookie с одним файлом cookieinitParam
: Сопоставляет имя параметра инициализации контекста с одним значением- Наконец, есть объекты, которые разрешают доступ к различным переменным области действия, описанным в разделе Использование объектов области.
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 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 для получения дополнительной информации.
Например, вы хотели удалить тему записи с ее 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
есть вызов метода request.getParameter
в java, если вы хотите, чтобы здесь был приведен номер int
, аналогично для строкового значения, приведенного в string
. так что для вашего требования, просто скопируйте прошлое ниже строки на странице,
int accountId =(int)request.getParameter("accountID");
Теперь вы можете вызывать это значение, используя accountId
всю страницу.
здесь accountId
есть имя параметра, с помощью которого вы также можете получить более одного параметра, но это не работает. Он будет работать только с GET
методом, если вы нажмете POST
запрос, тогда они будут ошибкой.
Надеюсь, это полезно.