当前位置: 首页 > news >正文

花都营销网站建设做教育网站宣传策略

花都营销网站建设,做教育网站宣传策略,最近一周的新闻大事10条,wordpress快报插件目录 一、什么是Spring MVC 二、Spring MVC项目的创建和使用 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 1.2、RequestMapper的简单使用 1.3、使用GetMapping和POSTMapping注解来实现HTTP连接 三、获取参数 1、实现获取单个参数 2、实现获取对象 3…目录 一、什么是Spring MVC 二、Spring MVC项目的创建和使用 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 1.2、RequestMapper的简单使用  1.3、使用GetMapping和POSTMapping注解来实现HTTP连接 三、获取参数 1、实现获取单个参数 2、实现获取对象 3、后端参数重命名RequestParam参数映射 4、RequestParam参数必传设置 5、接收JSON对象RequestBody 6、获取URL中参数PathVariable 7、上传文件RequestPart 8、获取Cookie/Session/header 四、返回数据 1、返回一个静态页面 2、返回一个数据 3、返回text/html 4、请求转发和请求重定向 一、什么是Spring MVC 官方的描述为Spring Web MVC是基于Servlet API的原始Web框架从一开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来自它的源模块(Spring -webmvc)的名称但它更常被称为“Spring MVC”。 ✨理解Web框架 Web框架Web framework是用来进行Web应用开发的一个软件架构。主要用于动态网络开发Web应用框架提供了一套开发和部署网站的方式。开发者基于框架实现自己的业务逻辑。使用Web框架很多的业务逻辑的功能不需要自己去完善而是使用框架已有的功能就可以。 ✨什么是MVC  MVC是Model View Controller的缩写它是软件工程中的一种软件件架构模式他将一个项目分为三部分View试图Controller控制器Model模型。MVC是一种思想。 Model模型项目中用于处理程序数据逻辑的部分负责在数据库中查找和存储数据。View试图是项目中将得到的数据进行处理之后显示给用户一个界面的部分。Controller控制器是项目中处理用户交互的部分负责读取用户的请求向模型提价请求读取模型的响应将数据交给View部分。 ✨MVC和Spring MVC的关系 MVC是一种思想Spring MVC是对MVC思想的具体实现。 Spring MVC是一个实现了MVC模式并继承了Servlwt API的Web框架。 二、Spring MVC项目的创建和使用 Spring MVC项目的创建步骤和Spring Boot的创建步骤是相同的我们之前创建的Spring Boot项目就相当于是一个Spring Web项目我们在添加Spring Boot框架的时候已经引入了Spring MVC。 下图中spring-boot-starter-web表示的就是Spring MVC框架。 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 ResquestMapping是Spring Web应用程序中最常用到的注解之一他是用来注册接口的的路由映射的。 路由映射所谓的路由隐射指的就是当用户访问一个URL时将用户的请求对应到程序中某个类的某个方法的过程就叫做路由映射。 ✨ RequestMapping注解的参数 value指定请求的实际访问地址value属性是RequestMapping注解的默认属性如果只有唯一一个属性则可以省略value字段如果参数中有多个属性则必须写上value属性名。path与value同义他们在源码中相互引用value和path都是用来作为映射使用的。method用来指定请求的类型当在一个方法的注解RequestMapping的参数中写道method RequestMethod.GET表示这个方法只支持GET请求。params该属性指定请求中必须包含params属性指定的参数时才能执行该请求。headers该属性指定请求中必须包含某些指定的header值才能够让该方法处理请求。consumes指定处理请求的提交内容类型Content-Type才能让该方法处理请求produces指定返回的内容类型返回的内容类型必须时request请求头中所包含的类型。这个属性还可以指定返回值的编码。 1.2、RequestMapper的简单使用  RequestMapping既可以修饰类也可以修饰方法当同时修饰类和方法时类上的ResquestMapping注解的参数value/path表示的是URL中的一级路由方法上的参数的value/path表示的是URL的二级路由。RequestMapper注解默认情况下支持GET和POST请求。 下面我们创建一个类来实现客户端和Spring程序的连接使用postman模拟客户端发送请求。验证RequsetMapper注解既可以修饰类也可以修饰方法和RequestMapper注解默认支持GET和POST请求。 package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {RequestMapping(/sayHi)public String sayHi(){return 你好 Spring MVC;} }我们使用URL为127.0.0.18080/test/sayHi 1️⃣我们使用POST请求可以收到响应。 2️⃣我们使用GET方法发送请求也可以收到响应 当然我们可以设置RequestMapping注解的Method属性值为RequeatMethod.POST表示这个方法只支持POST请求 import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {//当这个注解中的参数有多个的时候就需要添加属性名称RequestMapping(value /sayHi,method RequestMethod.POST)public String sayHi(){return 你好 Spring MVC;} }RequestMapper支持设置多级目录 RequestMapping(/sayHi/mvc) 1.3、使用GetMapping和POSTMapping注解来实现HTTP连接 GetMapping注解只能实现GET请求的连接POSTMapping注解只能实现POST请求的连接。 GetMapping注解 package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {GetMapping(sayhi2)public String sayHi2(){return 你好世界;} } PostMapping注解 package com.example.demo.controller;import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test) public class TestController {PostMapping(sayhello)public String sayHi2(){return 你好世界;} }三、获取参数 1、实现获取单个参数 1️⃣使用servlet的写法getParameter来实现获取单个参数 import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;RestController RequestMapping(/test2) public class TestController2 {RequestMapping(/getname)public String getName(HttpServletRequest request){return Name: request.getParameter(name);} }2️⃣使用更简单的获取单个参数的方法 package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/test2) public class TestController2 {RequestMapping(/getname2)public String getName2(String name){return Name: name;} }2、实现获取对象 上面获取单个参数的方式当参数个数固定的时候可以使用但是如果参数个数不确定随时都需要添加参数的时候我们这个时候可以使用获取对象的方式获取参数前端没有对象的概念传递的都是对象的属性后端代码中需要创建一个用户类的对象用来接收前端传过来的属性的值。 package com.example.demo.model;import lombok.Data;Data public class User {private int id;private String name;private String password;private int age; }package com.example.demo.controller;import com.example.demo.model.User; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/user) public class UserController {RequestMapping(/add)public User add(User user){return user;} }当前端的属性和后端中类的属性对应不全的时候如果后端没有相应的属性那么前端的属性赋值不到后端的代码中如果前端没有相应的后端代码中的属性那么后端中类的属性的值就是默认值。 3、后端参数重命名RequestParam参数映射 特殊情况下前端传递的参数key和我们后端接收的key可以不一致比如前端传递了一个n给后端而后端使用的时name参数来接收的这个时候就会出现参数接收不到的问题我们可以使用RequestParam注解来重命名前后端的参数。 import com.example.demo.model.User; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;RestController RequestMapping(/user) public class UserController {RequestMapping(/name)public String name(RequestParam (n) String name){return name;} } 4、RequestParam参数必传设置 使用RequestParam注解之后那么这个属性就变成了必传的参数了不传这个参数就会报错原因是因为RequestParam注解中有一个required属性等于true表示这个参数为必传的我们只需要设置这个属性为false即可解决必传的问题。 RequestMapping(/name)public String name(RequestParam (valuen,required false) String name){return name;}5、接收JSON对象RequestBody 这里只需要使用RequestBody就可以拿到前端传递的JSON对象 RequestMapping(/add_json)public User addByJson(RequestBody User user){return user;}6、获取URL中参数PathVariable 之前我们是通过URL中的查询字符串的部分获取的参数也就是namexxxid123的部分。但是有点网站不是通过这样的方式传递参数的就像掘金一样。访问它的有些页面时URL是这样的https://juejin.cn/user/61228381386487。他没有通过查询字符串的方式传递。 1️⃣从前端获取一个参数 RequestMapping(/detial/{id})public Integer detail(PathVariable(id) Integer id){return id;} 这里表示前端要传递的参数为id所以这里需要使用一个{}将这个参数括起来 2️⃣表示从前端获取多参数 RequestMapping(/detial/{id}/{name})public String detail(PathVariable(id) Integer id,PathVariable(name) String name){return id: id name: name;}7、上传文件RequestPart RequestPart用于将multiparty/form-data类型的数据映射到控制器处理方法的参数中。 RequestMapping(/upload)public String upload(RequestPart(myfile) MultipartFile file) throws IOException {String path D:/img.png;file.transferTo(new File(path));return path;} } 这里RequestPart(file)表示从请求中获取名为file的文件长传的文件将被存储在file对象中我们可以是以哦那个file对象的方法类处理上传的文件。 在D盘中获取到了这个图片文件并将图片名字改为了img 但是这样编写的后端代码存在问题就是客户端每次访问服务器程序服务器返回的图片名字都是一样的那么在D盘中后面获取的图片会将之前获取的覆盖掉这是不完善的如果在客户端点击上传的图片不同最终服务器将不同的图片名字改成一样的两张不同的照片只能保存其中一个。 ✨下面我们来解决这个问题 这里将路径中的文件名通过生成一个全球唯一id得到的文件类型是截取原文件的。 RequestMapping(/upload)public String upload(RequestPart(myfile) MultipartFile file) throws IOException {//1、生成一个唯一的id(UUID就是全球唯一ID他是由MAC地址随机数加密算法组成的保证生成的id是全球唯一ID)String name UUID.randomUUID().toString().replace(-,);//2、得到源文件的后缀名name file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(.));String path D:/name;//将文件保存在path路径中file.transferTo(new File(path));return path;} 可以看见每次获取的文件名称都是不一样的也不会将之前获取的文件覆盖掉。 8、获取Cookie/Session/header 通过CookieValue获取Cookie RequestMapping(/getcookie)public String getCookie(CookieValue(java)String ck){return ck;} 通过CookieValue注解类获取Session RequestMapping(/getsess)//这里的value指的是session的名字public String getSess(SessionAttribute(valueusername,required false) String username){return username;}通过RequestHeader获取Header // RequestHeader 获取 header RequestMapping(/header) public String header(RequestHeader(User-Agent) String userAgent) {return User-Agent: userAgent; }四、返回数据 1、返回一个静态页面 在项目中创建一个静态的html页面。使用Controller注解默认的是返回一个页面。 package com.example.demo.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;Controller public class TestController3 {RequestMapping(/hello)public String index(){return hello.html;}}2、返回一个数据 使用ResponseBody和Controller注解搭配使用让返回的值是一个数据也可以使用组合注解RestController注解 package com.example.demo.controller;import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;Controller ResponseBody public class TestController3 {RequestMapping(/hello)public String index(){return hello.html;} }3、返回text/html 可以使用组合注解RestController也可以使用Controller和ResponseBody搭配使用 RestController public class TestController3 {RequestMapping(method)public String method(){return h1hello,world!/h1;}4、请求转发和请求重定向 return不仅可以返回一个试图还可以实现跳转跳转的方式有两种 forward是请求转发redirect是请求重定向。 // 请求重定向 RequestMapping(/index1) public String index1() {return redirect:/index.html; } // 请求转发 RequestMapping(/index2) public String index2() {return forward:/index.html; }✨请求重定向和请求转发的区别 请求转发是一种服务器行为客户端只有一次请求服务器接收到客户端的请求之后会先将请求转发给目标地址在将目标地址返回的结果转发给客户端。客户端对这一切毫无感知。这就像A找B借钱B没有B向C借到之后将钱给了A整个过程A就直借了一次钱。B向C借钱A不知道。请求重定向是指服务器端接收到客户端的请求之后会给客户端返回一个临时相应头这个响应头中记录了客户端需要再次发送请求重定向的URL地址客户端收到地址之后会将请求发送到新的地址上这就是请求重定向。就像A找B借钱B没有但是B知道C有B对A说C有让A 去C哪里借然后A去找C去借这个过程就是请求重定向。
http://www.w-s-a.com/news/687734/

相关文章:

  • 北海住房和城乡建设局网站wordpress标题去掉私密
  • 织梦网站安装视频做网站都有那些步骤
  • 网站空间大小选择沈阳微信网站制作
  • 网站分享对联广告网站结构的类型
  • 三维家是在网站上做还是在app上北京网站建设 专业10年
  • 模拟网站建设网站建设认准猪八戒网
  • godaddy网站建设教程微信手机网站搭建
  • 网站建设 商城淄博网站制作哪家好
  • 廊坊手机网站团队国际贸易进口代理公司
  • 运用django做网站网站建设问题及解决办法
  • 商丘企业网站服务c mvc 网站开发
  • 太仓建设工程网站广州seo排名外包
  • 成都的教育品牌网站建设做网站不给提供ftp
  • 建站行业市场人力管理系统
  • qq钓鱼网站在线生成器google关键词搜索工具
  • 化妆网站模板移动网站建设模板
  • 欢迎访问语文建设杂志网站网站蓝色配色
  • 最新网站发布重庆城乡建设部网站首页
  • 网站建设费用高鄂尔多斯seo
  • dw做网站怎么发布网站无后台可以上框架
  • 网络公司如何建网站网站的建设需要多少钱
  • 代刷网站推广快速泉州网页定制
  • 网站优秀网站地址做宣传册的公司
  • 苏州高端网站建设咨询wordpress云图插件
  • 河北省建设厅网站重新安装优秀中文网页设计
  • 如何在腾讯云做网站开源站群cms
  • 公司网站建设的意义网易做网站
  • 网络营销案例分析与实践搜外seo
  • 手机建网站挣钱吗wordpress面包屑
  • 淘客做网站怎么备案网站开发工具的是什么