SpringMVC简介
SpringMVC是一种基于Java实现MVC模型的轻量级Web框架。
优点:
使用简单,开发便捷(相比于Servlet)
灵活性强
入门案例
【第一步】创建web工程(Maven结构);在pom.xml设置tomcat服务器,加载web工程(tomcat插件)
1 <build> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.tomcat.maven</groupId> 5 <artifactId>tomcat7-maven-plugin</artifactId> 6 <version>2.1</version> 7 <configuration> 8 <port>80</port> 9 <path>/</path> 10 </configuration> 11 </plugin> 12 </plugins> 13 </build>
【第二步】在pom.xml导入坐标(SpringMVC+Servlet)
1 <dependencies> 2 <dependency> 3 <groupId>javax.servlet</groupId> 4 <artifactId>javax.servlet-api</artifactId> 5 <version>3.1.0</version> 6 <scope>provided</scope> 7 </dependency> 8 <dependency> 9 <groupId>org.springframework</groupId> 10 <artifactId>spring-webmvc</artifactId> 11 <version>5.2.10.RELEASE</version> 12 </dependency> 13 </dependencies>
【第三步】定义处理请求的功能类(UserController)
1 //定义表现层控制器bean 2 @Controller 3 public class UserController { 4 //设置映射路径为/save,即外部访问路径 5 @RequestMapping("/save") 6 //设置当前操作返回结果为指定json数据(本质上是一个字符串信息) 7 @ResponseBody 8 public String save(){ 9 System.out.println("user save ..."); 10 return "{'info':'springmvc'}"; 11 } 12 }
@RequestMapping注解:
位置:SpringMVC控制器方法定义上方。
作用:设置当前控制器方法请求访问路径。
注:对于SpringMVC而言,Controller方法返回值默认表示要跳转的页面,没有对应的页面就会报错。如果不想跳转页面而是响应数据,那么就需要在方法上使用@ResponseBody注解。
@ResponseBody注解:
位置:SpringMVC控制器方法定义上方。
作用:设置当前控制器方法响应内容为当前返回值,无需解析。
【第四步】编写SpringMVC配置类,加载处理请求的Bean。
1 //springmvc配置类,本质上还是一个spring配置类 2 @Configuration 3 @ComponentScan("com.itheima.controller") 4 public class SpringMvcConfig { 5 }
【第五步】加载SpringMVC配置,并设置SpringMVC请求拦截的路径
1 //web容器配置类 2 public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer { 3 //加载springmvc配置类,产生springmvc容器(本质还是spring容器) 4 protected WebApplicationContext createServletApplicationContext() { 5 //初始化WebApplicationContext对象 6 AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); 7 //加载指定配置类 8 ctx.register(SpringMvcConfig.class); 9 return ctx; 10 } 11 12 //设置由springmvc控制器处理的请求映射路径 13 protected String[] getServletMappings() { 14 return new String[]{"/"}; 15 } 16 17 //加载spring配置类 18 protected WebApplicationContext createRootApplicationContext() { 19 return null; 20 } 21 }
AbstractDispatcherServletInitializer类是SpringMVC提供的快速初始化Web3.0容器的抽象类。
AbstractDispatcherServletInitializer提供三个接口方法供用户实现:
createServletApplicationContext()方法,创建Servlet容器时,加载SpringMVC对应的bean并放入WebApplicationContext对象范围中,而WebApplicationContext的作用范围为ServletContext范围,即整个web容器范围。
getServletMappings()方法,设定SpringMVC对应的请求映射路径,设置为/表示拦截所有请求,任意请求都将转入到SpringMVC进行处理。
createRootApplicationContext()方法,如果创建Servlet容器时需要加载非SpringMVC对应的bean,使用当前方法进行,使用方式同createServletApplicationContext()。
入门案例工作流程分析
启动服务器初始化过程
1. 服务器启动,执行ServletContainersInitConfig类,初始化web容器
2. 执行createServletApplicationContext方法,创建了WebApplicationContext对象
3. 加载SpringMvcConfig配置类
4. 执行@ComponentScan加载对应的bean
5. 加载UserController,每个@RequestMapping的名称对应一个具体的方法
6. 执行getServletMappings方法,定义所有的请求都通过SpringMVC
单次请求过程
1. 发送请求localhost/save
2. web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理
3. 解析请求路径/save
4. 由/save匹配执行对应的方法save()
5. 执行save()
6. 检测到有@ResponseBody直接将save()方法的返回值作为响应求体返回给请求方
标签:容器,请求,SpringMVC,save,方法,加载 From: https://www.cnblogs.com/sunny-sml/p/17580230.html