Tomcat, Groovy и чистые URL - PullRequest
       62

Tomcat, Groovy и чистые URL

1 голос
/ 24 января 2010

Я пытаюсь запустить Groovy внутри Tomcat с чистыми URL-адресами. Поскольку мои знания о отображении URL-адресов Tomcat и его фильтрах весьма ограничены, я сталкиваюсь с кирпичной стеной.

Я хотел бы создать фронт-контроллер с именем index.groovy, который обрабатывает все входящие запросы. Проблема в том, что я не могу понять, как создать правильные web.xml отображения. Это то, что у меня сейчас есть (что довольно стандартно):

<servlet>
    <servlet-name>Groovy</servlet-name>
    <servlet-class>groovy.servlet.GroovyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Groovy</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Если я сейчас попытаюсь получить доступ к своему экземпляру по следующему URL, я получу 404.

http://localhost:8080/GroovyTest/index.groovy/test

Конечно, в идеале я бы хотел, чтобы выполнялся сценарий index.groovy, чтобы я мог выбрать оставшуюся часть пути.

1 Ответ

3 голосов
/ 24 января 2010

Я думаю, что главной проблемой здесь является ваше недопонимание того, как работает отображение сервлета и GroovyServlet. Итак, вот краткое объяснение:

  • Когда вы описываете такое сопоставление, это указывает на то, что все URL, соответствующие шаблону "/ *", будут отправлены в класс GroovyServlet. При таком общем шаблоне все URL действительны, что может привести к некоторым проблемам, например, при попытке доступа к изображениям, стилям и т. Д ...
  • GroovyServlet уже является диспетчером. Если вы посмотрите на его исходный код, то увидите, что из-за его наследования он просто проверит, существует ли данный путь в каталоге "/ WEB-INF / groovy /". В вашем примере это означает, что он ищет файл "/WEB-INF/groovy/index.groovy/test"
  • Если этот файл существует, он выполняется как скрипт Groovy (с некоторым декоратором), а результат возвращается с типом mime "text / html".

Теперь я думаю, вы можете ясно понять, почему это не работает на вашем примере. Я бы предпочел вам два других подхода для достижения вашей цели:

  • Взгляните Grails , Это одна из лучших подходящих сред для создания отличных веб-разработок.
  • Возьмем источник микроаграммы Gaelyk . Мало того, что это хорошее начало, чтобы понять, как работает диспетчеризация, но у него также есть хороший учебник, помогающий управлять чистыми URL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...