- 继续修改MyGetMethod 类, 主要是添加了getList方法
package com.gracie.server;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@RestController //告诉@ComponentScan , 我是需要被扫描的类
public class MyGetMethod {
@RequestMapping(value="/getcookies", method = RequestMethod.GET) //配置访问方法和路径
public String getCookies(HttpServletResponse response){
//HttpServletRequest 装请求信息的类,从客户端带着信息来server
//HttpServletResponse 装响应信息的类, 从server端带着信息回到客户端
Cookie cookie=new Cookie("login", "true"); //设定cookie值
response.addCookie(cookie);
return "恭喜你获得cookies成功";
}
/*
要求客户端携带cookies来访问
*/
@RequestMapping(value="/get/with/cookies", method = RequestMethod.GET) //配置访问方法和路径
public String getwithCookies(HttpServletRequest request){
Cookie[] cookies=request.getCookies();
/*HttpServletRequest里有一个方法叫request.getCookies,此方法可以返回cookie,注意cookie是键值对,所以是数组
需要通过一个数组来存储它 */
if (Objects.isNull(cookies)){
return "判断结果:你需要携带cookies信息来"; //判断返回的数组cookies是不是为空
}
for (Cookie cookie: cookies){
if (cookie.getName().equals("login") && cookie.getValue().equals("true")){
return "恭喜你访问成功"; //对cookies信息做一个判断,如果判断ok,则表示cookies里的确是有信息
}
}
return "你必须携带cookies信息来";
}
/*
开发一个需要携带参数才能访问的get请求
第一种实现方式: url: key=value&key=value
我们来模拟获取商品列表
*/
@RequestMapping(value="/get/with/param", method = RequestMethod.GET)
public Map<String, Integer> getList(@RequestParam Integer start, @RequestParam Integer end){
//商品列表返回的是一个Map, 有一个商品名称,有一个价格
//@RequestParam,此注解设置开始位置和结束位置
//真实项目中需要拿start和end到数据库中取值,此处模拟以下商品
Map<String, Integer> myList=new HashMap<>(); //模拟商品
myList.put("Shoes", 400);
myList.put("T-shirt", 200);
myList.put("Doll", 500);
return myList;
}
}
- 重新运行Application.main()方法, 查看结果:
注意此处的重点是URL里的设置
- 继续修改继续修改MyGetMethod 类, 修改代码如下:
package com.gracie.server;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@RestController //告诉@ComponentScan , 我是需要被扫描的类
public class MyGetMethod {
@RequestMapping(value="/getcookies", method = RequestMethod.GET) //配置访问方法和路径
public String getCookies(HttpServletResponse response){
//HttpServletRequest 装请求信息的类,从客户端带着信息来server
//HttpServletResponse 装响应信息的类, 从server端带着信息回到客户端
Cookie cookie=new Cookie("login", "true"); //设定cookie值
response.addCookie(cookie);
return "恭喜你获得cookies成功";
}
/*
要求客户端携带cookies来访问
*/
@RequestMapping(value="/get/with/cookies", method = RequestMethod.GET) //配置访问方法和路径
public String getwithCookies(HttpServletRequest request){
Cookie[] cookies=request.getCookies();
/*HttpServletRequest里有一个方法叫request.getCookies,此方法可以返回cookie,注意cookie是键值对,所以是数组
需要通过一个数组来存储它 */
if (Objects.isNull(cookies)){
return "判断结果:你需要携带cookies信息来"; //判断返回的数组cookies是不是为空
}
for (Cookie cookie: cookies){
if (cookie.getName().equals("login") && cookie.getValue().equals("true")){
return "恭喜你访问成功"; //对cookies信息做一个判断,如果判断ok,则表示cookies里的确是有信息
}
}
return "你必须携带cookies信息来";
}
/*
开发一个需要携带参数才能访问的get请求
第一种实现方式: url: key=value&key=value
我们来模拟获取商品列表
*/
@RequestMapping(value="/get/with/param", method = RequestMethod.GET)
public Map<String, Integer> getList(@RequestParam Integer start, @RequestParam Integer end){
//商品列表返回的是一个Map, 有一个商品名称,有一个价格
//@RequestParam,此注解设置开始位置和结束位置
//真实项目中需要拿start和end到数据库中取值,此处模拟以下商品
Map<String, Integer> myList=new HashMap<>(); //模拟商品
myList.put("Shoes", 400);
myList.put("T-shirt", 200);
myList.put("Doll", 500);
return myList;
}
/**
* 开发一个需要携带参数才能访问的get请求
* 第二种实现方式: url: ip:port//get/with/param/10/20
* 我们来模拟获取商品列表
*/
@RequestMapping(value = "/get/with/param/{start}/{end}")
public Map<String, Integer> myGetList(@PathVariable Integer start, @PathVariable Integer end){
Map<String, Integer> myList=new HashMap<>(); //模拟商品
myList.put("Shoes", 400);
myList.put("T-shirt", 200);
myList.put("Doll", 500);
return myList;
}
}
-
重新运行Application.main()方法, 查看结果:
注意此处的重点是URL里的设置
-
综合:使用Spring boot开发get方法结构: 带cookies,带参数, 修改代码如下
package com.gracie.server;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@RestController //告诉@ComponentScan , 我是需要被扫描的类
public class MyGetMethod2 {
@RequestMapping(value="/getcookies", method = RequestMethod.GET) //配置访问方法和路径
public String getCookies(HttpServletResponse response){
//HttpServletRequest 装请求信息的类,从客户端带着信息来server
//HttpServletResponse 装响应信息的类, 从server端带着信息回到客户端
Cookie cookie=new Cookie("login", "true"); //设定cookie值
response.addCookie(cookie);
return "恭喜你获得cookies成功";
}
/*
开发一个需要携带参数才能访问的get请求
第一种实现方式: url: key=value&key=value
我们来模拟获取商品列表
*/
@RequestMapping(value="/get/with/param", method = RequestMethod.GET)
public Map<String, Integer> getList(HttpServletRequest request, @RequestParam Integer start, @RequestParam Integer end){
Cookie[] cookies=request.getCookies();
/*HttpServletRequest里有一个方法叫request.getCookies,此方法可以返回cookie,注意cookie是键值对,所以是数组
需要通过一个数组来存储它 */
if (Objects.isNull(cookies)){
System.out.println("判断结果:你需要携带cookies信息来"); ; //判断返回的数组cookies是不是为空
}
for (Cookie cookie: cookies){
if (cookie.getName().equals("login") && cookie.getValue().equals("true")){
System.out.println("恭喜你访问成功"); //对cookies信息做一个判断,如果判断ok,则表示cookies里的确是有信息
}
}
//商品列表返回的是一个Map, 有一个商品名称,有一个价格
//@RequestParam,此注解设置开始位置和结束位置
//真实项目中需要拿start和end到数据库中取值,此处模拟以下商品
Map<String, Integer> myList=new HashMap<>(); //模拟商品
myList.put("Shoes", 400);
myList.put("T-shirt", 200);
myList.put("Doll", 500);
return myList;
}
}
- 重新运行Application.main()方法, 查看结果:
从server端获得cookies:
不带参数的访问:
带参数的访问:
查看控制台: