cgb2106-day13 拼搏现实的明天。 2021-09-11 03:24 321阅读 0赞 ### 文章目录 ### * * 一,SpringMVC * * \--1,概述 * \--2,原理 * \--3,创建Module * \--4,入门案例 * 二,SpringMVC的响应 * * \--1,概述 * \--2,测试 * 三,SpringMVC解析get请求的参数 * * \--1,概述 * \--2,测试 * \--3,常见问题 ## 一,SpringMVC ## ### –1,概述 ### 框架: 是一个结构,框架提供了很多的类,由框架控制每个类调用的过程流程 SSM框架里,第一个S就是指SpringMVC,是一个框架. 是Spring框架的一个后续产品,遵循了MVC的设计模式,保证了程序间的松耦合. SpringMVC主要作用:1,接受请求(解析请求参数) 2,做出响应 MVC的设计模式: M是Model模型,用来封装数据 V是View视图,用来展示数据 C是Controller控制器,用来控制浏览器如何请求,做出数据响应 好处: 提高代码的复用性 , 松耦合 ### –2,原理 ### 1,前端控制器DispatcherServlet: 当浏览器发送请求成功后,充当这调度者的角色,负责调度每个组件. 2,处理器映射器HandlerMapping: 根据请求的URL路径,找到能处理请求的类名和方法名 url: http://localhost:8080/hi , 找到Hello类里的hi() 3,处理器适配器HandlerAdapter: 正式开始处理业务,并把返回结果的结果交给DispatcherServlet 4,视图解析器ViewResolver: 找到正确的,能展示数据的视图,准备展示数据 5,视图渲染View: 展示数据 ### –3,创建Module ### 选中Project-右键-New-Module-选择Maven-next-输入Module的名字-next-finish ![在这里插入图片描述][487e3f2e12ec466b92966aed6266057b.png] ### –4,入门案例 ### 1, 导入jar包(被Spring Boot整合好了) 2, 准备一个启动类RunApp,用来启动服务器 package cn.tedu.mvc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //标记着这是springboot的启动类 @SpringBootApplication public class RunApp { public static void main(String[] args) { SpringApplication.run(RunApp.class);//运行当前类 } } 3, 准备一个类,补充方法 访问链接: http://localhost:8080/car/get 得到数据:123 package cn.tedu.mvc; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //完成springmvc的角色,接受请求和给出响应 //是MVC设计模式里的C控制器,接受请求和给出响应 @RestController //标记着这个类是Controller是一个控制器+接受请求 @RequestMapping("car")//规定了url怎么访问这个类 public class HelloController { //测试: http://localhost:8080/car/get @RequestMapping("get")//规定了url怎么访问这个方法 public String show(){ return "123"; } } 4, 测试 启动服务器,打开浏览器,访问正确的URL地址 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70] ## 二,SpringMVC的响应 ## ### –1,概述 ### SpringMVC可以接受请求,和做出响应数据,类型可以非常丰富 ### –2,测试 ### package cn.tedu.mvc; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //完成springmvc的角色,接受请求和给出响应 //是MVC设计模式里的C控制器,接受请求和给出响应 @RestController //标记着这个类是Controller是一个控制器+接受请求+响应JSON串 @RequestMapping("car")//规定了url怎么访问这个类 public class HelloController { //测试: http://localhost:8080/car/get @RequestMapping("get")//规定了url怎么访问这个方法 public String show(){ return "123"; } //测试: http://localhost:8080/car/abc @RequestMapping("abc") public int show2(){ return 100; } // SpringMVC框架除了能返回字符串,整数以外,还能返回对象信息 //测试: http://localhost:8080/car/get2 @RequestMapping("get2") public Car get(){ Car c = new Car(); //给客户端准备数据 c.setId(718); c.setName("保时捷"); c.setType("Cayman T"); c.setColor("红色"); c.setPrice(641000); return c; //把对象信息 变成JSON字符串在浏览器展示 } } ## 三,SpringMVC解析get请求的参数 ## ### –1,概述 ### 请求方式8种,常见的就是get post restful风格的数据,用来简化了get的写法 http://localhost:8080/car/insert?id=1&name=张三&age=18 http://localhost:8080/car/insert/1/张三/18 ### –2,测试 ### package cn.tedu.mvc; import org.junit.Test; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //Springmvc解析get的请求参数 // http://localhost:8080/car/insert?id=1&name=张三&age=18 @RestController//接受请求做出响应 @RequestMapping("get")//规定了浏览器的访问方式 public class GetController{ //测试 http://localhost:8080/get/param4?id=100&name=BMW&type=X6&color=red&price=9.9 @RequestMapping("param4") //public String param4(int id,String name,String type,String color,double price){ public Car param4(Car c){ //直接用对象接受参数,框架会自动封装属性的值 return c; } //测试 http://localhost:8080/get/param3?id=100&name=张三&price=9.9 @RequestMapping("param3") public String param3(int id,String name,double price){ return id+name+price; } //测试 http://localhost:8080/get/param2?id=100&name=张三 @RequestMapping("param2") public void param2(int id,String name){ System.out.println(id); System.out.println(name); } //测试 http://localhost:8080/get/param?id=100 @RequestMapping("param") public String param(int id){ return "您的请求参数里id="+id ; } @Test //单元测试方法 public void get1(){ String url ="http://localhost:8080/car/insert?id=1&name=张三&age=18"; String[] a = url.split("\\?")[1].split("&"); for(String s : a){ String data = s.split("=")[1]; System.out.println(data); } } } ### –3,常见问题 ### 404: Not Found,没找到你想访问的资源 400: 参数类型不匹配 Controller类里的方法: public void add(int a)\{ \} URL的方法: http://localhost:8080/add?a=jack 500: 服务器内部出错,IDEA已经抛出异常了 [487e3f2e12ec466b92966aed6266057b.png]: /images/20210911/48601c6a37704076a2619ea62c2ac244.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTI5MzI4NzY_size_16_color_FFFFFF_t_70]: /images/20210911/e55d54cef6a74c0bac096551592c7d87.png
相关 cgb2106-day18 文章目录 一,Mybatis入门案例 \--0,导入mybatis的jar包 \--1,核心配置文件 港控/mmm°/ 2021年09月11日 03:28/ 0 赞/ 254 阅读
相关 cgb2106-day12 文章目录 一,ElementUI的表单 \--1,测试 \--2,效果 二,Maven 「爱情、让人受尽委屈。」/ 2021年09月11日 03:24/ 0 赞/ 329 阅读
相关 cgb2106-day13 文章目录 一,SpringMVC \--1,概述 \--2,原理 \--3,创建Module 拼搏现实的明天。/ 2021年09月11日 03:24/ 0 赞/ 322 阅读
相关 cgb2106-day10 文章目录 一,Vue的基础语法 \--1,运算符 \--2,定义函数 \--3,Vue解析各种 快来打我*/ 2021年09月11日 03:24/ 0 赞/ 278 阅读
相关 cgb2106-day11 文章目录 一,Vue脚手架 \--1,执行以下命令安装并检验 \--2,创建Vue项目的过程 二,自定 朱雀/ 2021年09月11日 03:24/ 0 赞/ 342 阅读
相关 cgb2106-day08 文章目录 一,模拟服务器解析数据 二,实现CSS代码和HTML代码的分离 \--1,新建css文件 \ 古城微笑少年丶/ 2021年09月11日 03:22/ 0 赞/ 339 阅读
相关 cgb2106-day01 文章目录 一,数据库 \--1,概述 \--2,Mysql数据库的安装 \--3,Mysql数 系统管理员/ 2021年09月11日 03:14/ 0 赞/ 285 阅读
还没有评论,来说两句吧...