Seivlet处理请求

1,重定向

  (1)什么是重定向?

     服务器通知浏览器向一个新的地址发送请求。一般服务器可以发送一个302状态码和一个Location消息头(值是一个地址,一般称之为重定向地址),浏览器收到之后,会立即向重定向地址发请求。

 (2)如何重定向?

   response.sendRedirect(String url);

 (3)重定向之前,服务器会先清空response对象上缓存的数据。

 (4)特点

     a,重定向之后,浏览器地址栏的地址会变。

     b,重定向地址是任意的。

 

2,servlet容器如何处理请求资源路径

   比如,在浏览器地址栏输入http://ip:port/web03_2/abc.html浏览器会将"/web03_2/abc.html"作为请求资源路径发送给servlet容器(tomcat)

  step1,依据应用名找到应用所在的文件夹。

  step2,容器会先假设访问的是一个servlet,会从web.xml文件当中查找对应的servlet来处理。匹配处理方式有以下几种:

     (1)精确匹配

        <url-pattern>/abc.html</url-pattern>

    (2)通配符匹配

        使用"*"来匹配零个或者多个字符。

        比如:<url-pattern>/*</url-pattern>

    (3)后缀匹配

        使用"*."开头,后接多个字符。

        比如:<url-pattern>*.do</url-pattern>

        以上配置为匹配所有以".do"结尾的请求。

  step3,如果以上均不匹配,会查找文件。找到了就返回,找不到,会返回404


3,让一个servlet处理多种请求

  step1,使用后缀匹配

    <url-pattern>*.do</url-pattern>

  step2,分析请求资源路径,依据分析结果,调用不同的分支来处理。

    String request.getRequestURI();  //获得请求资源路径

 

使用mysql的注意事项:

          mysql数据库提供的jdbc驱动,有一些不能够正确进行编码和解码。

          jdbc驱动在插入数据时,需要编码(unicode --> 某种本地字符集,比如gbk,utf-8),反过来,查询数据时,需要解码(gbk,utf-8 --->unicode)

         有些mysqljdbc驱动默认情况下,会使用"iso-8859-1"来编码和解码,所以,通常

         jdbc:mysql://localhost:3306/jsd1407?useUnicode=true&characterEncoding=utf8;

     这两个选项参数的作用是告诉jdbc驱动使用"utf-8"来编码和解码。

 

4,servlet的生命周期

  (1)什么是servlet的生命周期?

    servlet容器如何创建servlet对象,如何对其进行初始化,调用其方法来处理请求,以及如何销毁servlet对象的整个过程。

  (2)生命周期的四个阶段

      1)实例化

         a,什么是实例化?

             容器创建servlet对象。

         b,什么时候实例化?

        情况1:容器收到请求之后,才会创建。

        注:容器在默认情况下,对于某个servlet,只会创建一个实例。

        情况2: 容器启动之后,立即创建。

        <load-on-startup>大于等于0的整数</load-on-startup>

       值越小,容器越先创建。

     2)初始化

        a,什么初始化

           容器在创建好servlet对象之后,会立即调用该对象的init方法。init方法只会执行一次。

        b,如何实现自己的初始化处理逻辑

            GenericServlet提供了init方法的基本实现:将容器传递过来的ServletConfig对象保存下来,并且提供了一个getServletConfig方法来获得该对象。然后只要override init()方法即可。这里重写的只是无参的init()方法,对有参的init()方法没有任何影响,有参的init()方法会调用无参的init()方法。

        c, 访问servlet的初始化参数

             step1,配置初始化参数

            <init-param>

                <param-name>company</param-name>

               <param-value>北京达内科技</param-value>

           </init-param>

            step2,获取初始化参数

            String ServletConfig.getInitParameter("company");

    3)就绪

      a,什么是就绪

         容器收到请求之后,会调用servlet对象的service方法。

      b,HttpServletservice方法实现过程:

        依据请求方式调用相应的doxxx方法(比如,请求方式为get,则调用doGet方法,这些doxxx方法并没有完整实现,需要开发人员去override)。所以我们写一个Servlet时有以下两种选择:

       选择1(建议)override doGet/doPost

       选择2: override service

    4)销毁

        容器将servlet对象从容器当中删除掉。容器在删除servlet对象之前,会先调用该对象的destroy方法。且该方法只会执行一次。

 

 (3)生命周期相关的几个类与接口

     Servlet接口

          init(ServletConfig config); //初始化Servlet对象

         service(ServletRequest req,ServletResponse res); //Servlet对象处理请求

         destroy(); //销毁Servlet对象

   ServletConfig接口

     String GetInitParameter(String paraName)


     GenericServlet抽象类:实现了Servlet接口中的部分方法(init,destroy)

     HttpServlet抽象类:继承了GenericeServlet,实现了service方法。

        ServletRequest接口:是HttpServletRequest接口的父接口

     ServletResponse接口:是HttpServletResponse接口的父接口


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值