2016-04-19 5 views
1

Ich habe dieses Servlet-MappingFeder Servlet-Mapping/url-pattern

<servlet-mapping> 
     <servlet-name>devicesWeb</servlet-name> 
     <url-pattern>*.do</url-pattern> 
     <url-pattern>/device-catalogue</url-pattern> 
     <url-pattern>/device-catalogue/</url-pattern>     
     <url-pattern>/device-catalogue/*</url-pattern> 
     <url-pattern>/search/search.do</url-pattern> 
</servlet-mapping> 

Mit diesen zwei Methoden:

@RequestMapping(value = "/device-catalogue", method = RequestMethod.GET) 
     private String initForm(@ModelAttribute("searchForm") final SearchForm searchForm, 
           BindingResult result, HttpServletRequest request, Model model, Locale locale) { 

      sessionHelper.checkSessionAttributes(request, locale); 
      return SEARCH_VIEW; 
     } 


@RequestMapping(value = { "/search/showProductDetails.do", "/device-catalogue/{id}" }, method = { RequestMethod.GET, RequestMethod.POST }) 
    private String showProductDetails(@ModelAttribute("searchForm") final SearchForm searchForm, 
           HttpServletRequest request, Model model, Locale locale) { 

     StringTokenizer st = new StringTokenizer(StringEscapeUtils.escapeHtml(searchForm.getItemId()),"="); 

     if (st.countTokens()>1) { 

      String awardId=st.nextToken(); 
      String id=st.nextToken(); 

      Item item = deviceService.getItemByAwardId (Long.parseLong(id), awardId); 

      normalizeWebsiteURL (item); 

      orderCountriesAvailability(item.getCountriesAvailability(), locale); 

      model.addAttribute("item", encodeItemForHTML(item));  
     } 
     return PRODUCT_DETAIL_VIEW; 
    } 

Diese URL funktioniert:

http://127.0.0.1:7001/eDevices/device-catalogue

Aber nicht dieses (ich habe einen 404)!

http://127.0.0.1:7001/eDevices/device-catalogue/16720

Wenn ich dies dem web.xml hinzufügen funktioniert es

<url-pattern>/product-catalogue/16720</url-pattern> 

Antwort

1

Sie eine <url-pattern> pro url nicht schreiben. Verwenden Sie den Frontcontroller der Federmvc (DispatcherServlet), um für die Bearbeitung aller Anwendungsanforderungen verantwortlich zu sein.

Um das zu tun, in Ihrem web.xml Sie brauchen so etwas wie:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 

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

und ein dispatcher-servlet.xml neben dem:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 

    <context:component-scan base-package="com.test" /> <!-- specify your base package instead of "com.test" --> 

    <mvc:annotation-driven /> 

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
      <property name="prefix" value="/WEB-INF/views/" /> 
      <property name="suffix" value=".jsp" /> 
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    </bean> 

    <mvc:resources mapping="/resources/**" location="WEB-INF/resources/" /> <!-- Not necessary but it's nice to address resources(css, images, etc) like this --> 

</beans> 
+0

mmm ..... dies tut es scheint, dass ich don nicht alle Bilder/CSS/Stile richtig (?) –

+1

In Ihrem 'WEB-INF' erstellen Sie einen' Ressourcen'-Ordner, in dem Sie CSS-, Bilder-, Schriftarten-, usw. Ordner erstellen. Jetzt, wann immer Sie diese Ressourcen in Ihren JSP-Seiten verwenden wollten, verwenden Sie das 'c: url'-Tag von jstl. Zum Beispiel wird ein Bild wie folgt aussehen: '"> ' –