黑马程序员技术交流社区

标题: 【石家庄校区】Servlet [打印本页]

作者: 奔跑的蜗牛006    时间: 2018-5-21 15:15
标题: 【石家庄校区】Servlet
本帖最后由 奔跑的蜗牛006 于 2018-5-21 15:16 编辑

Servlet
Servlet的实现关系:
        编写类继承 HttpServlet 继承 GenericServlet 实现 Servlet(接口);
        请求方式为GET: doget();
                         post: dopost();dopost方法里再调用一次doget(req,res);
web导包:
        WEB-INF--->lib;不用BulidPath;
▲▲
Servlet的生命周期:(面试)
        Servelt对象有且只创建一次;单例
        init        :第一次访问时,服务器会创建Servlet对象,init方法执行仅一次;
        service        :每次刷新页面都会执行;
        destroy        :当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.


        用户第一次访问Servlet的时候,服务器会创建一个Servlet的实例,那么Servlet中init方法就会执行.
        任何一次请求服务器都会创建一个新的线程访问Servlet中的service的方法.
        在service方法内部根据请求的方式的不同调用doXXX的方法.(get请求调用doGet,post请求调用doPost).
        当Servlet中服务器中移除掉,或者关闭服务器,Servlet的实例就会被销毁,那么destroy方法就会执行.


Servlet的相关配置:
        启动时创建Servlet:
        
▲▲
优化配置:
        有一些资源需要初始化很耗时;
        第一次访问的时候初始化资源(耗时)以后访问都无需再初始化,
        把这个耗时的操作放到服务器启动的时候;

        在web.xml中在<servlet></servlet>标签中配置:
         <load-on-startup>2</load-on-startup>
▲▲
url-pattern的配置方式:
        1.完全路径匹配        : 以/开始
        2.目录匹配                : 以/开始,以*结束;http://port/projectName/asda/adsa
        3.扩展名匹配        : 不能以 / 开始,以*开始的;*.do
                                                错误的写法: / *.do
        完全路径匹配 > 目录匹配 > 扩展名匹配
相对路径:
        需要明确双方的位置
绝对路径:
        从根路径出发,一般带上工程名./day09/Demo1;http://localhost:8080 协议可以省略

▲▲ServletContext:
        服务器启动时创建
        范围:整个web项目
        域对象

ServletContext作为域对象存储数据:ServletContext在不同的类之间进行数据的共享;
        setAttribute(String key,Object value)
        Object        getAttribute(String key)
                        removeAttribute(String key)







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2