html5网站建设,破解asp网站后台地址,建设营销型网站制作,保健品网站模版文章目录1. 获取单个参数2. 获取多个参数3. 获取对象4. 后端参数重命名 RequestParam5. 接收 JSON 格式的数据 RequestBody6. 从 URL 地址中获取参数 PathVariable7. 上传文件 RequestPart8. 获取Cookie (CookieValue)/Session/header8.1 获取 Request 和 Response 对象8.2 获取…
文章目录1. 获取单个参数2. 获取多个参数3. 获取对象4. 后端参数重命名 RequestParam5. 接收 JSON 格式的数据 RequestBody6. 从 URL 地址中获取参数 PathVariable7. 上传文件 RequestPart8. 获取Cookie (CookieValue)/Session/header8.1 获取 Request 和 Response 对象8.2 获取 Cookie8.3 获取 Header请求头里面的信息8.4 存储和获取 Session服务器端要得到用户的请求参数
Data
public class UserInfo {private int id;private String username;private String password;private int age;
}1. 获取单个参数
注意这里的参数类型要用 包装类否则传一个空的值就会出错 并且这里的参数一定要和前端传递的参数名保持一致否则就获取不到参数的值了
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/getuserbyid)public UserInfo getUserById(Integer id) { //两种命名方式 getUserById | findUserById// 不查数据库伪代码返回用户对象UserInfo userInfo new UserInfo();userInfo.setId(id);userInfo.setUsername(张三);userInfo.setAge(18);return userInfo;}
}2. 获取多个参数
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/login)public String login(String username, String password) {return 用户名: username | 密码: password;}
}3. 获取对象
如果要获取的参数很多的话也可以按照第二种方法来写但是从代码的美观和维护角度来看就不太建议这样来写了 Spring MVC 可以自动实现参数对象的赋值
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/reg)public String reg(UserInfo userInfo) {return 用户信息 userInfo;}
}4. 后端参数重命名 RequestParam
有些特殊情况下前端传递的参数 key 和我们后端接收的 key 可以不一致比如前端传递了一个 time 给后端而后端又是用 createtime 字段来接收的这样就会出现参数接收不到的情况如果出现这种情况我们就可以使用 RequestParam 来重命名前后端的参数值
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/login)public String login(RequestParam(value name, required false) String username, String password) {return 用户名: username | 密码: password;}
}5. 接收 JSON 格式的数据 RequestBody
服务器端实现 JSON 数据的接收需要使用 RequestBody 注解
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/reg)public String reg(RequestBody UserInfo userInfo) {return 用户信息 userInfo;}
}6. 从 URL 地址中获取参数 PathVariable
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/hero/{id}/{name})public String getHeroInfo(PathVariable String id, PathVariable String name) {return ID: id | Name: name;}
}7. 上传文件 RequestPart
Slf4j
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/upimg)public boolean upImg(Integer uid, RequestPart(img) MultipartFile file) {boolean result false;// 保存图片到本地目录try {file.transferTo(new File(D:/IDEA/img.png));result true;} catch (IOException e) {log.error(上传图片失败: e.getMessage());}return result;}
} 文件上传这样还有一个问题这里上传文件到的目录是写为固定了的那么比如说张三上传图片到这个位置李四上传另一个图片也是到这个位置李四的图片就会把张三的图片覆盖了所以说就会有这样的一个问题
针对这个问题可以对上面的代码进行改进主要就是这三个方面
1解决目录问题不同平台的配置文件设置 比如说在开发环境需要将上传的文件保存到这个目录但在生产环境中又需要将文件保存到 Linux 中的某个目录上如果在开发时写了很多个需要上传文件的目录那么到项目上线时需要修改到 Linux 目录是极为麻烦的所以这就需要进行不同平台的配置文件设置 application-dev.yml
# 开发环境的配置文件# 图片保存的路径
img:path: D:/IDEA/
application-prod.yml
# 生产环境的配置# 图片保存的路径
img:path: /root/img/application.yml
# 设置配置文件的运行平台
spring:profiles:active: devUserController.java
Slf4j
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {// 从配置文件中读取图片的保存路径Value(${img.path})private String imgPath;RequestMapping(/sayhi)public String sayHi() {return 66666 imgPath;}
}
如果 application.yml 中设置的配置文件运行平台是开发环境也就是 application-dev.yml运行程序可以看到 反之如果在 application.yml 中设置为生产环境运行程序 2生成图片名称UUID
3获取原图片的上传格式获取原文件名称并根据原文件名称的后缀来截取 “.” 后面的字符
Slf4j
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {// 从配置文件中读取图片的保存路径Value(${img.path})private String imgPath;RequestMapping(/upimg)public boolean upImg(Integer uid, RequestPart(img) MultipartFile file) {boolean result false;// 1.目录imgPath// 2.图片名称图片名称不能重复如果重复就会把重名的图片覆盖【UUID】// 3.获取原上传图片的格式(获取原文件名称并根据原文件名称的后缀来截取 “.” 后面的字符)String fileName file.getOriginalFilename(); // 得到原图片的名称xxx.pngfileName fileName.substring(fileName.lastIndexOf(.)); // 得到图片后缀 (png)fileName UUID.randomUUID().toString() fileName; //UUID 后缀格式// 保存图片到本地目录try {
// file.transferTo(new File(D:/IDEA/img.png));file.transferTo(new File(imgPathfileName));result true;} catch (IOException e) {log.error(上传图片失败: e.getMessage());}return result;}
}
可以看到这里使用 Postman多点几次 Send每次上传图片的名字是不同的
8. 获取Cookie (CookieValue)/Session/header
8.1 获取 Request 和 Response 对象
因为 Spring MVC是基于 Servlet 的所以这里可以直接写
Slf4j
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/sayhi)public String sayHi(HttpServletRequest request) {return 66666 request.getParameter((name));}
}8.2 获取 Cookie
1Servlet 获取 Cookie 的方法
Slf4j
Controller
ResponseBody // 作用: 表示的是返回一个非静态页面的数据
RequestMapping(/user) // 类上的 RequestMapping 可以省略
public class UserController {RequestMapping(/cookie)public void getCookie(HttpServletRequest request) {// 得到全部 CookieCookie[] cookies request.getCookies();for (Cookie item : cookies) {log.info(Cookie Name: item.getName() | Cookie Value: item.getValue());}}2使用 CookieValue 注解实现 Cookie 的读取 RequestMapping(/cookie2)public String getCookie2(CookieValue(666)String cookie) {return Cookie Value: cookie;}8.3 获取 Header请求头里面的信息
1Servlet 获取 Header 的方法 RequestMapping(getua)public String getHead(HttpServletRequest request) {return header: request.getHeader(User-Agent);}2使用 RequestHeader 注解实现 Header 的获取 RequestMapping(getua2)public String getHead(RequestHeader(User-Agent)String userAgent) {return header: userAgent;}8.4 存储和获取 Session
1Session 存储和 Servlet 类似是使⽤ HttpServletRequest 中获取的 RequestMapping(/setsess)public boolean setSession(HttpServletRequest request) {boolean result false;// 1.得到 HttpSession// true 》 如果没有会话那就创建HttpSession session request.getSession(true);// 2.使用 setAtt 设置值session.setAttribute(userinfo,userinfo);result true;return result;}2获取 Session 方法1Servlet 模式 RequestMapping(/getsess)public String getSession(HttpServletRequest request) {String result null;// 1. 先得到HttpSession 对象HttpSession session request.getSession(false);// 2. getAttribute 得到 Session 信息if(session ! null session.getAttribute(userinfo) ! null) {result (String) session.getAttribute(userinfo);}return result;}3获取 Seesion 方法2SessionAttribute 通常情况下需要添加 required false 如果不添加那么当 session 中不存在此属性的时候程序运行就会报错 RequestMapping(/getsess2)public String getSession2(SessionAttribute(value userinfo,required false)String userinfo) {return 会话 userinfo;}