现在的JSP书籍有的是直接讲述JSP的使用,然后再讲解SERVERLET的使用;也有书籍是先讲述SERVERLET的使用,然后讲解JSP使用.个人认为第二种相对好一些,至于原因大家可以在学习体会到!所以今天我们接着学习SERVERLET的使用!

好,废话少说,现在开始!

    1. 什么是Servlet?
      ① Servlet就是JAVA 类
      ② Servlet是一个继承HttpServlet类的类
      ③ 这个在服务器端运行,用以处理客户端的请求
    2. Servlet相关包的介绍
      --javax.servlet.* :存放与HTTP 协议无关的一般性Servlet 类;
      --javax.servlet.http.* :除了继承javax.servlet.* 之外,并且还增加与HTTP协议有关的功能。
        (注意:大家有必要学习一下HTTP协议,因为WEB开发都会涉及到)
        所有的Servlet 都必须实现javax.servlet.Servlet 接口(Interface)。
        若Servlet程序和HTTP 协议无关,那么必须继承javax.servlet.GenericServlet类;
        若Servlet程序和HTTP 协议有关,那么必须继承javax.servlet.http.HttpServlet 类。
      --HttpServlet :提供了一个抽象类用来创建Http Servlet。
        public void doGet()方法:用来处理客户端发出的 GET 请求
        public void doPost()方法:用来处理 POST请求
        还有几个方法大家自己去查阅API帮助文件
      --javax.servlet包的接口:
        ServletConfig接口:
      在初始化的过程中由Servlet容器使用
        ServletContext接口:定义Servlet用于获取来自其容器的信息的方法
        ServletRequest接口:向服务器请求信息
        ServletResponse接口:响应客户端请求
        Filter接口:
      --javax.servlet包的类:
        ServletInputStream类
      :用于从客户端读取二进制数据
        ServletOutputStream类:用于将二进制数据发送到客户端
      --javax.servlet.http包的接口:
        HttpServletRequest接口:
      提供Http请求信息
        HttpServletResponse接口:提供Http响应
    3. Servlet生命周期
      --Servlet生命周期就是指创建Servlet实例后,存在的时间以及何时销毁的整个过程.
      --Servlet生命周期有三个方法
        init()方法
        service()方法:Dispatches client requests to the protected service method 
        destroy()方法:Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
      --Servlet生命周期的各个阶段
        ----实例化:Servlet容器创建Servlet实例
        ----初始化:调用init()方法
        ----服务:如果有请求,调用service()方法
        ----销毁:销毁实例前调用destroy()方法
        ----垃圾收集:销毁实例
    4. Servlet的基本结构
      package cn.dragon.servlet;
      
      //下面是导入相应的包
      
      import java.io.IOException;
      
      import java.io.PrintWriter;
      
      import javax.servlet.ServletException;
      
      import javax.servlet.http.HttpServlet;
      
      import javax.servlet.http.HttpServletRequest;
      
      import javax.servlet.http.HttpServletResponse;
      
      /**
      
      * 这是第一个Servlet的例子
      
      * @author cn.dragon
      
      */
      
      public class ServletDemoFirst extends HttpServlet {   
      
        //用于处理客户端发送的GET请求   
      
        public void doGet(HttpServletRequest request, HttpServletResponse response)   
      
          throws ServletException, IOException {   
      
           response.setContentType("text/html;charset=GB2312"); //这条语句指明了向客户端发送的内容格式和采用的字符编码.   
      
           PrintWriter out = response.getWriter();    
      
           out.println(" 您好!"); //利用PrintWriter对象的方法将数据发送给客户端   
      
           out.close();   
      
        }   
      
        //用于处理客户端发送的POST请求   
      
        public void doPost(HttpServletRequest request, HttpServletResponse response)   
      
          throws ServletException, IOException {   
      
          doGet(request, response); //这条语句的作用是,当客户端发送POST请求时,调用doGet()方法进行处理   
      
        }
      
      }
    5. Servlet的部署
      以下截取部分
      
      <servlet>
      <description>任意</description>
      <display-name>任意</display-name>
      <servlet-name>ServletDemoFirst</servlet-name>
      <servlet-class>cn.dragon.servlet.ServletDemoFirst</servlet-class>
      </servlet>  <servlet-mapping>
      <servlet-name>ServletDemoFirst</servlet-name>
      <url-pattern>/servlet/ServletDemoFirst</url-pattern>
      </servlet-mapping> 【注意】   ① 上面的两个<servlet-name>必须相同
        ② <servlet-class>后面指在对应的类上面.  技巧:你可以直接在你的servlet类中复制过来,这样可以避免出错!
        ③ <url-pattern> 必须是/servlet 再加servlet名字.大家现在就这么记.
    6. Servlet实例演示
    7. package cn.dragon.servlet;
      
      import java.io.IOException;
      import java.io.PrintWriter; import javax.servlet.ServletException;
      import javax.servlet.http.HttpServlet;
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse; public class ServletDemoSecond extends HttpServlet {
        //初始化
        public void init() throws ServletException {
          System.out.println("我是init()方法!用来进行初始化工作");
        }
        //处理GET请求
        public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
          System.out.println("我是doGet()方法!用来处理GET请求");
          response.setContentType("text/html;charset=GB2312");
          PrintWriter out = response.getWriter();
          out.println("<HTML>");
          out.println("<BODY>");
          out.println("这是Servlet的例子");
          out.println("</BODY>");
          out.println("</HTML>");
        }
        //处理POST请求
        public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
          doGet(request, response);
        }
        //销毁实例
        public void destroy() {
          super.destroy();
          System.out.println("我是destroy()方法!用来进行销毁实例的工作");
        }
      } web.xml文件 <?xml version="1.0" encoding="UTF-8"?>
      <web-app version="2.4"
        xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
      <servlet-name>ServletDemoSecond</servlet-name>
      <servlet-class>cn.dragon.servlet.ServletDemoSecond</servlet-class>
      </servlet> <servlet-mapping>
      <servlet-name>ServletDemoSecond</servlet-name>
      <url-pattern>/servlet/ServletDemoSecond</url-pattern>
      </servlet-mapping> </web-app>

      转载与:http://www.cnblogs.com/goody9807/archive/2007/06/13/782519.htm

JSP/SERVLET入门教程--Servlet 使用入门的更多相关文章

  1. c语言入门教程 / c语言入门经典书籍

    用C语言开始编写代码初级:C语言入门必备(以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言的数 ...

  2. 【转】c语言入门教程 / c语言入门经典书籍

    用C语言开始编写代码 初级:C语言入门必备 (以下两本书任选一本即可) C语言是作为从事实际编程工作的程序员的一种工具而出现的,本阶段的学习最主要的目的就是尽快掌握如何用c语言编写程序的技能.对c语言 ...

  3. 前端组件化Polymer入门教程(3)——快速入门

    本系列主要翻译官方的教程,因为国内目前这方面的资料太少了,但也不一定和官网的一样,反正就是自己想到哪就写到哪. 如果我没有说明,默认情况下index.html始终包含这段代码,后面将不会再贴上来. & ...

  4. Netty学习_Netty框架入门教程:Netty入门之HelloWorld实现

    我们可能都学过Socket通信/io/nio/aio等的编程.如果想把Socket真正的用于实际工作中去,那么还需要不断的完善.扩展和优化.比如很经典的Tcp读包写包问题,或者是数据接收的大小,实际的 ...

  5. 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)

    一.前言         早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基 ...

  6. python基础入门教程《python入门经典》

    第一章 在python中使用数字 1.用变量存储信息 1.1变量的类型 变量,用于存储很多不同的数据类型的信息. 基本数据类型 数据类型 存储内容 示例 integer 整   float 浮点   ...

  7. Hibernate入门教程(一):入门示例(Myeclipse)

    ●项目结构 ●本项目所用Hibernate版本为5.4.5.Final,导入jar只需lib目录下的required和MySQL所需的jar驱动 1.导入相关jar包(配置构建路径) 说明:本人已将所 ...

  8. 转:Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

    Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...

  9. Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

    Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...

  10. linux 入门教程

    linux入门教程 搜索 Linux入门教程 前言 第一章 关于Linux的历史 第二章 图形界面还是命令窗口 第三章 Linux操作系统的安装 第四章 初步进入linux世界 第五章 Linux系统 ...

随机推荐

  1. DB String Split sample

    以sqlserver为例进行说明,代码稍加修改,可以用于ORACLE. 字符串的拆分和聚合是数据库开发人员比较常见的任务. 关于字符串的聚合和拆分,sqlserver的标准解决方案是for xml p ...

  2. 【软件使用】用IntelliJ IDEA开发Android程序图解

    博主这里使用的最新的14.0.3版本,下载地址:http://www.jetbrains.com/idea/, 下载后直接安装就可以了. 环境: OS:Win 8 IDE:IntelliJ IDEA ...

  3. 怎么通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端?

    今天在论坛上看到这样一个问题,有必要编辑搜集下. 问题描述:怎么通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端 题主用jquery接收 <input name= ...

  4. 三维网格形变算法(Linear rotation-invariant coordinates和As-Rigid-As-Possible)

    在三维网格形变算法中,个人比较喜欢下面两个算法,算法的效果都比较不错, 不同的是文章[Lipman et al. 2005]算法对控制点平移不太敏感.下面分别介绍这两个算法: 文章[Lipman et ...

  5. 解决svn的working copy locked并且cleanup恢复不能的情况

    产生这种情况大多是因为上次svn命令执行失败且被锁定了. 如果cleanup没有效果的话只好手动删除锁定文件. cd 到svn项目目录下,然后执行如下命令 del lock /q/s 就把锁删掉了.

  6. mysql数据库的备份和导入

    mysqldump -u root -p --default-character-set = gbk -d demo_db>c:/appserv/www/demosql/sql1.sql//将数 ...

  7. 使用gulp插件来自动刷新页面。

    http://itakeo.com/blog/2016/05/19/gulpreload/?none=123 使用gulp插件来自动刷新页面.再也不用修改一次,按一下F5了. 首选通过npm inst ...

  8. ie6,ie7兼容性总结(转)

    其实浏览器的不兼容,我们往往是各个浏览器对于一些标准的定义不一致导致的,因此,我们可以进行一些初始化,很多问题都很轻松解决. 下面是14条特殊情况仅供参考: 1. 文字本身的大小不兼容.同样是font ...

  9. Sql语句里的递归查询

    Sql语句里的递归查询 SqlServer2005和Oracle 两个版本 以前使用Oracle,觉得它的递归查询很好用,就研究了一下SqlServer,发现它也支持在Sql里递归查询举例说明:Sql ...

  10. Xcode7 项目转 Xcode6 时 出现问题

    target specifies product type 'com.apple.product-type.bundle.ui-testing', but there's no such produc ...