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

Web开发-session介绍

目录

  • session介绍
  • session使用场景
  • session具体使用
  • 需要注意的是

session介绍

  • session 可以被看作是一种缓冲区,用于在多个请求之间存储和传递用户数据。
  • 在 Web 应用程序中,session 通常用于存储用户登录信息、购物车数据、用户偏好设置等。
  • 当用户在应用程序中进行多个请求时,session 可以确保数据在这些请求之间保持一致性,从而提高应用程序的效率和用户体验。

session使用场景

  • 验证码生成器通过将生成的验证码以特定名称作为键值对存储到session中。在生成验证码后,将验证码放入到request.get.session.set.attribute中,其中键的名称是传入的method参数,而值是验证码generator。

session具体使用

package hanshuhuan.test.controller.common;import hanshuhuan.test.util.CpachaUtil;import java.io.IOException;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;/*** 系统验证码公用控制器* @author shuhu**/
@Controller
@RequestMapping("/cpacha")
public class CpachaController {private org.slf4j.Logger log=LoggerFactory.getLogger(CpachaController.class);/*** 通用验证码生成器* @param vcodeLength* @param fontSize* @param width* @param height* @param method* @param request* @param response*/@RequestMapping(value="/generate_cpacha",method=RequestMethod.GET)public void generateCpacha(@RequestParam(name="vl",defaultValue="4")Integer vcodeLength,//验证码长度@RequestParam(name="fs",defaultValue="21")Integer fontSize,//验证码字体大小@RequestParam(name="w",defaultValue="98")Integer width,//验证码图片宽度@RequestParam(name="h",defaultValue="33")Integer height,//验证码图片高度@RequestParam(name="method",defaultValue="admin_login")String method,//以此名称为键,存储到session中HttpServletRequest request,HttpServletResponse response){CpachaUtil cpachaUtil=new CpachaUtil(vcodeLength,fontSize,width,height);		String generatorVCode = cpachaUtil.generatorVCode();//将生成的验证码放入session,后面验证验证码是否正确时使用request.getSession().setAttribute(method, generatorVCode);log.info("成功生成验证码,method="+method+",value="+generatorVCode);try {ImageIO.write(cpachaUtil.generatorRotateVCodeImage(generatorVCode, true), "gif", response.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}

需要注意的是

  • request.getSession().setAttribute方法设置的属性值仅在当前会话中有效。当客户端发起新的请求时,之前设置的属性值将不再可用。如果需要在多个请求之间保持属性值,可以考虑使用其他方法,例如将属性值存储在数据库或服务器端内存中。
http://www.lryc.cn/news/179860.html

相关文章:

  • 基于Qt Creator开发的坦克大战小游戏
  • 小说推文和短剧推广以及电影达人带货电影票
  • 朴素贝叶斯分类(下):数据挖掘十大算法之一
  • 9.30作业
  • [GWCTF 2019]枯燥的抽奖
  • vue3中sync修饰符的使用
  • Qt全屏显示与退出
  • OpenCV之直线曲线拟合
  • 2023年哪款PDF虚拟打印机好用?
  • Redis各数据类型特定的命令和用法 1.0版本
  • 卫星图像应用 - 洪水检测 使用DALI进行数据预处理
  • 为什么字节大量用GO而不是Java?
  • Hive SQL初级练习(30题)
  • NSSCTF做题(6)
  • 公众号商城小程序的作用是什么
  • 关于 FOCA
  • TVP专家谈腾讯云 Cloud Studio:开启云端开发新篇章
  • 2023-09-27 Cmake 编译 OpenCV+Contrib 源码通用设置
  • ACGAN
  • 模块化CSS
  • 意大利储能公司【Energy Dome】完成1500万欧元融资
  • 【Java 进阶篇】JDBC Connection详解:连接到数据库的关键
  • vue-cli项目打包体积太大,服务器网速也拉胯(100kb/s),客户打开网站需要等十几秒!!! 尝试cdn优化方案
  • 【优秀学员统计】python实现-附ChatGPT解析
  • 餐饮外卖配送小程序商城的作用是什么?
  • 【QT】使用toBase64方法将.txt文件的明文变为非明文(类似加密)
  • 《QDebug 2023年9月》
  • C++使用高斯模糊处理图像
  • 多维时序 | MATLAB实现PSO-BP多变量时间序列预测(粒子群优化BP神经网络)
  • LeetCode 283. 移动零