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

公司购买网站建设费用会计分录专业网络营销

公司购买网站建设费用会计分录,专业网络营销,wordpress 民宿模板,活动策划案模板一#xff1a;了解Spring Web MVC (1)关于Java开发 #x1f31f;Java开发大多数场景是业务开发 比如说京东的业务就是电商卖货、今日头条的业务就推送新闻#xff1b;快手的业务就是短视频推荐 (2)Spring Web MVC的简单理解 #x1f497;Spring Web MVC#xff1a;如何使…一了解Spring Web MVC (1)关于Java开发 Java开发大多数场景是业务开发 比如说京东的业务就是电商卖货、今日头条的业务就推送新闻快手的业务就是短视频推荐 (2)Spring Web MVC的简单理解 Spring Web MVC如何使用Spring去建网站 (我们知道既然Java是做业务开发就避免不了建网站) Spring Web MVC是⼀个Web框架也可以简称为Spring MVC  ①SpringSpring就是一个框架能让我们更快速、便捷和高效的去完成Java开发 ②Web表示做的是网页、网站的开发 ③MVCMVC是Model View Controller的缩写它是软件工程中的一种软件架构设计模式 (MVC就是把项目分为模型、视图和控制器三个基本部分 ) 二学习Spring Web MVC前提 (1)了解客户端和服务器的交互 通过客户端和服务器进行交互主要分为三个方面 (客户端浏览器/用户程序) ①建立连接将客户端(浏览器/用户程序)和服务器(Java程序)连接起来也就是访问⼀个浏览器地址能够调用到我们Java写的的Spring程序 ②请求当建立完连接之后客户端会向服务器发出一个请求此时在服务器端就得获取到请求的参数因此总的来说请求这块的主要是服务器为了获取请求的参数 ③响应服务器获取请求参数后然后执行业务逻辑执行完毕就把执行的结果返回给客户端 对于Spring Web MVC来说掌握了以上3个功能就相当于掌握了Spring Web MVC (2)项目准备 Spring MVC项目创建和SpringBoot创建项目相同在创建的时候选择Spring Web就相当于创建了Spring MVC的项目 三Spring Web MVC-建立连接 (1)RequestMapping概念 ①作用实现URL路由映射也就是实现客户端连接服务器的作用 (即浏览器连接Java后端它们通过RequestMapping建立连接) ②访问IP:端口号/类的路径方法路径 (类的路径和方法路径其实就是RequestMapping里的参数区分方式主要看它写在类外还是类内) ③理解表示服务器收到请求时路径为XXX的请求就会调用XXX路径对应这个方法的代码 (2)RequestMapping使用方式 1.使用方式和细节 RequestMapping既可以修饰类也可以修饰方法 RequestMapping参数里的“/”可以省略但还是建议加上 2.方法路径 方法路径写在类内此时如果没有类的路径直接通过方法路径即可访问网址 下列代码表示服务器收到请求时路径为/sayhi的请求就会调用sayHi这个方法里的代码 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;//此时没有类的路径那么类的路径就为空直接访问方法路径即可 RestController public class HelloController {RequestMapping(/sayhi) //方法路径//sayHi()方法就是需要在网站上显示什么方法名不要求与路径名相同//例如我的路径名是sayhi方法名是sayHipublic String sayHi() { return hi,SpringBoot;} } 3.类的路径 类的路径写在类外此时需要通过类的路径方法路径才能访问网址 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/hlizoo) //类路径 RestController public class HelloController {RequestMapping(/sayhi) //方法路径public String sayHi() {return hi,SpringBoot;} } 4.路径嵌套 路径也可以包含多层即多层套娃 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/hlizoo/cool) //类路径多层路径 RestController public class HelloController {RequestMapping(/sayhi/no) //方法路径多层路径public String sayHi() {return hi,SpringBoot;} } (3)RequestMapping限制请求 RequestMapping支持所有的请求比如GET、POST、PUT等等 RequestMapping如果没有写属性默认只有路径此时可以写Method属性来限制请求的方法 (比如以下代码说明路径是/hlizoo/sayhi和请求方法是GET时才调用sayHi方法) package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController;RequestMapping(/hlizoo) //类路径 RestController public class HelloController {//当你写了mehod前面的路径就会默认加上valueRequestMapping(value /sayhi,method RequestMethod.GET) //方法路径此时指定是GET请求public String sayHi() {return hi,SpringBoot;} } 四Spring Web MVC-请求 (1)明确请求部分的学习内容 学习Spring的请求主要是学习如何传递参数到后端(服务器)以及后端(服务器)如何接收 原因就是当我们访问不同的路径就会发送不同的请求在发送请求时可能会带⼀些参数我们就要学习如何传参和接参 (2)传递单个参数的接收方法 1.方法 方法接收单个参数直接在Spring MVC的方法形参中声明参数数据类型和参数名即可 参数类型建议使用包装数据类型 (1)如果传的是基本数据类型必须要传参传值否则会报错 (2)如果传的是包装数据类型不传参传值不会报错而是返回null 2.后端代码 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m1)//此时就代表了接收了一个name参数//至于这个name前端是如何给的作为后端人员并不关心我的要求只是一个name参数而已//接收单个参数直接在m1方法写参数数据类型和参数名即可public String m1(String name){return 接收到的参数name:name;} } 3. 利用Postman发送单个参数的请求 ①当没有传递name参数的情况 ②当传递了name参数的情况 4.注意事项 (3)传递多个参数的接收方法 1.方法 方法接收多个参数直接在Spring MVC的方法形参中声明多个参数数据类型和参数名即可 参数类型建议使用包装数据类型 (1)如果传的是基本数据类型必须要传参传值否则会报错 (2)如果传的是包装数据类型不传参传值不会报错而是返回null 2.后端代码 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/param) RestController public class ParamController {//接收多个参数直接在m2方法写多个参数数据类型和参数名即可RequestMapping(/m2)public String m2(String name,Integer age){return 接收到的参数name:name,age:age;} } 3. 利用Postman发送多个参数的请求 4.注意事项 (4)传递对象的接收方法 1.方法 方法 ①先写一个类把这些参数封装为一个对象写上Getter和Setter以及toString方法 ②在方法的形参部分写上类和对象名 (原因当参数过多时方法声明就要写很多的形参形参太多既不雅观修改也不方便不妨写个类封装成对象) 2.后端代码 ①新建一个Person类 package com.example.demo;public class Person {Integer id;String name;Integer age;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;}Overridepublic String toString() {return Person{ id id , name name \ , age age };} } ②方法的代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m4)public String m4(Person person){return 接收到的参数person:person.toString();} } 3.利用Postman发送请求 (5)后端参数重命名 1.方法 方法RequestParam来重命名前后端的参数值 ①进行了重命名后就一定要使用RequestParam里写的名字来进行传参 ②进行了重命名后如果使用了其他名字来进行传参要么报错要么为null 2.后端代码 情况某些特殊的情况下前端传递的参数key和我们后端接收的key可以不一致 比如后端是使用username字段来接收的而前端却用了name字段来传递这样就会出现参数接收不到的情况 package com.example.demo.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m5)public String m5(RequestParam(name) String username){return 接收到的参数name:username;} } 3. 利用Postman发送请求 ①当用name作为字段来传参时可以顺利的接收到请求 ②当用username作为字段传参的时候反而报错了 4.注意事项 ①如果使用了RequestParam且不加任何属性那么它里面的参数就是必传参数了如果使用了其它的字段来传参就会报错 (2)RequestParam里如果添加了required属性required为false则里面的参数就不是必传参数了使用了其他字段传参不会报错只会变成null (6)传递数组的接收方法 1.方法 方法在方法形参中写个数组即可因为Spring MVC可以自动绑定数组参数的赋值 当我们的请求中同一个参数名的参数有多个时浏览器会给我们封装成一个数组 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Arrays;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m6)public String m6(String []arrayParam){return 接收到的参数arrayParam Arrays.toString(arrayParam);} } 3.利用浏览器发送请求 方式一用浏览器发送多个相同参数名的参数参数之间用分割 (当请求中同一个参数名arrayParam的参数有多个时浏览器会给我们封装成一个数组) 方式二用浏览器发送多个相同参数名的参数参数之间用分割 (当请求中同一个参数名arrayParam的参数有多个时浏览器会给我们封装成一个数组) (7)传递集合的接收方法 1.方法 方法先使用RequestParam绑定参数关系然后写集合类和对象名即可 集合接收的方法和数组类似只不过在默认情况下请求中参数名相同的多个值是封装到数组如果要封装到集合要使用RequestParam绑定参数关系 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m7)public String m7(RequestParam ListString listParam){return 接收到的参数listParam listParam 长度为listParam.size();} } 3.利用Postman发送请求 (8)传递JSON数据的接收方法 1.JSON定义 JSONJavaScriptObjectNotation 【JavaScript对象表示法】 ①JSON就是⼀种数据格式有自己的格式和语法使用文本表示一个对象或数组的信息 ②JSON本质是字符串主要负责在不同的语言中数据传递和交换 2.JSON语法 3.JSON字符串和Java对象互转 使用ObjectMapper对象提供的两个方法可以完成对象和JSON字符串的互转 ①writeValueAsString: 把Java对象转为JSON字符串 (参数写的是Java对象) ②readValue: 把JSON字符串转为Java对象 (第一个参数是JSON字符串第二个参数是Java对象) public class JSONUtils {private static ObjectMapper objectMapper new ObjectMapper();public static void main(String[] args) throws JsonProcessingException {Person person new Person();person.setId(5);person.setName(zhangsan);person.setPassword(123456);//Person对象转为JSON字符串String jsonStr objectMapper.writeValueAsString(person);System.out.println(JSON字符串为:jsonStr);//JSON字符串转为对象Person p objectMapper.readValue(jsonStr,Person.class);System.out.println(转换的对象 id:p.getId(),name:p.getName(),password:p.getPassword());} } 4.方法 方法接收JSON对象需要使用RequestBody注解 RequestBody请求正文意思是这个注解作用在请求正文的数据绑定请求参数必须写在请求正文中 5.后端代码 ①创建一个Person对象 package com.example.demo;public class Person {Integer id;String name;Integer age;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;}Overridepublic String toString() {return Person{ id id , name name \ , age age };} } ②方法的代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m8)public String m8(RequestBody Person person){return 接收到的数据person:person.toString();} } 6.利用Postman发送JSON请求 (9)获取URL中的参数 1.方法 方法使用到PathVariable来拿到URL的参数 PathVariable主要作用在请求URL路径上的数据绑定默认传递参数写在URL上SpringMVC就可以获取到 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController { //注意RequestMapping的参数RequestMapping(/m9/{userId})public String m9(PathVariable Integer userId) {return userId:userId;} } 3.利用Postman发送请求 4.注意事项 (10)上传文件 1.方法 方法使用到RequestPart ①文件我们一般用MultipartFile file来接收因此方法的形参一般写RequestPart MultipartFile file ②transferTo方法可以将文件上传且保存到指定路径 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/m10)public String m10(RequestPart MultipartFile file) throws IOException {//获取文件名称String filename file.getOriginalFilename();//上传文件到指定路径file.transferTo(new File(D:/test/file.getOriginalFilename()));return success文件名称filename;} }3.利用Postman发送图片请求 4.注意事项 (11)获取Cookie/Session 1.为什么会出现Cookie与Session 原因HTTP协议自身是属于无状态协议即HTTP协议无记忆功能 无状态的含义指的是默认情况下HTTP协议的客户端和服务器之间的这次通信和下次通信之间没有直接的联系但是实际开发中我们很多时候是需要知道请求之间的关联关系的 例如登录网站成功后第⼆次访问的时候服务器就能知道该请求是否是已经登陆过了 2.区分Cookie与Session概念 ①Cookie是浏览器存储(临时)数据的机制 ②Session是服务器存储(临时)数据的机制 (作用存储用户的详细信息并给用户分配一个唯一值sessionid后续再访问网站的其他页面时HTTP请求就会自动带上sessionid通过sessionid就能找到对应的Session即对应的用户) ③两者的区别 ④两者的联系 3.详解Cookie ①Cookie是浏览器本地存储数据的一种机制 (此时在服务器这边就需要记录令牌信息以及令牌对应的用户信息这个就是Session机制所做的工作下文详细说) ②作用实现 身份标识 的功能每个不同的域名下都可以有不同的Cookie, 不同网站之间的Cookie并不冲突 (Cookie会存储很多键值对往往会有一个很重要的键值对是用来表示用户的“身份信息”即标识当前请求是来自于哪个用户的就会产生这么一种场景比如你登陆一个网站后续再访问这个网站页面就无需登录了而且就算关了电脑第二天重开网页依然不需要登录) ③Cookie的原理Cookie是按键值对的形式来存储了一些字符串这些键值对往往都是由服务器返回回来的浏览器把这些键值对按照“域名”维度进行分类存储意思就是说不同网站就有不同的Cookie例如百度有百度的Cookie搜狗有搜狗的Cookie这些Cookie的内容都是由程序猿自己定义的 ④Cookie的保存机制 ⑤总结 (1)Cookie从哪来 答Cookie是从服务器返回给浏览器的 (2)Cookie是如何保存的保存在哪 答浏览器按照不同的域名分别存储Cookie域名与域名之间的Cookie是不能互相干扰的即每一组域名都有自己的CookieCookie保存在浏览器所在电脑的硬盘上就算关机也不会影响到 (3)Cookie中的内容是啥 答Cookie中的内容是键值对结构的数据这里的键值对是由程序猿自己定义的 (4)Cookie中的内容到哪里去 答后续访问该网站的各个页面时就都会在请求中带上Cookie服务器就可以进一步知道客户端用户的详细情况  ⑥Cookie的缺点 Cookie是可以伪造的 问浏览器要保存数据为啥要先保存到Cookie再让Cookie保存到硬盘而不能直接往硬盘写入一个文件保存 答往硬盘写入是绝对不行的因为如果你让网页能够轻易的访问你的文件系统这是一件非常危险的事情想一下如果你上一种病毒网站网站直接给你的电脑上下个病毒或者直接把你硬盘上已有的数据删除掉了那不就完蛋了 因此为了保证安全浏览器会对网页的功能作出限制禁止访问硬盘就是对网页的其中一个限制所以为了既能保证安全也能保存数据浏览器就提供了一个Cookie功能 4.了解Session ①Sessionid保存在Cookie中后面再去访问服务器的时候我的Cookie就带着Sessionid去访问然后服务器就可以根据这个Sessionid去返回对应的Session了 (但在服务器这边也需要记录SessionId以及SessionId对应的用户信息Session) ②Session的缺点存在分布式问题 5.获取Cookie的普通方法 普通方法需要用到HttpServletRequestHttpServletResponse它们是Servlet提供的两个类 ①HttpServletRequest对象代表客户端的请求当客户端通过HTTP协议访问服务器时HTTP请求头中的所有信息都封装在这个对象中通过这个对象提供的方法可以获得客户端请求的所有信息 ②HttpServletResponse对象代表服务器的响应HTTP响应的信息都在这个对象中比如向客户端发送的数据、响应头、状态码等通过这个对象提供的方法可以获得服务器响应的所有内容 这两个类是Spring内置的对象当你需要的时候直接在方法声明加上即可 6.获取Cookie的后端代码(普通版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/getcookie)public String m11(HttpServletRequest request, HttpServletResponse response){//拿到cookie的对象Cookie[] cookies request.getCookies();//打印cookie的值if(cookies!null){for (Cookie cookie : cookies) {System.out.println(cookie.getName():cookie.getValue());} }return 获取cookie成功;} } 7.获取Cookie的简单方法 简单方法使用CookieValue即可 使用简单的方法一个CookieValue一次只能拿一个Cookie要想拿多个Cookie就得使用多个CookieValue (它不像普通方法那样一次性可以拿完全部的Cookie然后保存到数组中) 8.获取Cookie的后端代码(简单版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/getcookie2)public String m12(CookieValue String bite,CookieValue String aaa){return cookie存储的值bite:bite,aaa:aaa;} } 9.利用浏览器设置Cookie(普通版) ①右键浏览器选择检查选择Applicaition ②选择左侧栏Storage栏中的Cookies ③自主添加Name和Value比如我添加如下图所示的 ④此时再次刷新网页并观看IDEA控制台 10.利用浏览器设置Cookie(简单版) 当设置好Cookie后直接就可以获取了 11.获取Session的普通方法 普通方法①基于HttpServletRequest来存储和获取的 普通方法②基于HttpSession来存储和获取的 HttpServletRequest、HttpServletResponse、HttpSession都是Spring内置对象 (内置对象需要使用的时候直接方法声明即可) Session是服务器端的机制我们需要先存储才能再获取 12.获取Session的后端代码(普通版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController { //session要先存储才能获取并且session不像cookie那样可以设置//这里先存储sessionRequestMapping(/setSession)public String setSession(HttpServletRequest request){HttpSession session request.getSession();session.setAttribute(username,zhangsan);return success;}//第一种普通方法使用Spring内置对象HttpServletRequestRequestMapping(/getsession)public String m13(HttpServletRequest request){//参数为true没有session则创建session//参数为false没有session则放回nullHttpSession session request.getSession(false);if (session!null){String username (String) session.getAttribute(username);return 登录用户username;}return session为空; }//第二种普通方法使用Spring内置对象HttpSessionRequestMapping(/getsession3)public String m15(HttpSession session){String username (String) session.getAttribute(username);return 登录用户:username;} } 13.观察浏览器(普通版) ①先输入setSession来观察浏览器效果 (因为session要先存储才能获取) ②再去观察Cookie的效果可以看到多了一个JSESSIONID 14.获取Session的简单方法 方法使用SessionAttribute即可 使用简单的方法一个SessionAttribute一次只能拿一个Session要想拿多个Session就得使用多个SessionAttribute 使用SessionAttribute的参数默认是必传参数如果让requiredfalse就不是必传参数了 15.获取Session的后端代码(简单版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {//session要先存储才能获取并且session不像cookie那样可以设置//这里先存储sessionRequestMapping(/setSession)public String setSession(HttpServletRequest request){HttpSession session request.getSession();session.setAttribute(username,zhangsan);return success;}RequestMapping(/getsession2)public String m14(SessionAttribute(required false) String username){return username:username;} } 16.观察浏览器(简单版) ①依旧是输入先输入setSession来观察浏览器效果 (因为session要先存储才能获取) ②此时去观察简单方法的浏览器效果 (12)获取Header 1.获取Header的普通方法 普通方法依旧使用内置对象HttpServletRequest通过HttpServletRequest提供的getHeader方法来获取参数对应HTTP请求报头的Key 2.后端代码(普通版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController {RequestMapping(/getHeader)public String m16(HttpServletRequest request){String UserAgent request.getHeader(User-Agent);return User-Agent:UserAgent;} } 3.观察浏览器效果(普通版) 4.获取Header的简单方法 简单方法使用RequestHeaderRequestHeader的参数值为HTTP请求报头中的Key如果你想赋值给哪个变量在后面写上即可 5.后端代码(简单版) package com.example.demo.Controller; import com.example.demo.Person; import com.sun.deploy.net.HttpResponse; import org.springframework.http.HttpRequest; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List;RequestMapping(/param) RestController public class ParamController { RequestMapping(/getHeader2)public String m17(RequestHeader(User-Agent) String UserAgent){return User-Agent:UserAgent;} } 6.观察浏览器效果(简单版) 五Spring Web MVC-响应 (1)返回静态页面 1.方法 方法使用的是Controller (不是RestController跟上述的请求不一样下文详细分析) 返回static目录下的静态页面直接在return后面加上“/XXX.html”即可 (比如return /login.html) 2.前端代码 ①先在static目录下创建一个名字为index的html文件 ②因为是用来测试的我们前端代码写得简单一点就行 !DOCTYPE html html langen headmeta charsetUTF-8titleindex首页/title /head bodyh1我是index页面/h1 /body /html ③重新启动服务器访问index.html看看效果如何 (static目录下的静态页面可直接访问) 3.后端代码 package com.example.demo.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping;RequestMapping(/return) Controller //←注意这里用的是Controller public class ReturnController {RequestMapping(/index)public String returnIndex(){return /index.html;} } 4.观察浏览器效果 5.初次了解RestController ①RestController Controller ResponseBody (1)Controller : 定义⼀个控制器Spring框架启动时加载把这个对象交给Spring管理 (2)ResponseBody : 定义返回的数据格式为非视图返回⼀个text/html数据信息 ②Controller返回视图页面ResponseBody返回页面的数据 ③如果想返回视图的话只需要把ResponseBody去掉就可以了也就是Controller 6.初次了解Controller 作用Spring框架启动时加载把这个对象交给Spring管理然后去找需要返回的视图如果找到就返回例如HTML页面等等的视图没找到就报错404 (即是说把整个代码交给Spring告诉Spring帮我们去管理后续我们访问时才能访问到) (2)返回数据 1.方法 方法使用的是ResponseBody表示返回数据 (比如return /index.htmlController会去查找index.html文件但是如果加了ResponseBody就直接把/index.html当做⼀个文本数据返回给前端) ①ResponseBody既是类注解又是方法注解 ②ResponseBody如果作用在类上表示该类的所有方法返回的都是数据 (1)在类上添加ResponseBody就相当于在所有的方法上添加了ResponseBody (2)相同如果类上有RestController时表示所有的方法上添加了ResponseBody也就是当前类下所有的方法返回值都为响应数据  ③ResponseBody如果作用在方法上表示该方法返回的是数据 2.后端代码 package com.example.demo.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController { ResponseBody //作用于方法上表示returnData方法返回的是一个文本数据RequestMapping(/returndata)public String returnData(){return /index.html; //此时加了ResponseBody就直接返回一个文本数据} } 3.观察浏览器效果 (3)返回HTML代码片段 1.方法 方法使用ResponseBody也可返回HTML的文本数据 原因后端返回数据时如果数据中有HTML代码也会被浏览器解析 2.后端代码 package com.example.demo.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController {ResponseBodyRequestMapping(/returnHTML)public String returnHTML(){return h1这是一个HTML片段/h1;} } 3.观察浏览器效果 (4)返回JSON 1.方法 方法使用ResponseBody要想返回JSON则返回类型是对象或者Map即可 2.后端代码(示例一) package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController {ResponseBodyRequestMapping(/returnJSON)public Person returnjson(){ //使用之前的Person类Person person new Person();person.setId(7);person.setName(hlizoo);person.setAge(20);return person;} } 3.观察浏览器效果(示例一) 4.后端代码(示例二) package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; import java.util.Map;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController {ResponseBodyRequestMapping(/returnMAP)public MapString,String returnmap(){MapString,String kv new HashMap();kv.put(k1,v1);kv.put(k2,v2);kv.put(k3,v3);return kv;} } 5.观察浏览器效果(示例二) 6.注意事项 ①当我们的返回类型是基本数据类型和包装类型时Content-Type默认是text/html (比如String、Integer等等) ②当我们的返回类型是对象和Map等等时Content-Type自动设置为application/json (只要返回类型是对象和Map时要想返回json那啥都不用做浏览器自动就搞好了) (5)设置状态码 1.方法 方法使用Spring MVC内置对象HttpServletResponse提供的setStatus方法进行设置 Spring MVC会根据我们方法的返回结果自动设置响应状态码当然我们也可以手动指定状态码 注意这里的状态码并不影响页面的展示就算你的状态码是401也会显示你设置的内容 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController {ResponseBodyRequestMapping(/setStatus)public String setstatus(HttpServletResponse response){response.setStatus(401);return 设置状态码;} } 3.观察浏览器效果 (6)设置Content-Type 1.方法 方法通过设置RequestMapping里produces属性的值来设置响应的报头Content-Type 2.后端代码 package com.example.demo.Controller; import com.example.demo.Person; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.util.HashMap; import java.util.Map;RequestMapping(/return) Controller //←注意这里用的是Controller下面如果要返回数据必须要加上ResponseBody public class ReturnController { ResponseBodyRequestMapping(value /r1,produces application/json;charsetutf8)public String r1() {return {ok:200};} } 3.观察浏览器效果 (7)自行设置Header 方法通过内置对象HttpServletResponse里setHeader方法来设置响应的报头
http://www.pierceye.com/news/924177/

相关文章:

  • 淘宝网站建设步骤做网络网站需要三证么
  • 免费网站域名注册申请视频网站开发策划书
  • 如何在社交网站做销售无锡做网站企业
  • 网站建设首选唯美谷wordpress小程序编辑
  • openwrt 网站开发北京建机职业技能鉴定中心官网
  • 莱芜新站优化wordpress打卡签到领红包
  • wordpress 网站上传到服务器免费在线自助建站
  • 连云港网站优化公司网站优化竞争对手分析
  • 网页设计案例图片网站优化如何收费
  • 个人网站包含哪些内容昆明建企业网站多少钱
  • 摄影作品共享网站开发背景企业互联网服务平台
  • 伍佰亿网站建设礼品回收网站建设
  • 优秀的wordpress涉及seo关键词排名网络公司
  • 徐州免费建站wordpress 宣布停止
  • 黑龙江建设人员证件查询网站北京广告公司地址
  • 建设网站的流程泰安房产网二手房出售
  • 网站开发工具总结互联网营销是做什么
  • 长沙营销型网站开发简单免费模板
  • 东营远见网站建设公司聊城网站建设服务好
  • 品牌网站建设j小蝌蚪j网站管理建设的总结
  • 怎么做直播网站刷弹幕外链发布软件
  • 网站建站合同淘宝运营跟做网站哪种工资高
  • 网站建设导向百度秒收录
  • 海南省建设执业资格管理中心网站跨境电商资讯网
  • 天河公司网站建设公司编程是什么课程内容
  • 南宁门户网站有哪些不利于优化网站的因素
  • 鄱阳做网站来个黑黑的网站
  • wordpress 4 漏洞深圳专门做seo的公司
  • wordpress网站防伪查询模板东坑网站建设公司
  • 做网站的应用高端网站建站公司