Servlet初识

1、什么是Servlet
  • Servlet是JavaWeb的三大组件之一(Servlet,Listener,Filter),它的工作就是:接受客户端的请求数据;完成请求;返回响应。
  • Servlet是和平台无关的服务器端组件,它运行在Servlet容器中(如:Tomcat Servlet容器负责Servlet和客户的通信以及调用Servlet的方法)
  • 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
2、如何编写一个Servelt

有三种方法:
         * 实现javax.servlet.Servlet接口 继承
         * javax.servlet.GenerlcServlet类继承
         * javax.servlet.http.HttpServlet类 (通常使用的方法)
Servlet中的方法大多数不由我们来调用,而是由Tomcat调用。并且Servlet的对象也不是由我们来创建,由Tomcat创建。

3、如何让浏览器能够访问Servlet?

                需要给Servlet指定一个Servlet路径(让Servlet与一个路径绑定在一起)

 给Servlet配置Servlet路径,这需要在web.xml中对Servlet进行配置

<servlet>
                        <servlet-name>xxx</servlet-name>
                        <servlet-class>cn.itcast.servlet.AServlet</servlet-class>      
                </servlet>

                <servlet-mapping>
                        <servlet-name>xxx</servlet-name>
                        <url-pattern>/跟servlet绑定路径</url-pattern>

注意:
        a>给类AServlet起个名字叫xxx,注意:写servlet类的全名
        b>先得有名为xxx的servlet,然后要给xxx配置什么路径,在mapping中完成
        c>说明:
        这个绑定的路径一旦被访问,实际上是访问名为xxx的servlet,而这个servlet的类是cn.itcast.servlet.AServlet。得到这个字符串,服务器根据反射机制,会自动创建该类的对象,执行该类的方法。

4、Servlet的生命周期
  • 加载和实例化
    Servlet容器负责加载和实例化Servlet,容器是通过Java的反射API(使用类加载器加载servlet类)来创建Servlet实例,调用的是Servlet的默认构造方法,所以我们在编写Servlet类的时候,不应该提供带参数的构造方法。
  • init:只被调用一次。在创建好实例后立即被调用。
  • service:每次请求都会调用,实际用于响应请求
  • destory:只被调用一次。当前Servlet所在的web应用被卸载前调用,用于释放当前Servlet所占用的资源
5、Servlet接口中的方法
        void init(ServletConfig arg0) //Servlet对象创建之后执 (做一些初始化操作)

        void service(ServletRequest request, ServletResponse response)//每次处理请求都是处理这个方法

        void destroy() //Servlet被销毁之前调用,只执行一次(释放那些非内存资源)


        ServletConfig getServletConfig()//获取Servlet的配置信息


        String getServletInfo()//获取Servlet的信息
6、load-on-startup参数

用以指定Servlet被创建的时机。若为负数,则在第一次请求时被创建。若为0或正数,则在当前web应用被Servlet容器加载时创建,且数组越小越早被创建。

    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.ithings.servlet.HelloServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
7、serlvet-mapping通配符

可以用匹配符配置,但是要注意,必须是.do或者 /开头的以/* 结束的路径。

对于如下的一些映射关系:

    Servlet1 映射到 /abc/* 

    Servlet2 映射到 /* 

    Servlet3 映射到 /abc 

    Servlet4 映射到 *.do 

问题:

    当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应.        

        【Servlet引擎将调用Servlet1。】

    当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应.           

        【Servlet引擎将调用Servlet3。】

    当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应.  

        【Servlet引擎将调用Servlet1。】

    当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应.                            

        【Servlet引擎将调用Servlet2。】

    当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应.    

        【Servlet引擎将调用Servlet2。】
8、ServletConfig接口
  • 1个ServletConfig对象,对应一段web.xml中servlet的配置信息
  • ServletConfig接口的方法;
1、ServletContext getServletCOntext()        //获取Servlet上下文对象
2、String getServletName()                   //获取的是<servlet-name>中的内容
3、String getInitParameter(String name)      //通过名称获取指定初始化参数的值
4、Enumeration getInitParamenterNames()      //获取所有初始化参数的名称
9、ServletContext对象(重要)

             代表当前web应用,可从中获取当前web应用的各个信息。一个项目就一个ServletContext对象。我们可以在N多个servlet中来获取这个唯一的对象,使用它来给多个Servlet传递数据(可以用它来完成共享数据)

①概述
             ServletContext对象的创建是在服务器启动时,销毁时服务器关闭时。(与服务器同生死)
             作用:
                          不同Servlet之间传递共享数据(域对象)

②获取ServletContext
             在void init(ServletConfig config)中,getServletContext()方法可以获取到
                          ServletContext context=config.getServletContext();

             GenericServlet或HttpServlet中获取ServletContext
                          GenericServlet类中有ServletContext()方法。使用this.getServletContext()

③域对象功能
              域对象可以理解为:域对象就是用来在多个Servlet中传递数据

    ** javaweb有四大域对象
            PageContext
            ServletRequest
            HttpSession
            ServletContext

            所有域对象都有存取数据的功能。因为域对象内部有一个Map,用来存储数据,

    ** ServletContext操作数据的方法:(同时也是域对象的基本方法)

            ** void setAttribute(String name ,object value)
                            //用来存储一个对象,可以称之为存储一个域属性,使用键值对的方式。
            ** object getAttribute(String name):
                            获取ServletContext中的数据。

            ** void removeAtteibute(String name):
                            移除ServletContext中的域属性
            ** Enumeration getAttributeNames();
                            获取所有域属性的名称

④全局应用参数
             可以配置公共的初始化参数,为所有的Servlet而用,使用<context-param>标签

<context-param>
        <param-name>name</param-name>
        <param-vlaue>value</param-vlaue>
</context-param>

⑤获取相关资源的方法

1、获取部署在服务器上的绝对路径    
            servletContext.getRealPath("");
2、获取当前web应用的名称
            getContextPath() 
2、获取资源流
            InputStram is=servletContext.getResourceAsStream("");
3、获取指定目录下所有资源路径
            Set set=servletContext.getRescourcePaths("")
训练数据保存为deep_convnet_params.pkl,UI使用wxPython编写。卷积神经网络(CNN)是一种专门针对图像、视频等结构化数据设计的深度学习模型,在计算机视觉、语音识别、自然语言处理等多个领域有广泛应用。其核心设计理念源于对生物视觉系统的模拟,主要特点包括局部感知、权重共享、多层级抽象以及空间不变性。 **1. 局部感知与卷积操作** 卷积层是CNN的基本构建块,使用一组可学习的滤波器对输入图像进行扫描。每个滤波器在图像上滑动,以局部区域内的像素值与滤波器权重进行逐元素乘法后求和,生成输出值。这一过程能够捕获图像中的边缘、纹理等局部特征。 **2. 权重共享** 同一滤波器在整个输入图像上保持相同的权重。这显著减少了模型参数数量,增强了泛化能力,并体现了对图像平移不变性的内在假设。 **3. 池化操作** 池化层通常紧随卷积层之后,用于降低数据维度并引入空间不变性。常见方法有最大池化和平均池化,它们可以减少模型对微小位置变化的敏感度,同时保留重要特征。 **4. 多层级抽象** CNN通常包含多个卷积和池化层堆叠在一起。随着网络深度增加,每一层逐渐提取更复杂、更抽象的特征,从底层识别边缘、角点,到高层识别整个对象或场景,使得CNN能够从原始像素数据中自动学习到丰富的表示。 **5. 激活函数与正则化** CNN中使用非线性激活函数来引入非线性表达能力。为防止过拟合,常采用正则化技术,如L2正则化和Dropout,以增强模型的泛化性能。 **6. 应用场景** CNN在诸多领域展现出强大应用价值,包括图像分类、目标检测、语义分割、人脸识别、图像生成、医学影像分析以及自然语言处理等任务。 **7. 发展与演变** CNN的概念起源于20世纪80年代,其影响力在硬件加速和大规模数据集出现后真正显现。经典模型如LeNet-5用于手写数字识别,而AlexNet、VGG、GoogLeNet、ResNet等现代架构推动了CNN技术的快速发展。如今,CNN已成为深度学习图像处理领域的基石,并持续创新。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
内容概要:本文介绍了一种基于CEEMDAN-BiLSTM的中短期天气预测模型,通过将完全集合经验模态分解自适应噪声(CEEMDAN)与双向长短期记忆网络(BiLSTM)相结合,实现对复杂气象时间序列的高精度预测。首先利用CEEMDAN对原始气象数据进行多尺度分解,获得多个本征模态函数(IMF)分量和残差,有效解决模式混叠与噪声干扰问题;随后对各IMF分量分别构建BiLSTM模型进行独立预测,充分发挥其对前后时序依赖的建模能力;最后通过集成重构输出最终预测结果。文中还包含了数据预处理、特征提取、模型评估与可视化等完整流程,并提供了MATLAB实现的部分代码示例。该方法显著提升了天气预测的准确性与鲁棒性,适用于多类气象要素的中短期趋势预测。; 适合人群:具备一定机器学习和时间序列分析基础,从事气象、环境、能源等领域研究或工程应用的研发人员、高校研究生及数据科学家。; 使用场景及目标:①应用于温度、风速、降水等气象变量的中短期精准预测;②解决传统模型在非线性、多尺度气象信号建模中的局限性;③构建智能气象预测系统,服务于电力调度、灾害预警、智慧农业等实际业务场景。; 阅读建议:建议结合MATLAB代码实践操作,深入理解CEEMDAN分解机制与BiLSTM建模细节,重点关注数据预处理、模型参数调优与结果集成策略,同时可扩展至多变量联合预测以提升应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值