2

Я стараюсь перенести эту часть web.xml в моей Spring MVC 4.0 (Servlet 3.0 нет web.xml anylonger ;-) JavaConfig:Spring MVC JavaConfig проблема при переносе servletMapping из web.xml

Часть из web.xml

<servlet> 
    <servlet-name>rest</servlet-name>    
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>rest</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

у меня нет никакого реального понятия, как это сделать для моей WebAppInitalizer, который заключается в следующем:

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

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

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

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

    } 

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

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

} 

ли какой-либо тело знает, как это сделать?

Большое спасибо заранее

Приветствия

Джон

ответ

1

Пожалуйста, Try This,

Следующий код для AppConfig.java,

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
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.JstlView; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 

@Configuration 
@ComponentScan("com.basepackage") 
@EnableWebMvc 
public class AppConfig extends WebMvcConfigurerAdapter { 
    @Bean 
    public UrlBasedViewResolver setupViewResolver() { 
     UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
     resolver.setPrefix("/WEB-INF/jsp/"); 
     resolver.setSuffix(".jsp"); 
     resolver.setViewClass(JstlView.class); 
     return resolver; 
    } 

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

И это для AppInitializer.java,

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

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

public class AppInitializer implements WebApplicationInitializer { 

    @Override 
    public void onStartup(ServletContext context) throws ServletException { 
     AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); 
     ctx.register(AppConfig.class); 
     ctx.setServletContext(context); 

     ServletRegistration.Dynamic servlet = context.addServlet("dispatcher", new DispatcherServlet(ctx)); 

     servlet.setLoadOnStartup(1); 
     servlet.addMapping("/"); 

    } 

} 

И зависимости требуютс,

<properties> 
    <springframework.version>4.0.6.RELEASE</springframework.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>javax.servlet.jsp-api</artifactId> 
     <version>2.3.1</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
</dependencies> 
+0

Привет Гуна. Спасибо за ответ и код. Я тоже переписываю метод onstartup, но не уверен, правильно ли я сделал это. Вы используете 'AppConfig.class'. Является ли мой «RootConfig.class»? Поэтому ваш 'ctx.register (AppConfig.class);' будет 'rootContext.register (getRootConfigClasses() [0]);' в моем кодировании? Спасибо, Джон. –

+0

Извините # Джон, я забыл сначала добавить класс AppConfig. Plese попробуйте отредактированный ответ .. Спасибо .. – Guna

+0

Hi Guna. Спасибо за это обновление. Это сработало. Brilliant. Приветствия. Джон –

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