Як в 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 Tutorial пише:
Неявні об'єкти
Мова вираження 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 (не рекомендується):
<%
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
запит, тоді їх буде помилка.
Сподіваюся, що це корисно.