Servlet与springmcv的整合
1、创建maven工程,添加servlet的依赖和spring-mvc的依赖
<groupId>com.kerwin</groupId>
<artifactId>springmvc-annotation</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.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>
<version>3.2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
2、web容器启动的时候创建对象;调用方法来初始化容器以及前端控制器
自定义web初始化器,实现AbstractAnnotationConfigDispatcherServletInitializer接口
public class MyWebApplnitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* @return 获取根容器的配置类;(Spring的配置文件) 父容器;
*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{RootConfig.class};
}
/**
* @return 获取web容器的配置类(SpringMVC的配置文件)子容器
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{AppConfig.class};
}
/**
* @return 获取DispatcherServlet的映射信息
* / :拦截所有请求(包括静态页面(xx.js,xx.png)),但不包括*.jsp
* /* :拦截所有请求,包括*.jsp页面;
*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
其中:getRootConfigClasses是获取自定义的spring的注解容器,为父容器,这里是自定义的RootConfig类,如下
@ComponentScan(value = "com.kerwin",excludeFilters = {
@Filter(type = FilterType.ANNOTATION,classes={Controller.class})
})
public class RootConfig {
}
再次:getServletConfigClasses是获取自定义的springmvc的注解容器,为子容器,这里是自定义的AppConfig,如下:
@ComponentScan(value = "com.kerwin",includeFilters =
{
@Filter(type = FilterType.ANNOTATION,classes = Controller.class)
},useDefaultFilters = false)
public class AppConfig {
}
另外我们定义一个controller,和一个service,在启动后就可以访问啦
@Controller
public class HelloController {
@Autowired
HelloService helloService;
@ResponseBody
@RequestMapping("/hello")
public String hello(){
String s = helloService.sayHello("tomcat");
return s;
}
}
@Service
public class HelloService {
public String sayHello(String name){
return "Hello"+name;
}
}