欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

笔记-JavaWeb学习之旅12

程序员文章站 2022-03-20 08:13:35
会话技术 Cookie:客户端会话技术,将数据保存到客户端 会话技术原理分析 JSP 概念:Java Server Pages : java服务器端页面,可以理解为一个特殊的页面,其中既可以定义Html标签,又可以定义java代码 JSP的脚本:JSP定义代码的方式 1.<% 代码 % : 定义的代 ......
会话技术

cookie:客户端会话技术,将数据保存到客户端

package com.data.cookie;

import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.cookie;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.ioexception;


@webservlet("/cookiedemo1")
public class cookiedemo1 extends httpservlet {
    protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        this.doget(request,response);
    }

    protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        //创建cookie对象
        cookie cookie = new cookie("msg","hello");
        //发送cookie
        response.addcookie(cookie);
        //当访问cookiedemo1的servlet的时候,会创建一个cookie对象
        //然后把绑定的数据发送给浏览器
    }
}
package com.data.cookie;

import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.cookie;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import java.io.ioexception;


@webservlet("/cookiedemo2")
public class cookiedemo2 extends httpservlet {
    protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        this.doget(request,response);
    }

    protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {
        //获取cookie
        cookie[] cs = request.getcookies();
        if( cs != null){
            //遍历cs,拿到每一个cookie对象
            for(cookie c : cs){
                string name = c.getname();
                string value = c.getvalue();
                system.out.println(name+":"+value);
            }
        }

    }
}
输出结果
msg:hello
idea-a0bb733:23efa255-9ce7-42d9-8d0b-9853348226b8

会话技术原理分析

笔记-JavaWeb学习之旅12

笔记-JavaWeb学习之旅12

jsp

概念:java server pages : java服务器端页面,可以理解为一个特殊的页面,其中既可以定义html标签,又可以定义java代码

jsp的脚本:jsp定义代码的方式

1.<% 代码 %>: 定义的代码,在service方法中。

2.<%! 代码 %>:定义的java代码,在jsp转换后的java类的成员文字

3.<%+ 代码 %>:定义的java代码,会输出到页面上

会话技术_session

概念:在服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。httpsession

package com.data.session;


import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.*;
import java.io.ioexception;
@webservlet("/sessiondemo1")
public class sessiondemo1 extends httpservlet {
    @override
    protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {
        //获取httpsession对象
        httpsession session = req.getsession();
        //当客户端关闭后,服务器不关闭,两次获取的session不是同一个对象
        //如果需要相同,可以创建cookie对象,设置id值,因为session的实现依赖于cookie,只要id值不变就是同一个对象
        cookie cookie = new cookie("jsessionid",session.getid());//jsessionid=226e48b3ad9f203b2bcbfca2e6ea5d71
        cookie.setmaxage(60*60);//一个小时内关闭客户端都是同一个对象,因为他们的id值相同
        resp.addcookie(cookie);
        //在服务器端存储数据
        session.setattribute("msg","hello,session");
    }

    @override
    protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {
        this.doget(req,resp);
    }
}
package com.data.session;


import javax.servlet.servletexception;
import javax.servlet.annotation.webservlet;
import javax.servlet.http.httpservlet;
import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;
import javax.servlet.http.httpsession;
import java.io.ioexception;
@webservlet("/sessiondemo2")
public class sessiondemo2 extends httpservlet {
    @override
    protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {
       //创建对象
        httpsession session = req.getsession();
        //通过键获取值
        object msg = session.getattribute("msg");
        system.out.println(msg);
    }

    @override
    protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {
        this.doget(req,resp);
    }
}

session原理:session的实现依赖于cookie的,服务在一次会话范围内,多次获取的session对象是同一个。

session细节

客户端关闭后,服务器不关闭,两次获取session不是同一个对象,如需相同,可以创建cookie,设置属性。

客户端不关闭,服务器关闭后,两次获取的session不是同一个对象,

session在服务器被关闭时销毁,在调用invalidata()时也会销毁,默认失效时间是30分钟

session特点

session用于存储异常会话的多次请求数据,存在服务器端,session可以存储任意类型,任意大小的数据

session与cookie的区别:

session存储数据在服务器端,cookie在客户端

session没有数据大小限制,cookie有

session数据安全,cookie相对于不安全

验证码案列 写了4个小时 ,得到的结果500错误,尚没有找到bug,明天再看吧,