当前位置:   article > 正文

三大框架-- SpringMVC

springmvc

一.概念

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架

二.MVC模型

M代表: Model模型

V代表: View视图

C代表: Control控制层

用来进行分层的结构,这样代码分离结构清晰,各层代码,各司其职,易于开发大型项目。

MVC(Model模型、View视图、Control控制层),将软件进行分层达到松耦合的效果。

通用的软件编程思想, 在MVC设计模式中认为, 任何软件都可以分三层:控制层(Controller)、数据处理模型(Model)、负责展示数据的视图(View)。

在MVC设计思想中要求一个符合MVC设计思想的软件应该保证上面这三部分相互独立,互不干扰,每一个部分只负责自己擅长的部分。如果某一个模块发生变化,应该尽量做到不影响其他两个模块。提高代码的可读性,实现程序间的松耦合、提高代码复用性。
 

 三.SpringMVC的工作原理

1、用户发送请求至前端控制器DispatcherServlet。

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、DispatcherServlet调用HandlerAdapter处理器适配器。

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView。

7、andlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户。
 

四.处理请求的方式

1.概述
当客户端打开浏览器要访问服务器时,可能会带着一些http请求参数过来.

这时,服务器需要获取http参数进行业务处理,如何处理http请求并获取参数呢?

总共有8种,重点时两种方式:GET方式和POST方式.

2.GET方式
向特定的资源发出请求,并返回实体.有固定的写法.而且数据有最大长度,超出就不行

例如:
http://localhost:8080/car/insert?id=1&name=张三&age=18

3.POST方式
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

4.RESTFul方式(推荐)
为了简化GET请求的写法,可以使用RESTFul方式,用法:

1>、需要使用注解@PathVariable来获取请求路径中的参数值,@PathVariable用来绑定值

2>、通过{???}获取路径中传递来的值

3>、以前GET的访问方式即将被简化成:

5.总结

get:把请求参数 在地址栏拼接http://localhost:8080/car/insert?id=1&name=张三&age=18
post:安全,数据不在地址栏展示

  1. package cn.tedu.controller;
  2. import org.springframework.web.bind.annotation.PathVariable;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import cn.tedu.pojo.Car;
  6. @RestController//接受请求,返回json数据
  7. @RequestMapping("/car/")
  8. public class CarController {
  9. //2,通过GET请求,传入参数并接收处理
  10. //访问 http://localhost:8080/car/add?id=10,必须设置id的值否则报错,?拼接是固定语法
  11. @RequestMapping("add")
  12. public void add(int id) {
  13. System.out.println("数据添加成功,id="+id);
  14. }
  15. //访问 http://localhost:8080/car/save?id=90&name=tony ,设置多个参数值时用&连接
  16. @RequestMapping("save")
  17. public void save(int id,String name) {
  18. System.out.println("数据保存成功,id="+id+",name="+name);
  19. }
  20. //访问 http://localhost:8080/car/obj?id=100&name=BMW&color=red
  21. @RequestMapping("obj")
  22. public void obj(Car c) {//处理一个对象的参数
  23. System.out.println(c);
  24. }
  25. //3,优化GET传参的restful方式
  26. //GET方式访问: http://localhost:8080/car/insert?id=1&name=张三&age=18
  27. //restful方式访问: http://localhost:8080/car/insert/1/张三/18
  28. @RequestMapping("insert/{x}/{y}/{z}")
  29. //restful配合@PathVariable注解一起用,使用{资源名}获取传过来的值
  30. public void insert(@PathVariable int x,
  31. @PathVariable String y,
  32. @PathVariable int z) {
  33. System.out.println("数据插入成功,id="+x+",name="+y+",age="+z);
  34. }
  35. }

五.日期数据的处理

把页面上的intime日期数据,交给后台处理.由于页面的数据都当做String类型处理,所以交给后台处理时,会抛出400错误.需要使用注解进行类型转换.并指定日期格式:

  1. //页面报400 IllegalArgumentException: String->Date
  2. @DateTimeFormat(pattern="yyyy-MM-dd";)
  3. private java.util.Date intime;
  4. public Date getIntime() {
  5. return intime;
  6. }
  7. public void setIntime(Date intime) {
  8. this.intime= intime;
  9. }

六.使用Ajax技术访问

  1. <script src="jquery-1.8.3.min.js"></script>
  2. <script>
  3. function fun(){
  4. $.ajax({
  5. url:"http://localhost:8080/stu/add",
  6. data:$("#f1").serialize(),
  7. success:function(data){
  8. console.log(data);
  9. }
  10. })
  11. }
  12. </script>

七.MVC和SSM的关系

 八.SpringMVC的常用注解

@Controller 标识是一个Controller,Spring包扫描创建实例

@RequestMapping 请求后的映射路径

@PathVariable 标识接收单个参数

@ResponseBody 返回对象利用jackson工具类转换为json字符串

@RequestParam 参数名和请求参数名称不同时使用,可以设置默认值

@CrossOrigin 解决跨域问题

九.SpringMVC常见的异常


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/67743
推荐阅读
相关标签
  

闽ICP备14008679号