2015-12-28 4 views
0

Привет, у меня проблема с java config весной. Я пытался его завершить, изучив несколько уроков, но все же у меня что-то не так. Любая подсказка?Http 404 Spring java config

error

AppConfig.java

package org.spring.mvc.libraryDemo.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.Import; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.JstlView; 

/** 
* Created by wiktor on 28.12.2015. 
*/ 
@Configuration //adnotacja oznaczajaca plik konfiguracyjny 
@EnableWebMvc 
@ComponentScan(basePackages = "org.spring.mvc.libraryDemo") //enable skan komponentow 
@Import({AppConfig.class}) //na co musi jeszcze uwazac Spring 
public class AppConfig { 

    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setViewClass(JstlView.class); 
     viewResolver.setPrefix("/WEB-INF/pages/"); 
     viewResolver.setSuffix(".jsp"); 
     return viewResolver; 
    } 

} 

SpringConfigInit

package org.spring.mvc.libraryDemo.config; 

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

public class SpringConfigInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

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

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

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

} 

Контроллер

package org.spring.mvc.libraryDemo.controllers; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

/** 
* Created by wiktor on 28.12.2015. 
*/ 
@Controller 
public class HomeController { 

    @RequestMapping(value="/",method= RequestMethod.GET) 
    public String sayHello(ModelMap modelMap) 
    { 
     modelMap.addAttribute("greeting","witaj"); 
     return "index"; 
    } 
} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
</web-app> 

ответ

0

С этим типом отображения сервлета, я думаю, вы найдете свое приложение на http://localhost:8080/ {имя warfile} /, а не на http://localhost:8080/

+0

, к сожалению, это не работает, р – waaaas

+0

по warfile имени, которое я имел в виду следующее: Если ваше имя warfile является MyApp.war, URL-адрес должен быть HTTP: // локальный: 8080/MyApp /. После MyApp (который перекрывает переполнение стека) должен быть обратный косой черт. Это то, что вы пробовали? –

+0

Да, но ничего не произошло – waaaas

0

Вы путаете два подхода здесь (как видно ваше web.xml):

ContextLoaderListener с /WEB-INF/applicationContext.xml: это означает, что ваше приложение Spring будет настроено с помощью xml-файла в applicationContext.xml.

Но, очевидно, вы хотите использовать Java Config, то есть компоненты, определенные в аннотированных классах @Configuration. Чтобы включить это, один способ изменить свой веб-XML для чего-то вроде этого:

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value> 
    </init-param> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>SpringRootConfig</param-value> 
    </init-param> 
</servlet> 

AnnotationConfigWebApplicationContext является ключевым здесь. Это сканирует ваш путь к классу и учитывает материал @Configuration.

+0

попробовал что-то вроде этого, но то же самое: d со своей попыткой у меня ошибка между init-param. – waaaas

+0

Я добавил код ниже. – waaaas

0
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>org.spring.mvc.libraryDemo.config.AppConfig</param-value> 
    </context-param> 

    <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>/</url-pattern> 
     </servlet-mapping> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
</web-app>