Servlet背诵

六、请求对象和响应对象生命周期
    【请求对象】和【响应对象】生命周期贯穿一次请求的处理过程中
八、Http状态码
    Http服务器针对本次请求,返回对应的资源文件,通过Http状态码通知浏览器如何处理结果
    100;返回的资源文件不是个独立的文件
    200;返回的资源文件是个完整独立的资源文件
    302;返回的资源文件内容是一个资源文件地址,request.sendRedirect("资源文件地址")
    404;没有定位到被访问的资源文件
    405;定位到被访问的资源文件,但是对于浏览器采用的请求方式不能处理
    500;资源文件(Servlet)在处理请求期间,由于Java异常处理失败
十、重定向解决方案
    用户第一次通过【手动方式】通知浏览器访问oneServlet,oneServlet工作完毕后将TwoServlet
    的地址写入到响应头中的【location属性】,导致Tomcat向状态行中写入302,浏览器读取到302会向
    服务器再次发起请求,访问twoServlet去完成请求中剩余任务
    缺点:需要在服务端和客户端之间进行大量往返,增加用户等待时间
十一、请求转发解决方案
    用户第一次通过【手动方式】要求浏览器访问oneServlet,oneServlet工作完毕后,通过当前的
    请求对象代替浏览器向Tomcat发送请求,申请调用twoServlet,Tomcat收到请求后,完成剩余任务
十二、多个Servlet之间数据共享实现方案
    1、ServletContext接口
    2、Cookie类
    3、HttpSession接口
    4、HttpServletRequest接口
十三、ServletContext接口
    1、介绍--【全局作用域对象】
    2、生命周期
        全局作用域对象生命周期贯穿网站整个运行期间
    3、命令实现
        键值对方式
        ServletContext apption=request.getServletContext();
        --apption.setAttribute("key1",value);
        --String value=apption.getServletAttribute("key1");
    4、工作原理
        每一个网站都有一个全局作用域对象,相当于一个map,在oneServlet中可以将一个数据存入到全局作用域对象,
        当前网站中的其他Servlet可从全局作用域对象中读取到这个数据
十四、Cookie
    1、原理
        用户通过浏览器第一次向网站【myWeb】发送请求时,oneServlet运行时可以将用户相关的数据写入到Cookie中,oneServlet
        工作结束后,【将Cookie写入到响应头中】交还给浏览器,当用户通过【同一个浏览器】再次向【相同网站】下的
        twoServlet发送请求时,【浏览器需要无条件的将Cookie写入到请求头】发送过去,twoServlet运行期间,就
        可以调用Cookie中的参数
    2、命令实现
        oneServlet
            Cookie card1=new Cookie("key1",value);
            Cookie card2=new Cookie("key2",value);
            reponse.addCookie(card1);
            reponse.addCookie(card2);
        twoServlet
            Cookie cookieArray[]=request.getCookies();
            for(Cookie card:cookieArray[]){
                String key=card.getName();
                String value=card.getValue();
            }
    3、销毁时机
        1)默认情况下Cookie存放在浏览器缓存中,关闭浏览器Cookie消失
        2)手动配置下Cookie可以存放在客户端硬盘上,指定Cookie在硬盘上的存活时间
        cookie.setMaxage(60秒);
十五、HttpSession接口
    1、介绍--【会话作用域对象】
    2、HttpSession和Cookie的区别
        1)存储位置
            HttpSession -- 存放在服务端内存
            Cookie        -- 存放在浏览器缓存/客户端硬盘
        2)数据类型
            HttpSession -- Object
            Cookie        -- String
        3)数据数量
            HttpSession -- 相当于map集合,可以存放任意数量
            Cookie        -- 一个Cookie对象,只能存在一个value
        4)参照物
            HttpSession -- 私人保险柜
            Cookie      -- 会员卡
    3、命令实现
        oneServlet
            HttpSession session =request.getSession();
            session.setAttribute("key1",value);
        twoServlet
            HttpSession session =requset.getSession();
            Object value=session.getAttribute("key");
    4、HttpSession与用户关联
        每创建一个HttpSession会又一个对应的ID值,存放在Cookie中。
    5、getSession()与getSession(false)
        1)getSession():
            如果当前用户在服务端有私人储物柜,要求tomcat将储物柜返回,
            如果当前用户在服务端没有私人储物柜,tomcat为当前用户生成一个私人储物柜
        2)getSession(false):
            要求tomcat将储物柜返回,如果没有储物柜,tomcat返回null。
    6、HttpSession销毁时机
        1)由于用户与HttpSession关联时,需要使用Cookie,而Cookie存放在浏览器缓存中,
        浏览器关闭时,用户与HttpSession关系被切断,但是服务器不知道浏览器已经关闭,所以tomcat为
        每一个HttpSession设置了一个默认的30分钟空间时间,空闲时间达到后,tomcat会对对应的HttpSession
        进行销毁
        2)手动配置:web.xml
            <session.config>
                <session-timeout>5</session-timeout>
            </session.config>

十六、HttpServletRequest接口实现数据共享
    1、介绍 -- 【请求作用域对象】
        在同一个网站中,当两个Servlet之间通过【请求转发】方式进行调用时,因为使用同一个
        请求协议包,而一个请求协议包对应只对应同一个【请求对象】,因此可以利用这一个
        请求对象实现数据共享
    2、命令实现
        oneServlet
            requset.setAttribute("key1",value);
            request.getRequestDispatcher("/two").forword(request,response);
        twoServlet
            Object value=requesr.getAttrubute("key2");

十七、监听器接口
    1、介绍
        监控【作用域对象生命周期变化时刻】以及【作用域对象共享数据变化时刻】
    2、作用域对象
        1)为两个Servlet之间提供数据共享方案的对象--【作用域对象】
        2)Servlet规范下作用域对象:
            ServletContext :全局作用域对象
            HttpSession :会话作用域对象
            HttpServletRequest :请求作用域对象
    3、开发步骤
        1)选择监听器接口进行
        2)重写【监听事件处理方法】
        3)在web.xml文件将监听器实现类注册到Http服务器
            <listener>
            <listener-class>com.bjpowernode.listener.oneListener</listener-class>
            </listener>
    
    4、ServletContextListener接口
        1)检测全局作用域对象被初始化时刻以及被销毁时刻
        2)监听事件处理方法
            public void contextInitlized(); 在全局作用域对象被Http服务器初始化时调用
            public void contextDestory(); 在全局作用域对象被Http服务器销毁时候触发调用
    
    5、ServletContextAttributeListener接口
        1)作用:通过这个接口合法的检测全局作用域对象共享数据变化时刻
        2)监听事件处理方法
            public void contextAdd(); 在全局作用域对象添加共享数据
            public void contextRemove(); 在全局作用域对象删除共享数据
            public void contextReplaced(); 在全局作用域对象更新共享数据

十八、Servlet规范扩展---Filter接口(过滤器接口)
    1、介绍 -- Filter接口在Http服务器调用资源文件之前,对Http服务器进行拦截
    2、作用
        1)拦截服务器,帮助Http服务器检测当前请求合法性
        2)拦截服务器,对当前请求进行增强惭怍
    3、步骤
        1)实现Filter接口
        2)重写Filter接口中doFilter方法
        3)web.xml将过滤器接口实现类注册到Http服务器
    4、Filter拦截地址格式
        1)命令格式:
            <filter>
            <filter-name>oneFilter</filter-name>
            <filter-class>com.bjpowernode.filter.OneFilter</filter-class>
            </filter>
            <filter-mapping>
                <filter-name>oneFilter</filter-name>
                <url-pattern>拦截地址</url-pattern>
            <filter-mapping>
        2)具体文件 
            /img/mm.jpg
        3)某个文件夹下所有的资源文件
            /img/*
        4)某种类型的文件
            *.jpg
        5)网站中任意文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值