介绍:
springMVC 常用的配置方式是在web.xml 中配置dispatcherservlet 和 ContextConfigLocation 和一些拦截器,然后或是配置applicationContext-mvc.xml 然后在controller 等类中加上注解的方式来启动
其实不一定非要用web.xml 来进行配置,在servlet3.0 标准中就没有web.xml 配置文件了,springMVC 同样也可以不需要依赖web.xml文件,而是通过创建类的方式配置
步骤
1.需要创建一个类继承自AbstractAnnotationConfigDispatcherServletInitializer,这个类的作用相当于DispathcerServlet
package before.springmvc;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
/**
* SpringMVC 非web.xml 配置方式
*
* 传统 DispatcherServlet 配置在 web.xml 的初始化方式
*
* 而 servlet 3.0 则是
* 1. 配置 DispatcherServlet 需要创建一个web 初始化类,继承自 AbstractAnnotationConfigDispathcerServletInitializer
*
* @author Administrator
*
*/
public class OurWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class }; //指定Web配置类
}
@Override
protected String[] getServletMappings() {//将 DispatcherServlet 映射到 "/" 路径
return new String[] { "/" };
}
}
2创建一个RootConfig类,指定扫描包位置
此类类似于application.xml ,事务,数据库等bean 配置,需要配置到本类, 类似于applicationContext 上下文
package before.springmvc;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
/**
* 3. 配置
* @author Administrator
*
*/
@Configuration
//配置注解扫描的包路径
@ComponentScan( basePackages={"com.game"},
excludeFilters = { @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}
)
public class RootConfig {
}
3.创建一个类继承WebMvcConfigurerAdapter 类,相当于视图解析器的作用,同时配置扫描controller 的路径
类似于application-mvc.xml 文件,此文件的配置大部分都可在此类中配置
package before.springmvc;
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.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* 配置 SpringMVC 视图解析类WebConfig ,需要继承自 WebMvcConfigureAdapter
* @author Administrator
*
*/
@Configuration
@EnableWebMvc //启动 springMVC
@ComponentScan(value = {"com.game.controller"}) //配置组件扫描
public class WebConfig extends WebMvcConfigurerAdapter{
//配置jsp 视图解析器
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/view");//设置预加载路径/目录
resolver.setSuffix(".jsp"); //设置允许后缀
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
//配置静态资源的处理
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();//对静态资源的请求转发到容器缺省的servlet,而不使用 DispatcherServlet
}
}
完成这三个步骤就可以在具体类中使用controller 注解和servlet注解等,无需web.xml 文件和 application-mvc.xml文件就可以启动项目
参考:https://www.cnblogs.com/chry/p/6239510.html