精华内容
下载资源
问答
  • 在编写Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。  首先介绍一下Java Servlet的基本方法。 ...

      在编写Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。

        首先介绍一下Java Servlet的基本方法。

    • init() 方法
          在Servlet的生命周期中,仅执行一次 init() 方法,即在服务器装入Servlet时执行。通过配置服务器,可以设定在启动服务器或客户机首次访问Servlet 时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行 init()。
    • service() 方法
          service()方法是Servlet的主体部分。客户对一个HttpServlet对象的每次请求都会调用该对象的service() 方法,并传递给这个方法一个"请求"对象和一个"响应"对象作为参数。"请求"对象提供有关请求的信息,而"响应"对象提供了一个将响应信息返回给浏览器的通信途径。javax.servlet 软件包中的相关类为ServletRequest和ServletResponse,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和 HttpServletResponse。Servlet 通过这些对象与服务器通信并最终与客户机通信。Servlet 能通过调用"请求"对象的方法获知客户机环境、服务器环境的信息和所有由客户机提供的信息;通过调用"响应"对象的方法,Servlet可以向客户机发送响应。

          HttpServlet中的service()方法默认的服务功能是调用与 HTTP 请求的方法相应的 do 功能。例如,如果 HTTP 请求方法为 GET,则默认情况下就调用 doGet()。当一个客户通过HTML表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

          Servlet的响应可以是下列几种类型:
          ·一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。
          ·一个HTTP错误响应,重定向到另一个URL、Servlet和JSP。

              切记,不要调用super.service,否则无法浏览器认为没有处理机制

    • destroy() 方法
          destroy() 方法仅执行一次,即在服务器停止且卸载Servlet 时执行该方法。当服务器卸载 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。一个Servlet 在运行service() 方法时可能会产生其他的线程,因此在调用 destroy() 方法时,必须确认这些线程已终止或完成。
    • GetServletConfig()方法
          GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。ServletContext 接口提供有关Servlet 的环境信息。
    • GetServletInfo()方法
          GetServletInfo()方法是一个可选的方法,它提供有关Servlet 的信息,如作者、版本、版权。

        下面介绍编写一个基本HTTP Servlet的步骤。

        (1)引入相应的包和类,包括:

    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    继承javax.servlet.http.HttpServlet 
    public class MyServlet extends HttpServlet{

        (2)实现service方法。

        Servlet的主要功能是接受从浏览器发送过来的HTTP请求(request),并返回HTTP响应(response)。这个工作是在service方法中完成的。service方法包括从request对象获得客户端数据和向response对象创建输出。

        如果一个Servlet从javax.servlet.http.HttpServlet继承,实现了doPost或doGet方法,那么这个Servlet只能对POST或GET做出响应。如果开发人员想处理所有类型的请求(request),只要简单地实现service方法即可(但假如选择实现service方法,则不必实现doPost或doGet方法,除非在service方法的开始调用super.service())。其中的差别如图14-2所示。


    图14-2 doGet、doPost、service的区别

        HTTP Servlet规范描述了用来处理其他请求(request)类型的方法,所有这些方法都可以归属于service方法。所有的service 方法使用一样的参数。HttpServletRequest提供关于请求(request)的信息,Servlet可以使用 HttpServletResponse 对HTTP客户端做出响应。

    public void service(HttpServletRequest req,HttpServletResponse res)
    throws IOException{
    // 设置响应内容的类型 
    res.setContentType("text/html");
    // 获得java.io.PrintWriter对象的引用,用来输出 
    PrintWriter out = res.getWriter();
    // 使用PrintWriter对象的println()方法创建一些HTML代码,例如 
    out.println("<html><head><title>Hello  World!</title></head>");
    out.println("<body><h1>Hello World!</h1></body></html>");
    ……
    }

        (3)编译Servlet。
        从存放此Servlet源代码文件的目录编译此Servlet到包含此Servlet的应用中的 WEB-INF/classes目录。如:
        javac -d /your_application_dir/WEB-INF/classes your_servlet.java

        (4)将此Servlet作为应用的一部分部署。
        把程序编译到指定目录后还是没有开启这个服务,我们必须对它进行配置,在C:\bea\wlserver6.1\config\mydomain\applications\DefaultWebApp\WEB-INF下有一个web.xml文件,这个就是应用程序的配置文件。这个文件的一般形式如下:

    <?xml version="1.0" ?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web 
    Application 1.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app>
      <!--chapter 8  java  servlets -->
      <servlet>
      <servlet-name>HelloWorld2</servlet-name>
      <servlet-class>examples.servlets.HelloWorld2</servlet-class>
      <init-param>
       <param-name>greeting</param-name>
       <param-value>welcome</param-value>
       </init-param>
       <init-param>
        <param-name>person</param-name>
        <param-value>weblogic developer</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
      <servlet-name>HelloWorld2</servlet-name>
      <url-pattern>/HelloWorld2/*</url-pattern>
      </servlet-mapping>  
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
      </welcome-file-list>
    </web-app>

        其中servlet-name是Servlet的名字,servlet-class是在\WEB-INF\classes下存放class文件的相对路径。我们还可以在此文件中初始化参数,形式如下:

    <init-param>
     <param-name>greeting</param-name>
     <param-value>welcome</param-value>
    </init-param>

        param-name是参数的名称,在本例中是greeting;param-value是参数的值,在本例是welcome。我们可以以此形式初始化更多的参数。

    <servlet-mapping>
    <servlet-name>HelloWorld2</servlet-name>
    <url-pattern>/HelloWorld2/*</url-pattern>
    </servlet-mapping>

        这段代码是Servlet名称与url-pattern路径的映射。根据这段代码,HelloWorld2这个Servlet程序的URL路径就是http://SERVER_ADDRESS:/HelloWorld2。

        (5)从浏览器访问Servlet。一般说来,调用Servlet的URL 取决于包含Servlet的Web应用的名字和Web应用部署描述中的Servlet映射的名字。请求(request)参数也可以是调用Servlet的URL的一部分,一般Servlet 的URL如以下模式:
        http://SERVER_ADDRESS:/your_web_application_name/ mapped_servlet_name? Parameter

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
      <servlet>
        <servlet-name>mainservlet</servlet-name>
        <servlet-class>fwpt.MainServlet</servlet-class>
        <init-param>
          <param-name>configfile</param-name>
          <param-value>/WEB-INF/cxserver.config</param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>mainservlet</servlet-name>
        <url-pattern>/mainservlet/*</url-pattern>
      </servlet-mapping>
    </web-app>


    展开全文
  • 编写 Servlet 2.3 Filter

    2005-07-08 11:41:00
    Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,还没有到达需要访问的资源运行的一个类。它操纵来自客户端的请求,资源还没有初发送到客户端前截取响应,并处理这些还没有...
    Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。

    Filters 有许多的应用场合。Servlet 2.3 规范建议如下的地方可以应用Filter:

    authentication filters
    logging and auditing filters
    image conversion filters
    data compression filters
    encryption filters
    tokenizing filters
    filters that trigger resource access events
    XSL/T filters that transform XML content
    MIME-type chain filters


    编写一个简单的 Filter

    学习怎么样写Filter的第一步,是看一个非常简单的实例。Filter 是一个实现了 javax.servlet.Filter 接口的类。javax.servlet.Filter 接口定义了三个方法:

    public void doFilter (ServletRequest request, ServletResponse response, FilterChain chain) 
    public FilterConfig getFilterConfig()
    public void setFilterConfig (FilterConfig filterConfig)


    创建 javax.servlet.FilterConfig 对象,并完成初始化后传递给 Filter ,是容器的职责。javax.servlet.FilterConfig 可以被用来:

    提取 Filter name(在配置描述符中定义的)
    提取初始化变量(在配置描述符中定义的)
    得到 ServletContext 对象的引用

    setFilterConfig() 方法可以被用来设置一个对象为某个 Filter 的属性。doFilter() 方法实际上真正要进行 filter 动作的地方。在这里,你可以解析用户的请求,记录统计到文件,处理返回客户端的响应,等等。列表1是一人非常简单的例子,当它 filter 客户端请求时,打印一个消息到控制台;然后当它 filter 一个返回客户端的响应时再打印一个消息到控制台。图1是一个示例这个简单的 Filter 怎样处理请求-响应模型的图表。
    image

    列表1: 一个非常简单的 Filter (SimpleFilter.java)

    package com.filters;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;

    import java.io.IOException;
    import javax.servlet.ServletException;

    public class SimpleFilter implements Filter
    {
      private FilterConfig filterConfig;

      public void doFilter (ServletRequest request,
                 ServletResponse response,
                 FilterChain chain)
      {

        try
        {
          System.out.print ("Within Simple Filter ... ");
          System.out.println ("Filtering the Request ...");

          chain.doFilter (request, response);

          System.out.print ("Within Simple Filter ... ");
          System.out.println ("Filtering the Response ...");

        } catch (IOException io) {
          System.out.println ("IOException raised in SimpleFilter");
        } catch (ServletException se) {
          System.out.println ("ServletException raised in SimpleFilter");
        }
      }

      public FilterConfig getFilterConfig()
      {
        return this.filterConfig;
      }

      public void setFilterConfig (FilterConfig filterConfig)
      {
        this.filterConfig = filterConfig;
      }
    }


    以上的代码中可以看出,这个 Filter 是一个名为 SimpleFilter.java 类,它实现了 javax.servlet.Filter 接口,并提供了这个接口中三个方法的实现。

    注 意,doFilter 可以分为二个部分:filter request 与 filter response 。这二部分由 javax.servlet.FilterChain 对象调用 chain 中的下一个对象来隔开,这下一个对象可能是一个 Servlet 或者另外的一个 Filter 。

    现在,我们写好了这样的一个简单的 Filter ,需要把它配置到一个容器中,看看运行结果。

    Apache Jatarka Tomcat,4.0 以上版本都支持 Servlet 2.3 规范。本文所有的实例都在此环境下测试通过。

    Filters 定义在web应用描述符中,即 web.xml 文件。Filters 先被定义,然后映射(map)到 Servlet 或者 URL ,这与 Servlet 的定义与映射是完全一样的。列表2是 web.xml 文件中,配置 SimpleFilter.java ,并映射(map)到一个 Servlet 。

    Listing 2: web.xml

    <?xml version = "1.0" encoding = "ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

    <web-app>
      <!-- Define the filters within the Web Application -->
      <filter>
        <filter-name>
          Simple Filter Example
        </filter-name>
        <filter-class>
          com.filters.SimpleFilter
        </filter-class>
      </filter>
      <!-- Map the filter to a Servlet or URL -->
      <filter-mapping>
        <filter-name>
          Simple Filter Example
        </filter-name>
        <url-pattern>
          /simple
        </url-pattern>
      </filter-mapping>
      <!-- Define the Servlets within the Web Application -->
      <servlet>
        <servlet-name>
          Simple Servlet
        </servlet-name>
        <servlet-class>
          com.servlets.SimpleServlet
        </servlet-class>
      </servlet>
      <!-- Define Servlet mappings to urls -->
      <servlet-mapping>
        <servlet-name>
          Simple Servlet
        </servlet-name>
        <url-pattern>
          /simple
        </url-pattern>
      </servlet-mapping>
    </web-app>


    很可惜后面的东东网上都没有了,现在这些网站对自己的内容都太不负责任了!不过索性大概开发流程是说出来了,具体工作原理就找找别的资料吧

    转载于:https://www.cnblogs.com/menghe/articles/188432.html

    展开全文
  • Servlet

    2010-12-04 22:18:00
    Java Servlet开发工具(JSDK)提供了多个软件包,在编写Servlet时需要用到这些软件包。其中包括两个用于所有Servlet的基本软件包,分别是javax.servlet和javax.servlet.http。可从Sun公司的Web站点下载Java Servlet...

    Java Servlet开发工具(JSDK)提供了多个软件包,在编写Servlet时需要用到这些软件包。其中包括两个用于所有Servlet的基本软件包,分别是javax.servlet和javax.servlet.http。

    可从Sun公司的Web站点下载Java Servlet开发工具。

    HTTP Servlet使用一个HTML表格来发送和接收数据。要创建一个HTTP Servlet,应扩展HttpServlet类,该类是用专门的方法来处理HTML表格的GenericServlet类的一个子类。HTML表单是由<FORM>和</FORM>标记定义的。典型的表单中包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。当提交信息时,它们还指定服务器应执行哪一个Servlet(或其他的程序)。

    HttpServlet类包含init()、destroy()和service()等方法。其中init()和destroy()方法是继   承的。

    1.init()方法

    在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。

    默认的init()方法通常是符合要求的,但也可以用定制init()方法来覆盖它,典型的是管理服务器端资源。例如,可以编写一个定制的init()用于一次装入GIF图像,改进Servlet返回GIF图像和含有多个客户机请求的性能。另一个示例是初始化数据库连接。默认的init()方法设置了Servlet的初始化参数,并用它的ServletConfig对象参数来启动配置,因此所有覆盖init()方法的Servlet应调用super.init()以确保仍然执行这些任务。在调用service()方法之前,应确保已完成了init()方法。

    2.service()方法

    service()方法是Servlet的核心。每当一个客户请求一个HttpServlet对象,该对象的service()方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。在HttpServlet中已存在service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。例如,如果HTTP请求方法为GET,则默认情况下就调用doGet()。Servlet应该为Servlet支持的HTTP方法覆盖do功能。因为HttpServlet.service()方法会检查请求方法是否调用了适当的处理方法,不必覆盖service()方法,只需覆盖相应的do方法即可。

    当一个客户通过HTML表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。当需要修改服务器端的数据时,应该使用doPost()方法。

    当一个客户通过HTML表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

    Servlet的响应可以是下列类型:

    一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。

    一个HTTP错误响应,重定向到另一个URL、Servlet、JSP。

    3.destroy()方法

    destroy()方法仅执行一次,在服务器停止且卸装Servlet时执行该方法。典型的是将Servlet作为服务器进程的一部分来关闭。默认的destroy()方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。例如,如果Servlet在运行时会累计统计数据,则可以编写一个destroy()方法,该方法用于在未装入Servlet时将统计数字保存在文件中。另一个示例是关闭数据库连接。

    当服务器卸载Servlet时,将在所有service()方法调用完成后,或在指定的时间间隔过后调用destroy()方法。一个Servlet在运行service()方法时可能会产生其他的线程,因此请确认在调用destroy()方法时,这些线程已终止或完成。

    4.GetServletConfig()方法

    GetServletConfig()方法返回一个ServletConfig对象,该对象用来返回初始化参数和ServletContext。ServletContext接口提供有关Servlet的环境信息。

    5.GetServletInfo()方法

    GetServletInfo()方法是一个可选的方法,它提供有关Servlet的信息,如作者、版本和版权。

    当服务器调用Sevlet的Service()、doGet()和doPost()这3个方法时,均需要"请求"和"响应"对象作为参数。"请求"对象提供有关请求的信息,而"响应"对象提供了一个将响应信息返回给浏览器的通信途径。javax.servlet软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http软件包中的相关类为HttpServletRequest和HttpServlet Response。Servlet通过这些对象与服务器通信并最终与客户机通信。Servlet能通过调用"请求"对象的方法获知客户机环境、服务器环境的信息和所有由客户机提供的信息。Servlet可以通过调用"响应"对象的方法发送响应,该响应是准备发回客户机的。

    展开全文
  • 编写websocket时需要导入包

    万次阅读 2015-07-09 10:21:34
    1.Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法 Eclipse中,右击项目,选择Java Build Path->Libraries->Add External JARs,找到你计算机中tomcat的安装路径,...
    
    

    1.在Eclipse中编写servlet时出现"The import javax.servlet cannot be resolved" 问题解决办法

    在Eclipse中,右击项目,选择Java Build Path->Libraries->Add External JARs,找到你计算机中tomcat的安装路径,在common\lib文件夹下选中"servlet-api.jar",添加点击“确定”,ok!

    2.导入tomcat的中的所有jar包就可以了

    备注:此处的tomcat,我用的是tomcat7.0.62。8级以上还没有测试过。


    展开全文
  • 源码解析Servlet和HttpServlet

    千次阅读 2017-07-01 15:50:35
    在编写 Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍 javax.servlet 提供的 Servlet 以及 javax.servlet.http 提供的 HttpServlet 应用编程接口。...
  • Java Servlet基本方法介绍Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet...
  • 说明:在编写 Servlet 时需要用到两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。下面主要介绍 javax.servlet 提供的 Servlet 以及 javax.servlet.http 提供的 HTTP Servlet 应用编程...
  • 浅析Java servlet Api

    2014-06-19 14:59:00
    Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...
  • Servlet 学习笔记

    2009-09-08 20:54:05
    Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...
  • Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.h...
  • Java Servlet API

    2007-09-26 16:00:00
    Java Servlet API Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web...
  • Java Servlet API

    2007-09-26 16:00:00
    Java Servlet API Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web...
  • java servlet 小总结

    2011-04-21 14:10:00
    java servlet 开发工具(jsdk)提供了多个软件包,在编写 servlet 时需要用到这些软件包。其中包括两个用于所有 servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的web站点下载 java ...
  • 利用Ajax实现无刷新的彩色验证码,也需要编写一个名称为PictureCheckCode.java的Servlet,该类继承HttpServlet,主要通过service()方法生成验证码。 下面将介绍service()方法中生成彩色验证码的具体过程。 ...
  • Java Servlet API【转】

    2012-10-24 21:47:00
    Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...
  • Java Servlet基本方法介绍Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司...
  • 在编写Servlet时需要用到两个用于所有Servlet的基本软件包:javax.servlet和 javax.servlet.http。下面主要介绍javax.servlet.http提供的HTTPServlet应用编程接口。 首先介绍一下 Java Servlet的基本方法。 init()...
  • Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...
  • Servlet编写图片验证码

    2010-04-10 12:00:00
    图片验证码的原理是,服务器生成一个包含随机数的字符串的图片发给客户端,客户端提交数据时需要填写字符串作为验证。由于字符串保存图片中,因此机器很难识别,从而达到防止有些人使用计算机程序恶意发送信息的...
  • Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...
  •  Java Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。可从sun公司的Web站点下载 Java ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 610
精华内容 244
关键字:

在编写servlet时需要