cookie与session

内容:
    1.jsp简单介绍
    2.客户端会话技术--cookie
    3.服务器端会话技术部---session
    ===========================================
    复习:
        response:可以处理所有的http响应信息.
        常用API:
            setStatus(int code);
            setHeader()
            setDataHeader();
            setIntHeader();
            ServletOutputStream getOutputStream();
            PrintWriter getWriter();
            
            重定向  sendRedirect(String location); 注意:它是浏览器在一次发送请求,这时的路径要写"/工程名/资源名称"
            
            response.setContentType("text/html;charset=utf-8");
            
        request:可以处理所有的http请求信息.
            1请求方式
                getMethod();
                
            2.获取路径
                getRequestURI();
                getRequestURL();
                getProtocol();
                
                getRemoteAddr();获取客户机ip地址
                getContextPath();获取虚拟目录名称
                
            3.获取请求头
                getHeader();
                getHeaders();
                getHeaderNames();
                getDataHeader();
                getIntHeader();
            4.获取请求参数
                public String getParameter(String name)
                    获取请求参数中指定名称的值.
                public String[] getParameterValues(String name);
                    
                public Enumeration getParameterNames();
                
                public Map<String,String[]> getParametrMap();
                
            5.关于获取的数据校验
                1.非空校验
                2.规则校验
                
            6.关于乱码问题:
                主要原因:请求数据的编码与服务器解码使了不同的编码表。
                
                new String(msg.getBytes("iso8859-1"),"utf-8");
                
                关于post请求方式可以直接:setCharacterEncoding();
            
            7.request域    
                    
                    请求转发:
                    
                    getParameter() 从请求信息中获取指定名称的值
                    
                    getAttribute();它一般是在请求转发中使用,它是从request域中获取信息。
                    
    ===================================================================================
    1.jsp
        jsp是什么?它有什么作用?
            jsp  java server page 这是用于展示信息操作。
            
        为了解决servlet展示信息的不方便,引入jsp。
            
        jsp本质上也是一个servlet(******************)
        
        jsp就是在html页面中嵌入了java代码.
        
        
        jsp原理:查看图
        
        --------------------------
        怎样在jsp中书写java代码:
            
            <%!  %> 它用于定义成员  可以声明成员属性,成员方法,内部类
            <%   %> 它用于定义局部  声明的变量在局部位置  _jspservice方法中。
            <%=  %> 它用于输出  out.print(内容);
        
    ========================================================
    2.会话技术
        什么是会话?它可以解决什么问题?
            会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
            
            会话技术解决了http协议无状态。
            简单说:使用会话技术,可以保存我们用户在一次会话过程中,所产生数据。
                
        java中的会话技术分成两种;
            浏览器端会话技术:cookie
            服务器端会话技术:session.
            
    ---------------------------------------------
    3.cookie会话技术
        
        Cookie类
            1.构造方法
                new Cookie(String name,String value);
                要想将cookie信息携带到浏览器端,需要使用response.addCookie(Cookie c);
                
            2.要想在服务器端获取所有的cookie
                Cookie[] cs=request.getCookies();
                
                Cookie类中提供方法
                
                    getName(); 获取cookie名称                    
                    getValue(); 获取cookie值
            
        示例:显示用户上一次访问时间
        ================================================
        常用API:
            new Cookie(String name,String value)
            
            getName()获取名称
            getValue(); 获取值
            
            setMaxAge();Cookie创建时默认是会话级别,它是存储在浏览器内存中,如果关闭浏览器,这时cookie就被删除。
                        使用这个方法,可以让cookie变成持久化,也就是说,可以保存在硬盘上的。
            
            setPath();  setPath("/");
                用于设置cookie在访问什么样的资源时会携带,简单就是设置cookie的路径 。
                
            删除cookie:
                setMaxAge(0); 立即删除cookie
                setMaxAge(-1);关闭浏览器后删除。
                
                注意事项:path一定要一致.
                
        =====================================================
        示例:显示上次访问商品记录
        
    =========================================================================
    复习:
        cookie是客户端的一种会话技术。
        会话:打开浏览器,进行一系列操作,一至到关闭浏览器这个过程叫会话技术。
        
        问题:关于cookie中携带中文。我们可以将中文的utf-8码存储到cookie中。
        示例:记住用户名.
        
            将汉字的码值存储到cookie中,在页面上通过javascript或通过jsp进行转码显示。
            
    --------------------------------------------------------------------------------------------
    Session:
        服务器端的会话技术
        
        问题1:session怎样获取,怎样使用?
        
            session的类型是HttpSession.
            
            要想获取一个session可以通过 request.getSession()方法获取到.
            
            session是一个域对象。
                setAttribute()
                getAttribute();
                removeAttribute();
        
        问题2:session怎样保证一个浏览器有一个专属的session.
                
            通过将session的id值存储到cookie中,每一次请求时,都将会id 值传递到
            服务器端,服务器端通过request.gtSession()时会判断是否存在这样id值的
            session对象,如果存在,会直接获取,如果不存在,会重新创建。
            
    ============================================================
    示例:使用session实现购物车.
        
        
    ----------------------------------------------------------
    关于禁用cookie后,session失效问题:
        因为session它是使用cookie来保存jsesionid值,如果禁用了cookie,session使用不了。
        
        解决方案:
            我们人为将jsessionid的值添加到请求中。就可以。
            http://localhost:8080/day9_2/demo2;jsessionid=E4303E9F23E0EB23EEB13B318E9F1C2A
            
            手动完成这个事不合适:可以通过url重写完成。
            
            
            使用以下两个操作就可以完成url重写:
                response. encodeRedirectURL(java.lang.String?url)
                用于对sendRedirect方法后的url地址进行重写。
                response. encodeURL(java.lang.String?url)
                用于对表单action和超链接的url地址进行重写
                
                注意:以上操作,如果检测到浏览器禁用了cookie,会在路径上添加jsessionid值。
                否则不会添加。
                
    ==================================================================
    session失效问题:
        
        1.服务器停止  session一定没了。
        2.session有默认销毁时间.
                tomcat服务器的conf/web.xml文件中配置了session默认销毁时间
                <session-config>
                    <session-timeout>30</session-timeout>
                </session-config>
                
        3.HttpSession类中提供一个方法.
            invalidate()用于销毁当前的session。例如:注销操作就是使用它完成的。
                
        
        4.可以通过HttpSession来设置session过期时间。
            public void setMaxInactiveInterval(int interval)
            可以用于设置session过期时间.参数代表秒值。
            
    ===================================================================        
    当我们关闭浏览器后,session就会销毁。
        session的销毁与关闭浏览器无关,而关闭浏览器后,不能使用session是因为  cookie是会话级别的问题。
        
    ==========================
    示例:一次性验证码
        
        在ImageCodeServlet类,它就是一个验证码。图片上显示的信息都是我们人为设定的。
        那么当图片产生时,我们可以将验证中的信息保存到session中。
        
        在注册(登录窗口)操作中,向servlet提交请求时,
            request.getParameter()  获取输入的验证
            request.getSession().getAttribute();去获取生成的验证码。
            
            request.getSession().removeAttribute();获取完成后,马上移除。
            
    =====================================
    关于Servlet中的三个域对象。
        
        1.ServletContext  作用域:整个web应用
        2.HttpSession     作用域:一次会话
        3.HttpServletRequest 作用域:在重定向时产生的请求链中。
        
        对于域对象常用操作
            Object getAttribute(String name);
            void setAttribute(String name,Object obj);
            removeAttribute(String name);
            
        这三个域对象我们怎样使用?
            能用request域解决的全都用它。
            
    ================================================
    作业:
        完成一个注册登录操作.    
        
        
    =======================================

    RequestDispatcher
        forward()请求转发现。
        include() 包含。
        
        include是用于执行包含操作,它一般用于设定框架。
        注意:被包含的信息,一般情况下,只需要保留基本信息.
        
           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值