- 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支持路径中的占位符(重点)
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视图,渲染数据后最终响应给浏览器
SpringMVC是Spring的一个后续产品,是Spring的一个子项目
SpringMVC 是 Spring为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择SpringMVC 作为 Java EE 项目表述层开发的首选方案。
1.3 SpringMVC的特点注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet
- Spring 家族原生产品,与 IOC 容器等基础设施无缝对接
- 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理
- 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案
- 代码清新简洁,大幅度提升开发效率
- 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可
- 性能卓著,尤其适合现代大型、超大型互联网项目要求
在Idea中新建一个Maven项目,使用以下模板:
如果Idea中没有这个模板的话,也可以直接创建一个新的Maven项目,然后创建以下目录:
导入依赖:
org.springframework spring-webmvc5.3.1 ch.qos.logback logback-classic1.2.3 javax.servlet javax.servlet-api3.1.0 provided org.thymeleaf thymeleaf-spring53.0.12.RELEASE
2.2 配置web.xml注:
- 由于 Maven 的传递性,我们不必将所有需要的包全部配置依赖,而是配置最顶端的依赖,其他靠传递性导入。
- 为什么javax.servlet的范围是provieded?因为在如今Tomcat已经包含了这个依赖,所以我们在给项目打包的时候不用打包这个依赖
web.xml的作用是什么呢?
web.xml是我们注册SpringMVC的前端控制器DispatcherServlet的地方
而DispatcherServlet作用:
- 在init()中创建springmvc的容器对象 WebApplicationContext. 创建springmvc配置文件在的所有java对象,java对象,就是Controller对象。
- DispatcherServlet是一个Servlet ,能够接受请求。
此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为
springMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springMVC.xml 1 springMVC /
注:如果这个xml文件如果不是复制粘贴我的话,请注意要加上文件开头部分的命名空间
但是我们一般是在web-info下放页面的,所以并不推荐这种配置方式
- 为什么匹配路径是/?
因为这里我们配置的是前端控制器的匹配规则,而它要对所有的请求进行处理,然后将它们转发到相对应的处理器中,所有使用/来匹配所有请求标签中使用/和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风格的路径-->使用**
3.8 SpringMVC支持路径中的占位符(重点)
点击这三个链接都可以成功跳转到success.html页面。原始方式:/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"; }欢迎分享,转载请注明来源:内存溢出
评论列表(0条)