Як в 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запит, тоді їх буде помилка.
Сподіваюся, що це корисно.