Как получить параметры из URL-адреса с помощью JSP
в JSP как получить параметры из URL-адреса?
например, у меня есть URL www.somesite.com/Transaction_List.jsp?accountID=5
Я хочу получить 5.
есть запрос.getAttribute ("accountID") вроде есть для сессий или что-то подобное?
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>!");
}
%>
о Скрытые Объекты на Язык Единого Выражения, the Java EE 5 учебник пишет:
Скрытые Объекты
язык выражений JSP определяет набор неявных объектов:
pageContext
: контекст для страницы JSP. Предоставляет доступ к различным объектам, включая:
servletContext
: контекст сервлета JSP страницы и веб компоненты, содержащиеся в том же приложении. См. раздел доступ к веб-контексту.session
: объект сеанса для клиента. См. Раздел Поддержание Состояния Клиента.request
: запрос, запускающий выполнение страницы JSP. См.получение информации из запросов.response
: ответ, возвращенный страницей JSP. См. Раздел Построение Ответов.- кроме того, несколько доступны неявные объекты, обеспечивающие легкий доступ к следующим объектам:
param
: сопоставляет имя параметра запроса с одним значениемparamValues
: сопоставляет имя параметра запроса с массивом значенийheader
: сопоставляет имя заголовка запроса с одним значениемheaderValues
: сопоставляет имя заголовка запроса с массивом значенийcookie
: сопоставляет имя файла cookie с одним кукиinitParam
: сопоставляет имя параметра инициализации контекста с одним значением- наконец, есть объекты, которые позволяют получить доступ к различным переменным области, описанным в разделе использование объектов области.
pageScope
: отображает имена переменных с областью видимости страницы в их значенияrequestScope
: сопоставляет имена переменных с областью запроса к их значениямsessionScope
: сопоставляет имена переменных в области сеанса с их значенияapplicationScope
: Maps application-имена переменных с областью видимости для их значений
интересные части выделены жирным шрифтом :)
Итак, чтобы ответить на ваш вопрос, вы должны иметь доступ к нему следующим образом (используя EL):
${param.accountID}
или JSP Scriptlets (не рекомендуется):
<%
String accountId = request.getParameter("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);
}