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

会话技术CooKie JSP session

程序员文章站 2024-03-20 12:59:34
...

会话技术: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相对于不安全