zoukankan      html  css  js  c++  java
  • JAVA-Servlet内容

    Servlet重定向

    HttpServletResponse接口的sendRedirect()方法可以用于将响应重定向到另一个资源,资源可能是servletjsphtml文件。

    它接受相对和绝对URL。

    它在客户端工作,因为它使用浏览器的URL栏来发出另一个请求。 所以,它可以在服务器内部和外部工作。

    forward()和sendRedirect()方法的区别

    RequestDispatcherforward()方法和HttpServletResponse接口的sendRedirect()方法之间存在很多差异。如下面给出:

    forward()方法sendRedirect()方法
    forward()方法在服务器端工作。 sendRedirect()方法在客户端工作。
    它将相同的请求和响应对象发送到另一个servlet。 它总是发送一个新的请求。
    它只能在服务器内工作。 它可以在服务器内外使用。
    示例: request.getRequestDispacher("servlet2").forward(request,response); 示例: response.sendRedirect("servlet2");

    sendRedirect()方法的语法

    public void sendRedirect(String URL)throws IOException;
    
    Java

    sendRedirect()方法的示例

    response.sendRedirect("http://www.yiibai.com");

    ServletRequest接口的getHeaderNames()方法返回一个包含所有头名称的Enumeration对象。ServletRequest接口的getHeader()方法返回给定头名称的头值。 在这个例子中,我们在servlet页面中显示一个请求的所有头信息。

    getHeaderNames()方法的语法

    public Enumeration getHeaderNames()
    
    Java

    getHeader()方法的语法

    public String getHeader(String headerName)

    ServletConfig对象是由每个servlet的Web容器创建的。这个对象可用于从web.xml文件获取配置信息。

    如果从web.xml文件修改配置信息,就不需要更改servlet中的代码。因此,对于有特定配置内容需要不定时修改,这样会更容易管理Web应用程序。

    ServletConfig的优点

    ServletConfig的核心优点是,如果可以修改web.xml文件中的信息,则不需要编辑servlet代码文件。

    ServletConfig接口的方法

    编号方法描述
    1 public String getInitParameter(String name) 返回指定参数名称的参数值。
    2 public Enumeration getInitParameterNames() 返回所有初始化参数名称的枚举。
    3 public String getServletName() 返回servlet的名称。
    4 public ServletContext getServletContext() 返回ServletContext的对象。

    如何获取ServletConfig的对象?

    • 可通过调用Servlet接口的getServletConfig()方法来返回ServletConfig对象。

    getServletConfig()方法的语法

    public ServletConfig getServletConfig();
    
    Java

    getServletConfig()方法的示例

    ServletConfig config=getServletConfig();  
    //Now we can call the methods of ServletConfig interface
    
    Java

    为servlet提供初始化参数的语法

    servlet的init-param子元素用于指定servlet的初始化参数。

    <web-app>
      <servlet>
        ......
        <init-param>  
          <param-name>parameter_name</param-name>
          <param-value>parameter_value</param-value>
        </init-param>
        ......
      </servlet>
    </web-app>

    ServletContext的对象由Web容器在部署项目时创建。 该对象可用于从web.xml文件获取配置信息。 每个Web应用程序只有一个ServletContext对象。

    如果有信息要共享给多个servlet使用,最好在web.xml文件中使用<context-param>元素提供它。

    ServletContext的优点

    如果有任何信息要共享给所有的servlet使用,并且要让它容易维护,最好的办法就是在web.xml文件中提供这些信息,所以如果信息要更改直接在web.xml中修改,而不需要修改servlet代码。

    ServletContext接口的使用

    有很多ServletContext对象可以使用。 其中一些如下:

    • ServletContext对象提供容器和servlet之间的接口。
    • 使用ServletContext对象在web.xml文件获取配置信息。
    • ServletContext对象可用于设置,获取或删除web.xml文件中属性。
    • ServletContext对象可用于提供应用程序间通信。

    参考以下示意图 -

    常用的ServletContext接口方法

    给出了一些常用的ServletContext接口方法。

    序号方法描述
    1 public String getInitParameter(String name) 返回指定参数名称的参数值。
    2 public Enumeration getInitParameterNames() 返回上下文的初始化参数的名称。
    3 public void setAttribute(String name,Object object) 在应用程序范围内设置给定的对象。
    4 public Object getAttribute(String name) 返回指定名称的属性。
    5 public Enumeration getInitParameterNames() 返回上下文的初始化参数的名称,作为String对象的枚举。
    6 public void removeAttribute(String name) 从servlet上下文中删除给定名称的属性。

    如何获取ServletContext接口的对象?

    • 通过ServletConfig接口的getServletContext()方法返回ServletContext对象。
    • 通过GenericServlet类的getServletContext()方法返回ServletContext对象。

    getServletContext()方法的语法

    public ServletContext getServletContext()
    
    Java

    getServletContext()方法的示例

    //We can get the ServletContext object from ServletConfig object  
    ServletContext application=getServletConfig().getServletContext();  
    
    //Another convenient way to get the ServletContext object  
    ServletContext application=getServletContext();
    
    Java

    在Context范围内提供初始化参数的语法

    Web应用程序的context-param元素的子元素用于定义应用程序范围中的初始化参数。 参数名称和参数值是context-param的子元素。param-name元素定义参数名称,param-value定义其值。参考以下配置代码片段 -

    <web-app>  
     ......  
      <context-param>  
        <param-name>parameter_name</param-name>  
        <param-value>parameter_value</param-value>  
      </context-param>
     ......  
    </web-app>

    Servlet中的属性是可以从以下范围之一设置,获取或删除的对象:

    • 请求范围
    • 会话范围
    • 应用范围

    Servlet程序员可以使用属性将信息从一个servlet传递给另一个servlet。它就像将对象从一个类传递给另一个类一样,以便我们可以一次又一次地重用同一个对象。

    ServletRequest,HttpSession和ServletContext接口的属性特定方法

    Servlet中有以下4种属性方法,它们具体如下:

    序号方法描述
    1 public void setAttribute(String name,Object object) 在应用程序范围内设置给定的对象。
    2 public Object getAttribute(String name) 返回指定名称的属性。
    3 public Enumeration getInitParameterNames() 返回上下文的初始化参数的名称,转为String对象的枚举。
    4 public void removeAttribute(String name) 从servlet上下文中删除具有给定名称的属性。
    GETPOST
    数据以报头发送,所以只能发送有限数据的数据量。 可以发送大量的数据,因为数据是以正文的形式发送的。
    GET请求不受保护,因为GET数据是直接在URL栏中显示的。 POST请求相对安全一些,因为数据没有在URL栏中公开。
    GET请求可以加入浏览器书签栏。 POST请求不可以加入浏览器书签栏。
    GET请求是幂等的。这意味着直到第一个请求的响应前,第二个请求将被忽略。 POST请求不是幂等的。
    GET请求比POST请求更有效率,以及使用频率更高。 POST请求比GET请求效率更低一些,以及使用频率更低。

    过滤器是在请求的预处理和后处理时调用的对象。

    主要用于执行转换,日志记录,压缩,加解密,输入验证等过滤任务。

    servlet过滤器是可插拔的,即它在web.xml文件中定义,如果从web.xml文件中删除过滤项,则过滤器将被自动删除,因此不需要手动更改Servlet。所以过滤器维护成本会比较低。

    参考模型图 -

    注意:与Servlet不同,一个过滤器不依赖于另一个过滤器。

    过滤器的使用

    • 记录所有传入的请求
    • 记录来自标计算机的IP地址的请求
    • 转变/转换
    • 数据压缩
    • 加密和解密
    • 输入验证等

    过滤器的优点

    • 过滤器是可插拔的。
    • 一个过滤器不依赖于另一个资源。
    • 维护少,比较容易维护。

    过滤器API

    像Servlet一样,过滤器也有自己的API。 javax.servlet包中包含Filter API的三个接口,它们分别如下所示 -

    • Filter
    • FilterChain
    • FilterConfig

    Filter接口

    要创建一个过滤器,必须要实现Filter接口。Filter接口为过滤器提供了生命周期方法。

    方法描述
    public void init(FilterConfig config) init()方法只被调用一次,用于初始化过滤器。
    public void doFilter(HttpServletRequest request,HttpServletResponse response, FilterChain chain) 当用户请求过滤器所映射到资源时,会调用doFilter()方法,它用于执行过滤任务。
    public void destroy() 当过滤器从服务中取出时,调用此方法(仅一次)。

    FilterChain接口

    FilterChain对象负责调用链中的下一个过滤器或资源。对象在Filter接口的doFilter方法中传递。FilterChain接口只包含一个方法:

    • public void doFilter(HttpServletRequest request,HttpServletResponse response):它将控件传递给下一个过滤器或资源。

    如何定义过滤器

    我们可以使用与servlet相同方式来定义过滤器。下面来看看过滤器和过滤器映射的元素。在web.xml文件配置如下 -

    <web-app>  
    
    <filter>  
      <filter-name>...</filter-name>  
      <filter-class>...</filter-class>  
    </filter>  
    
    <filter-mapping>  
      <filter-name>...</filter-name>  
      <url-pattern>...</url-pattern>  
    </filter-mapping>  
    
    </web-app>
    
    XML

    对于映射过滤器,可以使用url-patternservlet-name。 url-pattern元素比servlet-name元素具有优势,即它可以应用于servletJSPHTML资源。

  • 相关阅读:
    javascript教程系列-10.DOM(下)
    javascript教程系列-9.DOM(上)
    javascript教程系列-8.BOM
    javascript教程系列-7.Date对象
    javascript教程系列-6.String类型
    javascript教程系列-5.数组
    Python字符串、元组、列表、字典互相转换的方法
    python 中函数
    python中的字符串 列表 字典
    python 基础 知识
  • 原文地址:https://www.cnblogs.com/xinfang520/p/7723401.html
Copyright © 2011-2022 走看看