2017-07-20 5 views
0

Ich mache ein kleines Projekt unter spring MVC. Federkonfiguration, die ich auf einem sauberen java tun gerade xml nicht habe. Das Problem ist, dass es scheint, als ob alles korrekt initialisiert wurde, aber der Behälter aus irgendeinem Grund nicht startet und stürzt 404. heraus werde ich Ihnen einen Teil des Codes geben:404 nicht gefunden java config spring MVC

webconfig.java

import com.myapp.webapp.Interceptors.AccountInterceptor; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.*; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.JstlView; 

@EnableWebMvc 
@Configuration 
@ComponentScan({"com.myapp.service", 
"com.myapp.webapp" 
}) 
public class WebConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/jsp/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 

    @Override 
    public void addResourceHandlers(final ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
     registry.addResourceHandler("/WEB-INF/jsp/**").addResourceLocations("/jsp/"); 
    } 

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

    @Bean 
    public CommonsMultipartResolver multipartResolver() { 
     CommonsMultipartResolver resolver=new CommonsMultipartResolver(); 
     resolver.setDefaultEncoding("utf-8"); 
     return resolver; 
    } 

    @Bean 
    AccountInterceptor accountInterceptor() { 
     return new AccountInterceptor(); 
    } 


    @Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(accountInterceptor()).addPathPatterns("/account/**"); 
    } 


} 

webservletconfiguration.java

import org.springframework.web.WebApplicationInitializer; 
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; 
import org.springframework.web.servlet.DispatcherServlet; 
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRegistration; 


public class WebServletConfiguration extends AbstractAnnotationConfigDispatcherServletInitializer { 

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

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

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

Und zum Beispiel Controller

import com.myapp.model.Account; 
import com.myapp.model.Phone; 
import com.myapp.service.Service; 
import com.myapp.webapp.utils.SetAttributes; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.WebDataBinder; 
import org.springframework.web.bind.annotation.*; 
import org.springframework.web.multipart.MultipartFile; 
import org.springframework.web.servlet.ModelAndView; 

import javax.servlet.ServletException; 
import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import java.io.IOException; 
import java.time.LocalDate; 
import java.time.format.DateTimeFormatter; 
import java.util.ArrayList; 
import java.util.List; 



@Controller 
@SessionAttributes("accountInSession") 
@RequestMapping("/account") 
public class AccountController { 

    @Autowired 
    Service<Account> accountService; 


    @RequestMapping("/join") 
    public ModelAndView join(){ 
     return new ModelAndView("join"); 
    } 

// there are many more methods 
} 

Wenn ich richtig verstehe, dann, wenn ich zu http://localhost:8085/webapp-1.0-SNAPSHOT/account/join gehen sollte es join.jsp geben werden, die in webapp/WEB-INF/jsp

Haupt pom.xml gespeichert

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>myapp</groupId> 
    <artifactId>socialnet</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <maven.compile.version>3.3</maven.compile.version> 
     <java.version>1.8</java.version> 
     <h2.version>1.4.194</h2.version> 
     <junit.version>4.12</junit.version> 
     <mysql.version>5.1.17</mysql.version> 
     <dbcp.version>2.1</dbcp.version> 
     <mockito.version>1.9.5</mockito.version> 
     <servlet.version>3.1.0</servlet.version> 
     <maven.deploy.version>2.8.2</maven.deploy.version> 
     <jstl.version>1.2</jstl.version> 
     <tomcat.servler.version>9.0.0.M4</tomcat.servler.version> 
     <spring.version>4.2.3.RELEASE</spring.version> 
     <jquery.version>2.1.4</jquery.version> 
    </properties> 


    <modules> 
     <module>common</module> 
     <module>dao</module> 
     <module>service</module> 
     <module>webapp</module> 
    </modules> 


    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>${junit.version}</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-all</artifactId> 
      <version>${mockito.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.version}</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>${maven.compile.version}</version> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-deploy-plugin</artifactId> 
       <version>${maven.deploy.version}</version> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

pom. xml in webapp

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
    <parent> 
     <artifactId>socialnet</artifactId> 
     <groupId>myapp</groupId> 
     <version>1.0-SNAPSHOT</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 

    <artifactId>webapp</artifactId> 
    <packaging>war</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>${servlet.version}</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>myapp</groupId> 
      <artifactId>service</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>${jstl.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>tomcat-servlet-api</artifactId> 
      <version>${tomcat.servler.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.security</groupId> 
      <artifactId>spring-security-crypto</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery</artifactId> 
      <version>${jquery.version}</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

könnten Sie auch Ihre 'application.properties' Dateikonfiguration bereitstellen? –

Antwort

0

Wenn Sie server.contextPath in Ihrem application.properties nicht angegeben haben, müssen Sie beim Zugriff auf die Anwendung den Namen der Datei jar/war nicht eingeben.

Versuchen Sie mit http://localhost:8085/account/join & lassen Sie mich wissen, wenn Sie noch irgendwelche Probleme haben.

+0

Leider hat es nicht geholfen. Alles ist auch ein Fehler 404. Und jetzt mache ich meine App ohne Springboot – KnockKnock

0

Sie brauchen nicht den Krieg Ordnernamen verwenden möchten, verwenden Sie einfach App wie dieser Name:

http://localhost: 8085/webapp/account/join 

Wenn Sie Ihre App-Namen nicht verwenden möchten, dann müssen Sie Ihren Dispatcher Servlet ändern von / bis , um Ihren Webapp-Stammordner als Root-Verzeichnis zu erstellen

Verwandte Themen