会话技术CooKie JSP session

本文探讨了会话技术,包括Cookie和JSP Session。Cookie是客户端会话技术,用于在一次会话中存储数据,但受大小和数量限制。在Tomcat8后支持中文存储。Session是服务器端会话技术,用于在多次请求间共享数据,存储在服务器端,具有安全性且无大小限制。同时,文章还介绍了Cookie和Session的工作原理、配置以及它们之间的区别。
摘要由CSDN通过智能技术生成

会话技术:1.会话:一次会话中包含多次请求和响应。浏览器第一次给服务器发送请求,会话建立,直到有一方断开连接

2:功能在一次会话的范围内多次请求间,共享数据

3方式1客户端会话技术:cookie2服务器端会话技术Session

##cookie会话技术,将数据保存在客户端 1 创建cookie对象,绑定数据 new cookie (String name,String value) 2发送cookie对象 response.addCookie(Cookie cookie) 3获取cookie,拿到数据 *cookie 【】 getCookies 特别注意:仅在一次会话中可用,如果客户端或者浏览器关闭,就无法在获取到cookie的值

cookie 原理:基于第一次响应的响应头发送到客户端,再由客户端的请求头发送到服务器

cookie的细节:1 一次可否发送多个cookie 可以

2持久化存储:setMaxAge(int seconds) 1正数:将cookie数据写到硬盘的文件中。持久化存储,并制定cookie的存活时间,时间到后cookie自动消亡 2负数:默认值 即浏览器关闭,cookie消亡 3零:删除cookie信息

3cookie中能不能存储中文 在tomcat8之前 cookie中不能直接使用中文数据,需要将中文数据转码 在tomcat8之后,cookie支持中文数据 但是特殊字符如空格等依旧是不能存储

4cookie中的共享问题? 1.假设在一个tomcat服务器中,部署了多个web项目,那么这些web项目中cookie能不能共享?默认情况下不能共享 setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录,如果要共享的话可将path设置为“/” 2不同tomcat服务器的cookie共享问题 setDomain(String path):如果设置的一级域名相同,那么多个服务器之间cookie可以共享 如setDomain(“.baidu.com”),那么tieba.baidu.com和news.baidu.com中的cookie就可以共享

5cookie的特点和作用

cookie存储数据在客户端浏览器 2浏览器对于单个cookie的大小有限制4kb,以及对同一个域名下总cookie数有限制 作用:cookie一般用于存储少量不太敏感的数据 在不登录的情况下,完成服务器对客户端的身份识别 (给存储在客户端的cookie设置一个时限,下次就知道原先的设置了)

案例: 第一次访问servlet提示第一次访问,第二次访问提示欢迎回来,您的上次访问时间为***

Cookie[] cookies = request.getCookies();
    response.setContentType("text/html;charset=utf-8");
    boolean flag=false;
    if (cookies!=null&&cookies.length!=0){
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            if (name.equals("lastTime")){
                String value = cookie.getValue();
                Date date=new Date();
                SimpleDateFormat  sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
                String str_value = sdf.format(date);
                cookie.setValue(str_value);
                flag=true;
                cookie.setMaxAge(60*60);
                response.addCookie(cookie);
                response.getWriter().write("<h1>欢迎回来,您上次访问时间为:</h1>"+value);
                break;
            }
        }
​
    }
    if (cookies==null||cookies.length==0||flag==false){
        Date date=new Date();
        SimpleDateFormat  sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
        String str_value = sdf.format(date);
        Cookie cookie = new Cookie("lastTime", str_value);
        flag=true;
        cookie.setMaxAge(60*60);
        response.addCookie(cookie);
        response.getWriter().write("<h1>欢迎您首次访问</h1>");
    }
}

jsp: 概念 java Server Page:java服务器端页面 可以理解为:一个特殊的页面,里面既可以定义html标签,又可以定义java代码 用于简化书写

2原理 :jsp的本质是是一个Servlet

3Jsp脚本:jsp定义java代码的方式:<%%>:定义java代码,在service方法中,可以定义什么,该脚本就可以定义什么<%!%> 定义java代码,在jsp转换后的java类的成员位置<%=%> 定义的Java代码,会输出到页面上,输出语句可以定义什么,该脚本中就可以定义什么 注意:同一个变量在成员位置定义,在service里也定义,就近原则先执行service中的变量

4jsp内置对象:在jsp中直接可以使用的的对象:9个内置对象request response out :(字符输出流)将数据输出到页面上 和response。getwrite()类似 但是无论response写在何处都会优先于out输出(tomcat服务器会优先寻找response对象进行输出)

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

快速入门:1获取session对象:httpSession session =request.getSession();2使用httpSession对象:Object getAttribute(String name ) void setAttribute (String name ,Object value) void removeAttribute(String name) 注意: 一次会话

session 原理 session的实现依赖于cookie

4细节:当客户端关闭后,服务器不关闭,两次获取的session是否为同一个 ?默认情况下不是 可以通过COOKIE发送JSESSIONID来传送远来的cookie

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession();
    System.out.println(session);
    Cookie cookie = new Cookie("JSESSIONID",session.getId());
    cookie.setMaxAge(60*60);
    response.addCookie(cookie);
    System.out.println(session);

当客户端不关闭,服务器关闭后,两次获取的session是同一个吗?不是同一个,但是要确保数据不丢失*session的钝化 *session的活化

session的失效时间 ? 什么时候被销毁,1服务器关闭 2默认失效时间30分钟 修改tomcat - conf-webxml中的配置 选择性配置修改<session-config><session-timeout>30<session-timeout> 即可调整为想要的时间3session对象调用invalidate()方法自杀

session的特点:1session用于存储一次会话的多次请求的数据,存储在服务器端2session可以存储任意类型,任意大小的数据

session与cookie的区别 session在服务器端,cookie在客户端2session没有大小限制,cookie有3session数据安全,cookie相对于不安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值