2013-11-29 5 views
4

Мой диспетчеру отображение сервлетакак обрабатывать URL, которые не отображенный весной

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/springconfig/dispatcher-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

И контроллер имеет обработчик как

@RequestMapping("moduleone") 
public class ApplicationController {  

    @RequestMapping(value="Login.html",method=RequestMethod.GET) 
    public ModelAndView showLoginPage(){ 

     ModelAndView mv=new ModelAndView("../moduleone/Login"); 
     mv.addObject("loginForm", new LoginForm()); 
     return mv; 

    } 
    @RequestMapping(value="Home.html", method = RequestMethod.GET) 
    public ModelAndView showHome(HttpServletRequest request) { 
     ModelAndView mv=new ModelAndView("Home");  
     mv.addObject("customerName",appCon.getFirstName()); 
     return mv; 
    } 

} 

Можно ли обработчик запросов, которые не отображается в контроллере подобный

http://localhost:8090/Project/moduleone/invalidpage.html 

    http://localhost:8090/Project/moduleone/invalidurl/invalidpage 

Я пробовал @RequestMapping(value="*",method=RequestMethod.GET), но doest wo rk

ответ

2

В 404 (страница не найдена) на самом деле производит исключение на уровне веб-контейнера, контейнеры, как правило, обеспечивают механизм обработки исключений, таким образом, вы можете попробовать исключение (или так называемая ошибка) обработки , как показано ниже;

Сначала создайте контроллер

@Controller 
public class PageNotFoundErrorController { 

    @RequestMapping(value="/pageNotFound.html") 
    public String handlePageNotFound() { 
      // do something 
     return "pageNotFound"; 
    } 
} 

и настроить web.xml, чтобы сопоставить ошибку в контроллер письменного выше;

<error-page> 
    <error-code>404</error-code> 
    <location>/pageNotFound.html</location> 
</error-page> 

вы также можете продлить его, просто добавив 403, 500 и другие ошибки-коды к web.xml и отображение их к любому контроллеру.

Что еще более увлекательно, так это то, что вы можете также отображать любое исключение (даже созданные вашим кодом); здесь вы можете найти хороший пример об этом http://www.mkyong.com/spring-mvc/spring-mvc-exception-handling-example/

1

Я пробую блок кода, и если вы немного измените свой сценарий, я справлюсь с ним.

//This one is OK 
http://localhost:8090/Project/moduleone/invalidpage.html 
//add invalid.html not a folder it should be file 
http://localhost:8090/Project/moduleone/invalidurl/invalidpage.html 

HomeController.java

@RequestMapping(value = {"*/*.html","*.html"}, method = RequestMethod.GET) 
public String test(HttpServletResponse response) throws IOException { 
    return new String("home"); 
} 

диспетчеру-servlet.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>TestSpringMVC</display-name> 
    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
    <servlet-name>SpringDispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/springconfig/dispatcher-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>SpringDispatcher</servlet-name> 
    <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
</web-app> 
  • я могу обрабатывать как запрос с таким способом.
  • Я думаю, вы должны определить страницу исключения для вашего второго сценария.
  • Также вы можете прочитать this issue

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

  • Нет связанных вопросов^_^