目录
- 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;
@Controller
@RequestMapping("/cpacha")
public class CpachaController {private org.slf4j.Logger log=LoggerFactory.getLogger(CpachaController.class);@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,HttpServletRequest request,HttpServletResponse response){CpachaUtil cpachaUtil=new CpachaUtil(vcodeLength,fontSize,width,height); String generatorVCode = cpachaUtil.generatorVCode();request.getSession().setAttribute(method, generatorVCode);log.info("成功生成验证码,method="+method+",value="+generatorVCode);try {ImageIO.write(cpachaUtil.generatorRotateVCodeImage(generatorVCode, true), "gif", response.getOutputStream());} catch (IOException e) {e.printStackTrace();}}
}
需要注意的是
request.getSession().setAttribute
方法设置的属性值仅在当前会话中有效。当客户端发起新的请求时,之前设置的属性值将不再可用。如果需要在多个请求之间保持属性值,可以考虑使用其他方法,例如将属性值存储在数据库或服务器端内存中。