目录 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
方法设置的属性值仅在当前会话中有效。当客户端发起新的请求时,之前设置的属性值将不再可用。如果需要在多个请求之间保持属性值,可以考虑使用其他方法,例如将属性值存储在数据库或服务器端内存中。