2013-06-16 6 views
2

Я работаю над своим приложением Spring и, как указано ниже, я сопоставляю несколько URL-адресов одному методу. Я делаю один метод «root» для обслуживания всего запроса, который начинается с индекса и root.Подстановочные знаки в requestmapping

@RequestMapping(value = {"/", "index*"}, method = RequestMethod.GET) 
public String root(Model model) { 
    logger.info("Welcome to index page."); 
    model.addAttribute("hello", "Welcome to index page.");  
    return "index"; 
} 

Приведенный выше "index*" работает нормально в случае "index", "index123", "index.html" and "index.txt" и запрос направлен к отображенной методу т.е. "root", но ее не работает для "index.jsp". В случае "index.jsp" я получаю "HTTP Status 404" "The requested resource is not available".

web.xml Отрывок из

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Может кто-то дайте мне знать причину этого и как я могу заставить его работать?

+0

Добавить '* .jsp' too – NINCOMPOOP

+0

Я не хочу отображать все jsps, просто хочу иметь один единственный метод для запроса типа индекса *. – Garry

+0

В вашем web.xml находится диспетчерский сервлет, отображаемый с помощью «/» url? –

ответ

0

Я думаю, что это может произойти, потому что контейнер сервлета отображает * .jsp запросы на JspServlet, чтобы скомпилировать и выполнить jsp. Если вы используете Tomcat, это происходит на верхнем уровне web.xml в каталоге Tomcat conf. Это означало бы, что запросы, заканчивающиеся на * .jsp, будут перехвачены до того, как они достигнут вашего контроллера. JspServlet попытается загрузить файл index.jsp на основе пути в webapp и вернет 404, когда он не сможет его найти.

Для /index.jsp, вы можете сделать это лучше всего, чтобы создать этот файл в корневом каталоге webapp, чтобы вы не видели 404. Вы могли бы добавить к нему некоторый код для перенаправления запросов где-то еще (возможно, до /index.html - или к какой-либо другой точке входа вашего приложения).

Смежные вопросы