2010-02-19 9 views
13

Я хочу передать параметр «A1B2C3» в приложение GWT на основе Google App Engine. Я делаю это как www.example.com/index.html?key=A1B2C3. Хотя он работает, я бы хотел использовать красивые URL-адреса. Возможно ли переписывать URL-адреса в Google App Engine? Я не мог понять, как это сделать.Довольно URL-адреса в Google App Engine

www.example.com/A1B2C3 

вместо

www.example.com/index.html?key=A1B2C3 

Я использую Google App Engine и GWT. Все в Java.

+0

Возможно, я сделал это, но используя Python вместо Java и Flask в качестве фреймворка. – DDS

ответ

6

Вам необходимо настроить приложение (см. here). Другими словами, вам нужно «проложить» нужные вам шаблоны.

Из инструкции, пример:

<servlet-mapping> 
    <servlet-name>redteam</servlet-name> 
    <url-pattern>/red/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>blueteam</servlet-name> 
    <url-pattern>/blue/*</url-pattern> 
</servlet-mapping> 
+0

Спасибо за ваш ответ. Я пробовал это раньше, но вижу только, как это работает с сервлетами Java. Однако я запрограммировал приложение в GWT, и там у меня нет абстракции сервлетов. Любая идея, как это может работать с GWT? –

+0

Посмотрите на переписывание URL-адресов на вашем HTTP-сервере - например, в Apache (http://httpd.apache.org/docs/2.0/misc/rewriteguide.html) или nginx (http://wiki.nginx.org/NginxConfiguration#Rewrite_examples). –

+0

Спасибо. Но похоже, что это не работает на Google App Engine. –

7

Это крутой вопрос. Я понял, как это сделать для питона.

app.yaml:

- url: /test/(.*) 
    script: test.py \1 

test.py:

#!/usr/bin/env python 

import sys 

def main():   
    for arg in sys.argv: 
    print arg 

if __name__ == '__main__':        
    main() 
+1

Он спрашивает о java. Может быть, этот ответ был бы лучше на вопрос на основе python? Однако я согласен, что это сработало бы на python. –

+4

Да. Я понимаю, что это был java related qu эстин, но я искал эту подобную вещь при поиске в Интернете. Я нашел эту статью, но я хотел знать, как это сделать с помощью python. Когда я это понял, я подумал, что должен поместить его сюда, чтобы другим людям не пришлось искать, насколько я знаю. – Kousha

+1

Я запомню это - Спасибо Kousha! –

3

Try UrlRewriteFilter: http://tuckey.org/urlrewrite/ (или github repo) это обычный старина Java EE фильтр, поэтому он должен работать.

+0

, что сайт ушел сейчас. –

+0

Сайт вернулся. –

+1

UrlRewriteFilter доказал свою эффективность с GAE? –

1

Сэкономьте некоторое время и используйте Restlet. Вы можете сделать именно это, и я сделал это в двух разных проектах. Это довольно прямолинейно. Если вам нужна помощь, сообщите мне.

0

Вот еще один проект, который я думаю, что может реально помочь вам:

Это называется успокоительным-GWT ... это довольно пятно тоже: http://code.google.com/p/restful-gwt/

Успехов!

0

Это best approach я нашел до сих пор для реализации URL переписывания GAE Python

1

я бы, вероятно, использовать PrettyFaces, http://ocpsoft.com/prettyfaces/, который позволяет сделать URL-отображения непосредственно поверх существующего приложения.

Вы просто настроить что-то вроде этого в файле довольно-config.xml:

<url-mapping> 
    <pattern value="/my/pretty/url" /> 
    <view-id value="/my/existing/url" /> 
</url-mapping> 

Или, если вы хотите переписать параметры, вы можете сделать это:

<url-mapping> 
    <pattern value="/my/pretty/url/#{param}" /> 
    <view-id value="/my/existing/url" /> 
</url-mapping> 

А это значит, что любые UR (въездной) теперь стали:

/my/pretty/url/value -> /my/existing/url?param=value 

и исходящей ваши URL-адрес будут выглядеть в HTML-страницах в nd в переадресации:

/my/existing/url?param=value -> /my/pretty/url/value 

Так что это легко добавить к вашим текущим приложениям.

+1

PrettyFaces не работает на приводе + GWT. Может быть, есть способ, но не работает для меня. Получил «Неудачный запуск контекста» «javax.servlet.UnavailableException: проблема с конфигурацией» – eddyparkinson

+0

Пожалуйста, опубликуйте исключение - вы можете публиковать сообщения на форумах поддержки OCPsoft: http://ocpsoft.org/support/ – Lincoln

+0

Я попытаюсь это сделать. Спасибо. – 2013-11-09 08:44:30