Servlet

本文详细介绍了Servlet的概念、作用及生命周期,解释了其实现方式,并探讨了线程安全问题。

Servlet:

           一、定义: 运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。

          、作用:通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

            、执行过程:

        

                       重点:这个斜杠/等价于:http://localhost:8080/工程名/          到这个位置的Url。

       四、生命周期:

                 实例化-->初始化-->服务->销毁:对应的方法

                   1@、实例化:第一访问

                public ServletDemo1() {
System.out.println("实列化");

                    2@、初始化:客户端第一次访问时调用,该方法。只会执行一次。

                    @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("-----------------初始化方法---------------");
config = arg0;

}

                    3@、客户端每一次访问都会执行一起该方法。

                    @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("------------服务:-------------"+"这个Servlet的名字:"+config.getServletName()+"获得配置信息"+config.getInitParameter("encoding"));

}

                4@、在服务器中卸载工程。或者正常的关闭服务器。刚方法就运行。

                @Override
public void destroy() {
System.out.println("-----------销毁方法-----------");


}

        注意:创建时间以及初始化方法。可以改变。需要在xml中配置:

                   改变:配置后随着服务器的启动而实例化和初始化。

                     <servlet>
  <servlet-name>ServletDemo1</servlet-name>
  <servlet-class>com.ServletDemo.ServletDemo1</servlet-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>GBK</param-value>
  </init-param>

  <load-on-startup>2</load-on-startup>

    <!-- 这个Servlet随着服务器的启动而实例化,初始化。2表示创建的优先级,自然数就行 -->

  </servlet>     

            五、三种实例化方式

                1、实现javax.servlet.Servlet接口(第一个案例就是。)

            

                2、继承javax.servet.GenericServlet类(适配器模式)

                适配器设计模式:(当我们想要使用,某个接口中的特定的方法,而该接口中有很多的方法,我们就设计一个间类来实现这个接口,而我们只需要继承这个类就行。这样我们就不需要去实现所有的方法。就能调用我们真正想要实现的方法。通常这个中间类叫做转换器,转接头。)  

            抽象类GenericServlet实现了Servlet, ServletConfig,这两个接口。

                重要方法:

                            getInitParameter("");

                            getServletContext()

                             getServletConfig()

                            只有一个抽象方法service()。

                            并没有重写service()方法,而是接着抽象。

           和抽象方法: public abstract void service(ServletRequest req,ServletResponse res)
            3、继承javax.servlet.http.HttpServlet类(模板方法设计模式)
                重点:这是我们开发中常用的。
                httpServlet是一个抽象类继承了GenericServlet,一个没有抽象方法的抽象类。
                
                    重要方法:

                                          doGet();

                                           doPost();  

                                          两个Service()方法:

            

                    public void service(ServletRequest req, ServletResponse res) 

                            public void service(HttpServlet request,HttpResponse response)

                 服务器访问,到Servlet的响应过程:

                            服务器扫描Xml找到HttpServlet的实现类,创建实例:

                                        javax .servlet.Servlet servlet = new HttpServlet();

                                        实例化,初始化等待被客户端访问。

                                        客户端访问:

                                                   1、 调用ServIce()方法:这个service是从父类继承下来的方法{

                                                                                            由多肽的知识就知道,这儿调用的只能是

                                                                                            从父类继承下来的service。

                                                                                }

                                                   2、执行自己的Service方法。

                                                   3、根据请求的方式,调用相应的方法:我们常用的DoGet(),DoPost()。

                                               注意:这儿通过Service我们已经得到最重要的两个对 象:    HttpRequest,HttpResponse。

         六、映射问题

                        1.一个Servlet可以在Xml中配置多个,ServletMapping。

                         2.两种固定格式:

                                    通配符*,例如*.do

                                    (/)正斜杠:

                          3、优先级问题:

                                       绝对匹配-->  /开头匹配 --> 扩展名方式匹配

       七、线程安全问题

                              避免使用全局变量。


                        

        

                                                                       

    


                                          


                


          

                            

            

                          


    

    

            


            

    
本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值