• SpringMVC和实际案例


    SpringMVC简介

    SpringMVC是隶属于Spring框架的一部分,主要是用来进行Web开发,是对Servlet进行了封装。

    SpringMVC是处于Web层的框架,所以其主要的作用就是用来接收前端发过来的请求和数据然后经过 处理并将处理的结果响应给前端,所以如何处理请求和响应是SpringMVC中非常重要的一块内容。

    SSM整合是把咱们所学习的SpringMVC+Spring+Mybatis整合在一起来完成业务开发,

    回顾servlet

    web程序大都基于三层架构来实现

     

    浏览器发送请求给后端服务器,后端服务器使用servlet来接受和请求数据

    后端服务器servlet可拆分成3层

    web层主要由servlet来处理,负责页面请求和数据的收集以及响应结果给前端

    service层主要负责业务逻辑的处理

    dao层主要负责数据的增删改查操作

    servlet处理请求和数据的时候,存在的问题是一个servlet只能处理一个请求

    向MVC设计模式转变

    针对web层进行了优化,采用了MVC设计模式,将其设计为controller、view和Model

    上面的的模式由同步调用转换为异步调用

    异步调用不需要view视图

    controller负责请求和数据的接收,接收后将其转发给service进行业务处理

    service根据需要会调用dao对数据进行增删改查

    dao把数据处理完后将结果交给service,service再交给controller

    controller根据需求组装成Model和View,Model和View组合起来生成页面转发给前端浏览器

    这样做的好处就是controller可以处理多个请求,并对请求进行分发,执行不同的业务操作。

    SpringMVC主要负责的就是

    controller如何接收请求和数据

    如何将请求和数据转发给业务层

    如何将响应数据转换成json发回到前端

    总结

    SpringMVC是一种基于Java实现MVC模型的轻量级Web框架

    优点:使用简单、开发便捷(相比于Servlet) 灵活性强

    案例

    servlet开发步骤

    1.创建web工程(Maven结构)

    2.设置tomcat服务器,加载web工程(tomcat插件)

    3.导入坐标(Servlet)

    4.定义处理请求的功能类(UserServlet)

    5.设置请求映射(配置映射关系

    SpringMVC开发步骤

    1.创建web工程(Maven结构)

    2.设置tomcat服务器,加载web工程(tomcat插件)

    3.导入坐标(SpringMVC+Servlet)

    4.定义处理请求的功能类(UserController)

    5.设置请求映射(配置映射关系)

    6.将SpringMVC设定加载到Tomcat容器中

    案例开发

    1.IDEA新建一个web工程

    2.框架建立的web工程下,需要手动添加源码

    3.导入相关jar包

    注意导入servlet坐标时,要加入provided

    4.创建SpringMvcConifg配置类        

    5.创建Controller类(和servlet文件作用相同,用来处理请求)

    1. @Controller //SpringMVC开发专用的声明bean的注解
    2. public class UserController {
    3. @RequestMapping("/save")
    4. public void save(){
    5. System.out.println("user save ...");
    6. }
    7. }

    6.使用servlet容器配置类文件替换web.xml文件

    1. public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    2. //tomcat服务启动时,加载springmvc配置类
    3. protected WebApplicationContext createServletApplicationContext() {
    4. //初始化WebApplicationContext对象
    5. AnnotationConfigWebApplicationContext ctx = new
    6. AnnotationConfigWebApplicationContext();
    7. //加载指定配置类,注册配置
    8. ctx.register(SpringMvcConfig.class);
    9. return ctx;
    10. }
    11. //设置由springmvc控制器处理的请求映射路径,"/"表示所有的请求
    12. protected String[] getServletMappings() {
    13. return new String[]{"/"};
    14. }
    15. //加载spring配置类
    16. protected WebApplicationContext createRootApplicationContext() {
    17. return null;
    18. }
    19. }

    删除原先的web.xml文件

    7.配置tomcat

     8.启动服务器,在网页中输入localhost/save,就可以查看到usercontroller中return方法的值

    总结:四个步骤

    1.导入SpringMvc和servlet坐标        //添加依赖

    2.创建SpringMVC控制器类 (*Controller文件),用来处理请求       //等同于servlet功能

    @Controller        //将控制类对象定义为bean,加入Spring容器中

    @RequestMapping        //定义当前控制器方法的请求访问路径

    @ResponseBody        //设置当前控制器方法响应内容为当前返回值

    3.初始化SpringMVC环境,创建配置文件SpringMvcConfig,设定SpringMVC加载的bean

    @Configuration

    @Compnent-scan

    4.创建ServletContainersInitConfig文件,用来初始化servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求

    案例的工作流程分析

    一.启动服务器

    服务器启动,执行ServletContainersInitConfig类,初始化web容器

    注意Web容器初始化之后,执行createServletApplicationContext方法,创建了WebApplicationContext对象,该对象要放在ServletContext容器中

    1. public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    2. //加载springmvc配置类
    3. protected WebApplicationContext createServletApplicationContext() {
    4. //初始化WebApplicationContext对象
    5. AnnotationConfigWebApplicationContext ctx = new
    6. AnnotationConfigWebApplicationContext();
    7. //加载SpringMvcConfig
    8. ctx.register(SpringMvcConfig.class);
    9. return ctx;
    10. }

     

     二.一次请求过程

    浏览器操作一次

    1.. 发送请求http://localhost/save

    2. web容器发现该请求满足SpringMVC拦截规则,将请求交给SpringMVC处理(对应上述的getServletMappings)

    3. 解析请求路径/save(对应上述注册过的save方法)

    4. 由/save匹配执行对应的方法save() 上面的第五步已经将请求路径和方法建立了对应关系,通过/save就能找到对应的save方法

    5. 执行save()

    6. 检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方

  • 相关阅读:
    服务注册Eureka
    微调 TrOCR – 训练 TrOCR 识别弯曲文本
    Linux自有服务与软件包管理
    IPv4 NAT(含Cisco配置)
    STN:不规则文本矫正网络的探索
    数据结构基础知识回顾
    [附源码]Python计算机毕业设计Django高校商铺管理系统论文
    TCP详解之三次握手和四次挥手
    selenium frame切换
    东京计器电控型柱塞泵比例放大器
  • 原文地址:https://blog.csdn.net/cvpatient/article/details/126007255