2016-11-25 6 views
4

Я пытаюсь развернуть веб-приложение Spring MVC с Tiles на сервер Tomcat 8. Я не использую xml, кроме pom.xml. Я получаю ошибку 404, как только я запустил приложение. Любые идеи о том, почему?HTTP 404 Spring MVC with Tiles no XML

инициализатора:

package soda.store.config; 

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class SodaStoreInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return null; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class[] { SodaStoreContextConfig.class }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 
} 

ContextConfig:

package soda.store.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration;  
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 
import org.springframework.web.servlet.view.tiles3.TilesConfigurer; 
import org.springframework.web.servlet.view.tiles3.TilesView; 

@EnableWebMvc 
@Configuration 
@ComponentScan("soda.store.*") 

public class SodaStoreContextConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean 
    public ViewResolver viewResolver() { 
     UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); 
     viewResolver.setViewClass(TilesView.class); 
     return viewResolver; 
    } 

    @Bean 
    public TilesConfigurer tilesConfigurer() { 
     TilesConfigurer tilesConfigurer = new TilesConfigurer(); 
     tilesConfigurer.setDefinitionsFactoryClass(TilesDefinitionsConfig.class); 
     tilesConfigurer.setCheckRefresh(true); 
     TilesDefinitionsConfig.addDefinitions(); 
     return tilesConfigurer; 
    } 
} 

TilesDefinitions:

package soda.store.config; 

import java.util.HashMap; 
import java.util.Map; 

import org.apache.tiles.Attribute; 
import org.apache.tiles.Definition; 
import org.apache.tiles.definition.DefinitionsFactory; 
import org.apache.tiles.request.Request; 

public final class TilesDefinitionsConfig implements DefinitionsFactory { 

    private static final Map<String, Definition> tilesDefinitions = new HashMap<String,Definition>(); 
    private static final Attribute BASE_TEMPLATE = new Attribute("/WEB-INF/views/layouts/defaultLayout.jsp"); 

    @Override 
    public Definition getDefinition(String name, Request tilesContext) { 
     return tilesDefinitions.get(name); 
    } 

    /** 
    * @param name <code>Name of the view</code> 
    * @param title <code>Page title</code> 
    * @param body <code>Body JSP file path</code> 
    * 
    * <code>Adds default layout definitions</code> 
    */ 
    private static void addDefaultLayoutDef(String name, String title, String body) { 
     Map<String, Attribute> attributes = new HashMap<String,Attribute>(); 

     attributes.put("title", new Attribute(title)); 
     attributes.put("header", new Attribute("/WEB-INF/views/layouts/header.jsp")); 
     attributes.put("body", new Attribute(body)); 
     attributes.put("footer", new Attribute("/WEB-INF/views/layouts/footer.jsp")); 

     tilesDefinitions.put(name, new Definition(name, BASE_TEMPLATE, attributes)); 
    } 

    /** 
    * <code>Add Apache tiles definitions</code> 
    */ 
    public static void addDefinitions() { 
     addDefaultLayoutDef("login1", "Login", "/WEB-INF/views/login.jsp"); 
    } 
} 

Пружина регулятора:

package soda.store.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.transaction.annotation.Transactional; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

@Controller 
@RequestMapping("/") 
public class SodaStoreController { 

    @RequestMapping(value = {"/"}, method = RequestMethod.GET) 
    public String homePage(Model model) { 
     return "login1"; 
    } 
} 

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.o7planning</groupId> 
    <artifactId>SodaStore</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>SodaStore Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <java-version>1.8</java-version> 
     <apachetiles.version>3.0.7</apachetiles.version> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
     <servletapi.version>3.1.0</servletapi.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <!-- Spring dependencies --> 
     <!-- http://mvnrepository.com/artifact/org.springframework/spring-core --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 

     <!-- http://mvnrepository.com/artifact/org.springframework/spring-web --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 

     <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 

     <!-- http://mvnrepository.com/artifact/org.springframework/spring-orm --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.2.5.RELEASE</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/org.apache.tiles/tiles-jsp --> 
     <!-- Apache Tiles --> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>${apachetiles.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>${apachetiles.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-servlet</artifactId> 
      <version>${apachetiles.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>${apachetiles.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>${servletapi.version}</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.0</version> 
     </dependency> 

     <!-- https://mvnrepository.com/artifact/javax.servlet/jstl --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>SodaStore</finalName> 
    </build> 
</project> 

WEB-INF structure

Журналы:

Nov 25, 2016 12:39:47 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SodaStore' did not find a matching property. 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server version:  Apache Tomcat/8.0.8.5.5 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server built:   Aug 31 2016 19:51:16 UTC 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Server number:   8.5.5.0 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Name:    Windows 10 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: OS Version:   10.0 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Architecture:   amd64 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Java Home:    C:\Program Files\Java\jdk1.8.0_102\jre 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Version:   1.8.0_102-b14 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: JVM Vendor:   Oracle Corporation 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_BASE:   C:\Users\fmarq_000\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: CATALINA_HOME:   C:\Users\fmarq_000\Downloads\apache-tomcat-8.5.5-windows-x64\apache-tomcat-8.5.5 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.base=C:\Users\fmarq_000\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dcatalina.home=C:\Users\fmarq_000\Downloads\apache-tomcat-8.5.5-windows-x64\apache-tomcat-8.5.5 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dwtp.deploy=C:\Users\fmarq_000\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Djava.endorsed.dirs=C:\Users\fmarq_000\Downloads\apache-tomcat-8.5.5-windows-x64\apache-tomcat-8.5.5\endorsed 
Nov 25, 2016 12:39:47 PM org.apache.catalina.startup.VersionLoggerListener log 
INFO: Command line argument: -Dfile.encoding=Cp1252 
Nov 25, 2016 12:39:47 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_102\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_111/bin/server;C:/Program Files/Java/jre1.8.0_111/bin;C:/Program Files/Java/jre1.8.0_111/lib/amd64;C:\app\demoMan\product\12.1.0\dbhome_2\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Lenovo\FusionEngine;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files (x86)\Lenovo\Motion Control\;C:\Program Files (x86)\Common Files\lenovo\easyplussdk\bin;C:\Program Files (x86)\Skype\Phone\;C:\Users\fmarq_000\Downloads\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin;C:\Users\fmarq_000\AppData\Local\Microsoft\WindowsApps;C:\Users\fmarq_000\Downloads\eclipse-jee-mars-2-win32-x86_64\eclipse;;. 
Nov 25, 2016 12:39:47 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-nio-8080"] 
Nov 25, 2016 12:39:48 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Nov 25, 2016 12:39:48 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-nio-8009"] 
Nov 25, 2016 12:39:48 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector 
INFO: Using a shared selector for servlet write/read 
Nov 25, 2016 12:39:48 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 2352 ms 
Nov 25, 2016 12:39:48 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Nov 25, 2016 12:39:48 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/8.0.8.5.5 
Nov 25, 2016 12:39:54 PM org.apache.jasper.servlet.TldScanner scanJars 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
Nov 25, 2016 12:39:54 PM org.apache.catalina.core.ApplicationContext log 
INFO: Spring WebApplicationInitializers detected on classpath: [[email protected]] 
Nov 25, 2016 12:39:55 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'dispatcher' 
Nov 25, 2016 12:40:00 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler [http-nio-8080] 
Nov 25, 2016 12:40:00 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler [ajp-nio-8009] 
Nov 25, 2016 12:40:00 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 11796 ms 
+0

Предоставить журналы, пожалуйста? – ScanQR

+0

Хорошо, добавлены журналы. – Derrick

ответ

0

Проблема решена. Я переместил папку WEB-INF из src в WebContent.