目录

SpringMVC

2.1 SpringMVC介绍

2.2 SpringMVC入门案例

2.2.1 创建SpringMVC项目

2.2.2 关于tomcat端口号说明

2.2.3 关于tomcat服务器操作

2.2.4 框架之间的关系图

2.2.5 编辑UserController

3 SpringMVC参数接收3.1 简单参数传递

3.2 对象方式传参

3.2.1 编辑User的POJO

3.2.2 编辑UserController

3.2.3 响应结果

3.3 同名提交问题

3.3.1 案例说明

3.3.2 编辑UserController

Axios post请求

4.1 常见post请求种类

4.2 axios post入门案例

1.2.1 编辑前端JS

4.2.2 前端页面解析

4.2.3 编辑AxiosController

4.2.4 页面效果测试

4.2.5 关于请求常见异常

4.2.6 请求类型和业务关系

4.3 用户修改操作

4.3.1 编辑页面JS

4.3.2 编辑AxiosController



SpringMVC

2.1 SpringMVC介绍

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。

SpringMVC框架主要功能: 实现前后端的交互.
交互:
1. 前端通过http请求可以携带参数访问后端服务器. 请求
2. 后端服务器可以将结果通过响应交还给前端. 响应

2.2 SpringMVC入门案例

2.2.1 创建SpringMVC项目

2.2.2 关于tomcat端口号说明

SpringMVC框架使用需要借助tomcat服务器. 默认端口号8080. 可以随意修改.

 # 应用名称spring.application.name=springmvc_demo1# 应用服务 WEB 访问端口server.port=8080

2.2.3 关于tomcat服务器操作

 2.2.4 框架之间的关系图

2.2.5 编辑UserController

package com.jt.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller //将类交给SpringMVC管理,SpringMVC交给Spring容器管理
@ResponseBody   //将数据转化为"特殊字符串"返回
public class UserController {/*** URL地址: http://localhost:8080/hello  get请求*         http://localhost:8080/dog    get请求*         http://localhost:8080/cat    get请求* 参数:  无* 返回值:  "你好,SpringMVC"的字符串*/@RequestMapping("/hello")public String hello(){return "你好,SpringMVC";}
}

3 SpringMVC参数接收

3.1 简单参数传递

需求: 查询后端数据 参数2个数据 name=tomcat,age=18岁
URL: http://localhost:8080/findUserByNA?name=tomcat&age=18

/*** 需求: 接收参数 name=xxx age=xxx* URL: http://localhost:8080/findUserByNA?name=tomcat&age=18* 返回值: "数据正确:name:age"* 知识点:*      1.通过url中的key获取数据.*/@RequestMapping("/findUserByNA")public String findUserByNA(String name,int age){return "数据正确:"+name+":"+age;}

3.2 对象方式传参

3.2.1 编辑User的POJO

说明:
1. 属性类型 必须为包装类型
2. POJO 必须添加get/set方法
3. POJO类型必须实现序列号接口

package com.jt.pojo;import java.io.Serializable;public class User implements Serializable {private Integer id;private String name;private Integer age;private String sex;/*必须添加set/get方法/toString*/@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

3.2.2 编辑UserController

 /*** 需求: 接收参数 name=xxx age=xxx* URL: http://localhost:8080/findUserByNA2?name=tomcat&age=18* 返回值: user.toString 字符串* 知识点:*      1.通过url中的key获取数据.*      2.如果参数众多,则可以使用对象的方式接收,要求必须有set方法*/@RequestMapping("/findUserByNA2")public String findUserByNA2(User user){return user.toString();}

3.2.3 响应结果

3.3 同名提交问题

3.3.1 案例说明

说明: 如果遇到同名提交问题,数据一般采用,号的方式连接. 如图所示:

3.3.2 编辑UserController

/*** URL:http://localhost:8080/hobby?hobby=敲代码,睡觉,打游戏,熬夜* 参数: hobby=敲代码,睡觉,打游戏,熬夜* 返回值: 获取的参数返回即可* 知识点: 如果遇到同名提交问题.则SpringMVC可以采用数组接收.内部自动完成分割* 底层实现: hobby.split(",");*/@RequestMapping("/hobby")public String hobby(String[] hobby){/* String[] array = hobby.split(",");System.out.println(array[0]);*///数组转化为字符串return Arrays.toString(hobby);}

Axios post请求

4.1 常见post请求种类

  1. form表单提交 method=“post” 同步(要素:页面是否刷新)
  2. axios.post() 异步操作.

4.2 axios post入门案例

1.2.1 编辑前端JS

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Axios测试</title><script src="../js/axios.js"></script></head><body><h1>Axios测试案例-2</h1><script>/* 语法:1.参数 axios.post(URL地址,数据对象)2.注意事项: 与axios.get(url,{params:对象})请求写法不一样.*/let url1 = "http://localhost:8080/axios/saveUser"let user1 = {id:100, name:"猫", age:2, sex: "母"}axios.post(url1,user1).then(function(promise){console.log(promise.data)})</script></body>
</html>

4.2.2 前端页面解析

说明: axios.post请求中 如果传递了js对象.则发送到后端服务器的数据是 JSON串.

4.2.3 编辑AxiosController

package com.jt.controller;import com.jt.pojo.User;
import org.springframework.web.bind.annotation.*;import java.util.ArrayList;
import java.util.List;@RestController
@CrossOrigin    //主要解决跨域问题
@RequestMapping("/axios")
public class AxiosController {/*** URL地址:  http://localhost:8080/axios/getUserById?id=100* 参数:     id = 100* 返回值:   User对象的JSON   伪造一个User对象*/@RequestMapping("/getUserById")public User getUserById(Integer id){int a = 100;//根据ID查询数据库User user = new User();user.setId(id);user.setName("好好学习");user.setAge(1000);user.setSex("男");return user;}/*** URL地址:  http://localhost:8080/axios/getUserByNA?id=xxx&name=xxxx* 参数:         id=xxx  name=xxx* 返回值:     List [user1,user2]*/@RequestMapping("/getUserByNA")public List<User> getUserByNA(User user){List<User> list = new ArrayList<>();list.add(user);//简化赋值操作 直接返回list.add(user);return list;}/*** URL地址:  http://localhost:8080/axios/findUserByNS/tomcat/男* 参数: name/sex* 返回值: List<User>*/@RequestMapping("/findUserByNS/{name}/{sex}") //调用set方法为属性赋值public List<User> findUserByNS(User user){List<User> list = new ArrayList<>();list.add(user);list.add(user); return list;}/*** URL: "http://localhost:8080/axios/saveUser"* 参数: {"id":100,"name":"猫","age":2,"sex":"母"}  json串* url1: http://xxx/axios/saveUser?id=xxx&name=xxx* 返回值: "新增用户成功!!!"* 难点:*      1.Get请求数据是通过?key=value&key2=value2的方式获取*        post请求 数据是json串 数据结构不同. 所以不能使用User对象接收*      2.JSON串想把法转化为User对象*          User转化为JSON串  @ResponseBody*          JSON串转化为User  @RequestBody*      3.JSON串转化 要求json串中的属性与对象中的属性一致,*                  并且赋值时调用对象的set方法*      4.@RequestMapping可以支持任意类型的请求. 但是这样的写法不安全.*        改进: 只能接收固定类型的请求*          @PostMapping("/saveUser")*          @GetMapping*          @PutMapping*          @DeleteMapping*///@RequestMapping(value="/saveUser",method = RequestMethod.POST)//@PostMapping("/saveUser")@PostMapping("/saveUser")public String saveUser(@RequestBody User user){System.out.println(user);return "新增用户成功!!!";}}

4.2.4 页面效果测试

4.2.5 关于请求常见异常

  1. 405 异常 ajax的请求类型与后端接收的请求类型不匹配.
  2. 400异常 参数类型不匹配
  3. 404异常 请求路径找不到

4.2.6 请求类型和业务关系

常见请求类型:
GET 查询操作
.DELETE  删除操作 get/delete 用法相同
POST 1.表单数据提交 2.新增操作
PUT 修改操作 post/put 用法相同

4.3 用户修改操作

4.3.1 编辑页面JS

/*** 业务需求:*      完成用户的修改操作. *        将ID=100的数据 name改为张三 age改为18 sex改为女* URL: http://localhost:8080/axios/updateUser* 返回值:  修改成功!!!   数据要求后端打印*/let url2="http://localhost:8080/axios/updateUser"let user2={id:100,name:"张三",age:18,sex:"女"}axios.put(url2,user2).then(function(promise){console.log(promise.data)})

4.3.2 编辑AxiosController

/***  URL:http://localhost:8080/axios/updateUser*  参数: JSON串*  返回值: String*/@PutMapping("/updateUser")public String updateUser(@RequestBody User user){System.out.println(user);return "修改成功!!!";}

Spring(MVC)框架相关推荐

  1. Spring MVC 框架搭建及详解

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  2. spring mvc框架设计与实现

    spring mvc框架通过DispatcherServlet来作请求分发,主要由HandlerMapping,HandlerAdapter,HandlerInterceptor三个抽象来完成.通过H ...

  3. 搭建基于spring MVC框架 + RESTful架构风格技术总结

    2019独角兽企业重金招聘Python工程师标准>>> 实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的 ...

  4. 从 0 开始手写一个 Spring MVC 框架,向高手进阶

    转载自   从 0 开始手写一个 Spring MVC 框架,向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了,以前只知道它用的反射实现的,但了解之后才知道有很多巧妙的设计在里面.如 ...

  5. 从零开始学java 框架_从零开始学 Java - 搭建 Spring MVC 框架

    如果创建一个 Spring 项目 Spring MVC 框架在 Java 的 Web 项目中应该是无人不知的吧,你不会搭建一个 Spring 框架?作为身为一个刚刚学习Java的我都会,如果你不会的话 ...

  6. springmvc流程_基于Spring MVC框架的Http流程分析

    一.问题提出 我们可以方便的利用Spring MVC进行业务开发,请求的大部分工作都被框架和容器封装,使得我们只需要做很少量的工作.但是整个http请求流程是怎么样的?Spring MVC框架在其中起 ...

  7. local tomcat 找不到springmvc里的包_唰唰的手撕一个简单的Spring Mvc 框架

    @[TOC] 自定义实现Spring Mvc框架 前言 在使用Spring Mvc时候我们需要配置一个中央处理器DispatcherServlet用于分发请求,根据url查找处理器,然后再根据处理器 ...

  8. 自己手写一个Spring MVC框架

    想要了解Spring MVC框架的原理,探究框架是如何设计的,不错的学习方式是阅读源码,然后自己手写一个框架.本文带领大家简化的手写一个Spring MVC框架. Spring框架对于Java后端程序 ...

  9. Spring MVC框架-持久层用hibernate自动化(1)

    ##Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC ...

  10. Java Spring MVC框架 VIII 之 Spring MVC拦截器

    Java Spring MVC框架 VIII 之 Spring MVC拦截器 Spring MVC拦截器 1.拦截器简介 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后 ...

最新文章

  1. graphql tools_声明式GraphQL:编写更少的代码,并使用graphql-tools完成更多工作
  2. 编程神回复:在学习编程时,你觉得必须读的科学书籍有哪些?
  3. Spring 依赖注入(集合)/util命名空间/自动注入
  4. cas-client 使用(6)
  5. 05MySQL基本操作
  6. android viewflipper图片轮播,android开发:ViewFlipper实现图片轮播
  7. 20155222 卢梓杰 myod
  8. PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题
  9. mesos 学习笔记-- mesos安装和配置
  10. 移动机器人综合性能对比分析
  11. java day06【类与对象、封装、构造方法】
  12. jQuery.extend()、jQuery.fn.extend()扩展方法具体解释
  13. 百度编辑器UEditor使用问题小结
  14. 坑爹的matlab除法
  15. Python学习总结(九)正则表达式
  16. msm8937 64位开发概要
  17. maya镜头批渲染插件 v1.0.8 更新下载及教程
  18. Java实现牛牛算法详解
  19. IT公司聘用应届生的标准是什么?到底看中应届生的什么?
  20. Python 并发编程

热门文章

  1. 传参时带有日期参数,@JsonFormat与@DateTimeFormat
  2. git fetch总结
  3. linux分区格式化命令
  4. 2022-CS224n-Assignment1-exploring_word_vectors
  5. 设计了一款 IGBT单脉冲、双脉冲测试波形信号发生器
  6. Android Animator(Android动画)
  7. vim 替换文本指令
  8. ubuntu中mount挂载文件时出现WARNING:device write-protected,mounted read-only的问题
  9. java编程实现求回文数_Java编程之回文数
  10. 深度学习(3)--ResNetResNext