• Web开发-GET与POST


    • GET 和 POSTHTTP 协议中两种主要的请求方法,其主要区别在于传输数据的方式不同。

    GET

    • GET 方法是通过 URL 传递参数,可以获取被请求的资源,通常用于获取数据,例如查询 API、获取网页内容等。其作用是向服务器发送一个请求,要求返回某个资源的表示形式,比如网页的 HTML 代码。GET 方法不支持传输敏感信息,比如信用卡信息等。
    • 这是因为 GET 方法的安全性较高,不会对服务器造成太大的负担。

    登录界面代码

    @RequestMapping(value="/login",method=RequestMethod.GET)
    	public String login(Model model){
    		model.addAttribute("siteName", siteConfig.getSiteName());
    		model.addAttribute("siteUrl", siteConfig.getSiteUrl());
    		return "admin/system/login";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    POST

    • POST 方法通过 HTTP 请求体传递参数,是将数据提交到服务器,通常用于提交表单数据、上传文件等。其作用是向服务器发送一个请求,要求执行某个操作,比如提交表单、上传文件等。POST 方法可以传输敏感信息,比如信用卡信息等。
    • POST 方法则可能会对服务器造成较大的负担。

    登录界面代码

    @RequestMapping(value="/login",method=RequestMethod.POST)
    	@ResponseBody
    	public Result<Boolean> login(HttpServletRequest request,User user,String cpacha){
    		if(user == null){
    			return Result.error(CodeMsg.DATA_ERROR);
    		}
    		//用统一验证实体方法验证是否合法
    		CodeMsg validate = ValidateEntityUtil.validate(user);
    		if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
    			return Result.error(validate);
    		}
    		//表示实体信息合法,开始验证验证码是否为空
    		if(StringUtils.isEmpty(cpacha)){
    			return Result.error(CodeMsg.CPACHA_EMPTY);
    		}
    		//说明验证码不为空,从session里获取验证码
    		Object attribute = request.getSession().getAttribute("admin_login");
    		if(attribute == null){
    			return Result.error(CodeMsg.SESSION_EXPIRED);
    		}
    		//表示session未失效,进一步判断用户填写的验证码是否正确
    		if(!cpacha.equalsIgnoreCase(attribute.toString())){
    			return Result.error(CodeMsg.CPACHA_ERROR);
    		}
    		//表示验证码正确,开始查询数据库,检验密码是否正确
    		User findByUsername = userService.findByUsername(user.getUsername());
    		//判断是否为空
    		if(findByUsername == null){
    			return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
    		}
    		//表示用户存在,进一步对比密码是否正确
    		if(!findByUsername.getPassword().equals(user.getPassword())){
    			return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
    		}
    		//检查一切符合,可以登录,将用户信息存放至session
    		request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);
    		//销毁session中的验证码
    		request.getSession().setAttribute("admin_login", null);
    		//将登陆记录写入日志库
    		operaterLogService.add("用户【"+user.getUsername()+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登录系统!");
    		log.info("用户成功登录,user = " + findByUsername);
    		return Result.success(true);
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
  • 相关阅读:
    可以ping通,防火墙也关闭了,但是ssh无法登录解决方案
    XctNet:从单个X射线图像重建体积图像的网络
    基于改进樽海鞘群寻优SVM的土壤含水量预测算法
    人工智能学习:CIFAR-10数据分类识别-VGG网络(5)
    Android 10.0 Launcher3 抽屉式(双层)app列表排序
    2022国自然中标至少1篇1区代表作?没中接下来怎么办?
    SpringBoot中单元测试的使用
    [附源码]Python计算机毕业设计SSM建筑材料采购管理系统(程序+LW)
    痞子衡嵌入式:在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤(MIPI DSI接口)
    在linux上做移动开发必须知道这五个
  • 原文地址:https://blog.csdn.net/weixin_45880844/article/details/133384663