web学习04

会话技术

httpsession

保存在服务器端 并且为每一个用户创建一个session

浏览器关闭 会话结束


session的实现原理

1.session的实现依赖了cookie实现

2.用户第一次访问网页时 系统会为这个用户创建一个独立的session出来

并且为session分配一个id号

3.当请求完成响应回浏览器时 系统会创建一个cookie出来

cookie中保存session的id

4.浏览器接到响应 把响应中的cookie储存到浏览器中(等于储存session的id)

5.当用户再次访问网页时 请求中会带着cookie(id)

6.网页接到请求后 会去除cookie中的id去找对应的session

如果找到就直接使用 未找到就创建一个新的出来

 

把用户名储存在session域中:

                String username = request.getParameter("username");
		HttpSession session = request.getSession();
		session.setAttribute("username", username);

获取session中保存的用户名:

                HttpSession session = request.getSession();
		String username= (String )session.getAttribute("username");

servlet就干三件事

1.接收请求中的参数

2.处理业务逻辑

3.请求分发(跳转新的页面)

 

httpsession 域对象 

作用范围 一次会话中都有效

(会话结束 session失效)

默认有效时间 30分钟(tomcat 中conf文件夹下web-xml中配置的  session-confic)


session的钝化和活化

钝化:将session写入到文件中

活化:将写到文件中的session读回session对象中

服务器突然停止 这时session中的信息不会消失

会写入到文件中work/catalina/localhost/工程下/session.ser文件

当服务器再次启动 系统会从这个文件夹下把session读回来

通过钝化和活化 保证 session中数据安全

活化后 之前保存到额文件读取消失

注意:保存在session 对象要实现序列化接口


session设置有效时间

设置0或负数 这时session将永不过期

session.setMaxInactiveInterval(60*30);

让session失效的方法(注销用户信息)

session.invalidate();


人类与计算机的图灵测试(验证码)

方式1

                int width=100;
		int height=25;
		//创建画布 
		BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//从画布中获取画笔
		Graphics g=image.getGraphics();
		//设置背景颜色
		g.setColor(Color.white);
		//填充背景颜色(留出边框)
		g.fillRect(1, 1, width-2, height-2);
		//设置边框颜色
		g.setColor(Color.red);
		g.drawRect(0, 0, width-1, height-1);
		//设置字体颜色 类型大小
		g.setColor(Color.blue);
		g.setFont(new Font("宋体", Font.BOLD, 20));
		//随机4个数字  画到画布上
		Random random=new Random();
		//随机0-9  [0,9)
		//random.nextInt(10);
		//声明x坐标
		int positionX=20;
		for (int i = 0; i < 4; i++) {
			//画到画布上
			//x y 是距离画布的坐标
			g.drawString(random.nextInt(10)+"", positionX, 20);
			positionX=positionX+20;
		}
		//画干扰线
		for (int i = 0; i < 8; i++) {
			g.drawLine(random.nextInt(width), random.nextInt(height),
					random.nextInt(width), random.nextInt(height));
			
		}
	    //响应回页面
       ImageIO.write(image, "jpg", response.getOutputStream());

方式2

参数1:宽 参数2:高 参数3:验证码个数 参数4:干扰线个数

                //创建validatecode
		ValidateCode validateCode=new ValidateCode(100, 25, 4, 9);
		//获取随机出来的验证码
		String code = validateCode.getCode();
		//将验证码写会网页
		validateCode.write(response.getOutputStream());


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值