2015-10-04 3 views
0

Я пытаюсь настроить проект Spring MVC без диспетчера xml и web xml (т. Е. Без каких-либо xml вообще). Следовательно, я использую технику @JavaConfig весны. Тем не менее, всякий раз, когда я пытаюсь запустить приложение на своем сервере, мой сервер не работает (без какого-либо исключения он получает HTTP 404).
Вот снимок структуры проекта ...

enter image description hereПочему @JavaConfig не работает в Spring MVC?

А вот фрагменты кода:
WebConfig.java

@EnableWebMvc 
@Configuration 
@ComponentScan({ "com.controller" }) 
public class WebConfig extends WebMvcConfigurerAdapter { 

    private static final String VIEW_LOCATION = "/WEB-INF/views/"; 
    private static final String SUFFIX = ".jsp"; 

// @Override 
// public void addResourceHandlers(ResourceHandlerRegistry registry) { 
//  System.out.println("in resource"); 
//  registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");  
// } 

    @Bean 
    public InternalResourceViewResolver viewResolver() { 
     System.out.println("in view"); 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix(VIEW_LOCATION); 
     viewResolver.setSuffix(SUFFIX); 
     return viewResolver; 
    } 

} 

Initializer.java

public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    private static final String MAPPING_URL = "/"; 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     System.out.println("in config"); 
     return new Class[] { WebConfig.class }; 
    } 

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

    @Override 
    protected String[] getServletMappings() { 
     System.out.println("dispatcher"); 
     return new String[] { MAPPING_URL }; 
    } 

} 

HelloController.java

@Controller 
public class HelloController { 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String printWelcome() { 
     System.out.println("in servlet"); 
     return "index"; 
    } 

} 

А вот pox.xml сниппет:

<?xml version="1.0"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com</groupId> 
    <artifactId>UI</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>UI Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.2.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <configuration> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    <finalName>UI</finalName> 
    </build> 
</project> 
+0

Каков адрес, который вы пытаетесь? – Arpit

+0

Просто http: // localhost: 8080/ –

+0

Какой сервер приложений? – Brad

ответ

2

Ваша структура проекта выглядит хорошо, но я сомневаюсь в конфигурации Eclipse. Похоже, ваш пакет не является частью Java-источника.

Пожалуйста, выполните следующие действия:

1. Проверьте Source набор для проекта. Перейдите к свойствам проекта, Java Build Path и на странице Source, найдите записи src\main\java и src\main\resources. Если нет, то нажмите на Add Folder добавить исходные папки и он должен похож на ниже:

Source Folders

2. Перейти к Deployment Assembly и убедитесь, что у вас есть развертывания отображения входа в правильном направлении. Если вы не найдете Deployment Assembly, перейдите на страницу Project Facets и перейдите по ссылке, чтобы преобразовать проект в фасетную форму. В Project Facets вы должны выбрать Dynamic Web Module.

Deployment Assembly должны иметь отображения из Maven Dependencies в WEB-INF/lib, /src/main/webapp на /, src/main/resources на WEB-INF/classes и src/main/java к WEB-INF/classes. Если какая-либо из этих записей отсутствует, вы можете нажать Add и выбрать Folder или Libraries по мере необходимости.

Deployment Descriptor

3. Убедитесь, что вы получаете доступ к проекту, используя имя Context Root, указанное в Web Project Settings вашего проекта, если вы развертываете приложение через Eclipse, а не через maven или какой-либо другой инструмент.

Web Project Settings

В приведенном выше случае, вы можете получить доступ к приложению с помощью localhost:8080/UI, где порт сервера 8080 может варьироваться в зависимости от конфигурации.

+0

Спасибо, человек, он работает сейчас. U просто сохранить мой день .... спасибо еще раз :) –

+0

@Abhinabyte, рад узнать. Счастливое программирование! –

0

Ваш код все в порядке. Я выполнил их без каких-либо изменений на сервере приложений Tomcat 8. Используйте Maven для упаковки war, mvn clean package.

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