首页 > 其他分享 >SpringMVC

SpringMVC

时间:2023-07-25 20:45:25浏览次数:30  
标签:容器 请求 SpringMVC save 方法 加载

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

相关文章

  • SpringMVC
    概述SpringMVC是一种基于Java的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于SpringFrameWork的后续产品,已经融合在SpringWebFlow中。SpringMVC已经成为目前最主流的MVC框架之一,并且随着Spring3.0的发布,全面超越Struts2,成为最优秀的MVC框架。它通过一套注......
  • SpringMVC
    SpringMVC什么是MVC模型(dao,service)、视图(jsp)、控制器(servlet)假设:你的项目架构,是设计好的还是演进的?演进的回顾ServletMVVM:MVVMViewModel:双向绑定什么是SpringMVCSpringMVC是SpringFramework的一部分,是基于Java实现MVC的轻量级Web框架官方文档:https:......
  • SpringMvc介绍。
    目录1、SpringMvc概述1、基本介绍2、工作流程 3、bean加载控制 二、请求1、请求映射路径2、请求方式3、请求参数4、请求参数(传递json数据)5、日期类型参数传递三、响应四、REST风格1、REST简介2、RESTful入门案例3、RESTful快速开发五、拦截器1、拦截器概念2、拦截器开发3、拦截器......
  • SpringMVC之类型转换Converter
    1.1     目录1.1      目录1.2      前言1.3      Converter接口1.4      ConversionService接口1.5      ConverterFactory接口1.6      GenericConverter接口1.6.1     概述1.6.2     ConditionalGenericConverter 接口 1.......
  • 第六章 注解式控制器详解 SpringMVC强大的数据绑定(2)
    6.6.2、@RequestParam绑定单个请求参数值@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。1.publicStringrequestparam1(@RequestParam请求中包含username参数(如/requestparam1?username=zhang),则自动传入。 此处要特别注意:右击项目,选择“属性”,打开“属性对......
  • 《Spring6核心源码解析》已完结,涵盖IOC容器、AOP切面、AOT预编译、SpringMVC,面试杠杠
    作者:冰河星球:http://m6z.cn/6aeFbs博客:https://binghe.gitcode.host文章汇总:https://binghe.gitcode.host/md/all/all.html源码地址:https://github.com/binghe001/spring-annotation-book沉淀,成长,突破,帮助他人,成就自我。大家好,我是冰河~~提起Spring,可以这么说,Spring几乎......
  • JAVA面试之SpringMVC
    一、工作流程流程 1、用户发送请求至前端控制器DispatcherServlet 2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 4、DispatcherServlet调用Han......
  • Spring + SpringMVC + SpringBoot + MyBatis 相关注解
    创建对象的:@Controller:放在类的上面,创建控制器对象,注入到容器中@RestController:放在类的上面,创建控制器对象,注入到容器中。作用:复合注解是@Controller,@ResponseBody,使用这个注解类的,里面的控制器方法的返回值都是数据@Service:放......
  • springMvc——拦截器
    拦截器概念:拦截器是一种动态的拦截方法调用的机制,在springMvc中动态拦截控制器方法的执行作用:  1.在指定的方法调用前后执行预先设定的代码  2.阻止原始方法的执行拦截器于过滤器的区别:......
  • SSM - SpringMVC - Syntax
    1.环境搭建导入包:junit,servlet-api,jsp-api,jstl,spring-context(5.3.29)早期版本回顾@ https://docs.spring.io/spring-framework/docs/4.3.24.RELEASE/spring-framework-reference/ ,里面介绍了很多基本和基础概念所有版本下载@ https://repo.spring.io/release/......