Как передать параметры по URL в web.xml? - PullRequest
2 голосов
/ 05 апреля 2011

Мне нужно что-то вроде этого:

/ {paramvalue} / url

И получить значение параметра param и указать URL-адрес сервлета.

Например:

/ josua / profile / mary / messages

"/ josua /" и "/ mary /" - это параметр, который мне нужно получить

Итогда мне нужно сопоставить / {username} / profile с ProfileServlet.class и / {username} / messages для MessagesServlet.class

Можно ли как-нибудь это сделать?

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Отобразить Filter на /*, что делает в основном следующим в doFilter() методе.

String[] pathParams = ((HttpServletRequest) request).getRequestURI().substring(1).split("/", 2);
String userName = pathParams[0];
String servletUrl = pathParams[1];

request.setAttribute("userName", userName);
request.getRequestDispatcher("/" + servletUrl).forward(request, response);

И сопоставьте ProfileServlet на /profile/* и MessagesServlet на /messages/*. В обоих сервлетах имя пользователя должно быть доступно по request.getAttribute("userName").

1 голос
/ 05 апреля 2011

Это звучит как Красивые URL . Если вы на самом деле готовы, я предлагаю вам взглянуть на любую из этих платформ: PrettyFaces (для JSF) и Stripes .

Кроме того, это не то, как мы обычно практикуем в Java, и это может иметь несколько недостатков, вы должны иметь возможность привязать ваш URL к фильтру в вашем web.xml, , см. Сообщение BalusC . А затем используйте метод HttpServletRequest, например getRequestURI(), чтобы продолжить. Кроме того, полезно взглянуть на regex и попытаться использовать его для создания этой системы, поскольку Django (среда веб-разработки на python) достигла этого.

...