2014-11-02 2 views
1

Что я хочу сделать, так это то, что когда пользователь вводит url, который ведет нигде, я имею в виду, что у этого URL нет ресурсов, чем должно работать специальное сопоставление.Как установить отображение URL в Spring MVC для не существующих ресурсов?

К примеру, у меня есть следующий контроллер:

@Controller 
public class LoginController { 

    @RequestMapping(value = {"/", "/login"}, method = RequestMethod.GET) 
    public ModelAndView welcome() { 
     return new ModelAndView("mainPage"); 
    } 
} 

Это отображение работает, когда когда пользователь вводит {contextPath}/или {contextPath}/вход Теперь я хочу, чтобы отобразить все другие страницы, я так :

@Controller 
public class LoginController { 

    @RequestMapping(value = {"/", "/login"}, method = RequestMethod.GET) 
    public ModelAndView welcome() { 
     return new ModelAndView("mainPage"); 
    } 

    @RequestMapping(value = {"/**"}, method = RequestMethod.GET) 
    public ModelAndView notFound() { 
     return new ModelAndView("customized404Page"); 
    } 
} 

Теперь, когда пользователь вводит неверный путь, например {contextPath}/sdfsdf customized404Page показан ему

Но последняя отображение является более общим и он работает всегда, и поэтому первое отображение не работает.

Вопрос: Как сопоставить все неверные URL-адреса? Или, может быть, есть более простой способ этого весной?

ответ

1

Самый простой способ иметь настроенное 404 страница является настройка их в web.xml

<error-page> 
    <error-code>404</error-code> 
    <location>/error404.jsp</location> 
</error-page> 

Когда простой jsp не хватает, потому что вам нужен полноценный контроллер Spring, то вы можете отобразить местоположение на карточке контроллера:

@Controller 
public class HttpErrorController { 

    @RequestMapping(value="/error404") 
    public String error404() { 
     ... 
     return "error404.jsp"; 
    } 
} 

<error-page> 
    <error-code>404</error-code> 
    <location>/error404</location> 
</error-page>