SpringMVC学习笔记

SpringMVC学习笔记,第1张

SpringMVC学习笔记

文章目录
    • 1 SpringMVC简介
      • 1.1 什么是MCV
      • 1.2 什么是SpringMVC
      • 1.3 SpringMVC的特点
    • 2 创建第一个SpringMVC的HelloWorld项目
      • 2.1 搭建Maven工程
      • 2.2 配置web.xml
        • 2.2.1 默认配置方式(位置默认,名称默认)
        • 2.2.2 扩展配置方式
      • 2.3 创建请求控制器
      • 2.4 创建springMVC的配置文件
      • 2.5 测试HelloWorld
        • 2.5.1 实现对首页的访问
        • 2.5.2 点击超链接实现跳转到指定页面
      • 2.6 总结
    • 3 @RequestMapping注解
      • 3.1 @RequestMapping注解的功能
      • 3.2 @RequestMapping注解的位置
      • 3.3 @RequestMapping注解的value属性
      • 3.4 @RequestMapping注解的method属性
      • 3.5 @RequestMapping注解的params属性(了解)
      • 3.6 @RequestMapping注解的headers属性(了解)
      • 3.7 SpringMVC支持ant风格的路径
      • 3.8 SpringMVC支持路径中的占位符(重点)

1 SpringMVC简介 1.1 什么是MCV

MVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分
M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:

  • 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等
  • 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。

V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据
C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

MVC的工作流程:
  用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终响应给浏览器

1.2 什么是SpringMVC

SpringMVC是Spring的一个后续产品,是Spring的一个子项目
SpringMVC 是 Spring为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择SpringMVC 作为 Java EE 项目表述层开发的首选方案。

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet

1.3 SpringMVC的特点
  • Spring 家族原生产品,与 IOC 容器等基础设施无缝对接
  • 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
  • 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
  • 代码清新简洁,大幅度提升开发效率
  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
  • 性能卓著,尤其适合现代大型、超大型互联网项目要求
2 创建第一个SpringMVC的HelloWorld项目

在Idea中新建一个Maven项目,使用以下模板:

如果Idea中没有这个模板的话,也可以直接创建一个新的Maven项目,然后创建以下目录:

2.1 搭建Maven工程

导入依赖:


    
    
        org.springframework
        spring-webmvc
        5.3.1
    

    
    
        ch.qos.logback
        logback-classic
        1.2.3
    

    
    
        javax.servlet
        javax.servlet-api
        3.1.0
        provided
    

    
    
        org.thymeleaf
        thymeleaf-spring5
        3.0.12.RELEASE
    

注:

  1. 由于 Maven 的传递性,我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入。
  2. 为什么javax.servlet的范围是provieded?因为在如今Tomcat已经包含了这个依赖,所以我们在给项目打包的时候不用打包这个依赖
2.2 配置web.xml

web.xml的作用是什么呢?
web.xml是我们注册SpringMVC的前端控制器DispatcherServlet的地方
而DispatcherServlet作用:

  1. 在init()中创建springmvc的容器对象 WebApplicationContext. 创建springmvc配置文件在的所有java对象,java对象,就是Controller对象。
  2. DispatcherServlet是一个Servlet ,能够接受请求。
2.2.1 默认配置方式(位置默认,名称默认)

此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为-servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml





    springMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
        
        contextConfigLocation
        
        classpath:springMVC.xml
    
    
    1


    springMVC
    
    /


注:如果这个xml文件如果不是复制粘贴我的话,请注意要加上文件开头部分的命名空间
但是我们一般是在web-info下放页面的,所以并不推荐这种配置方式

  1. 为什么匹配路径是/?
    因为这里我们配置的是前端控制器的匹配规则,而它要对所有的请求进行处理,然后将它们转发到相对应的处理器中,所有使用/来匹配所有请求
  2. 标签中使用/和xxx的方式

    添加以下三个请求映射方法

        @RequestMapping("/a?a/test")
        public String test1(){
            return "success";
        }
        @RequestMapping("/a*a/test")
        public String test2(){
            return "success";
        }
        @RequestMapping("test")
        public String test3(){
            return "success";
        }
    

    在index.html添加三个链接来实现地址跳转的功能:

    测试@RequestMapping可以匹配ant风格的路径-->使用?
    测试@RequestMapping可以匹配ant风格的路径-->使用*
    测试@RequestMapping可以匹配ant风格的路径-->使用**


    点击这三个链接都可以成功跳转到success.html页面。

    3.8 SpringMVC支持路径中的占位符(重点)

    原始方式:/deleteUser?id=1

    rest方式:/deleteUser/1

    SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参

        @RequestMapping("/testRest/{id}/{username}")
        public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){
            System.out.println("id:"+id+",username:"+username);
            return "success";
        }
    

    欢迎分享,转载请注明来源:内存溢出

    原文地址: http://outofmemory.cn/zaji/5692665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存