一、由HelloWorld第一个servlet程序认识与学习Servlet

重点及标注:其他鲜艳色

注释:红色

Servlet 实例

Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 //(继承)javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。

To implement this interface, you can write a generic servlet that extends javax.servlet.GenericServlet or an HTTP servlet that extends javax.servlet.http.HttpServlet API文档中如是说到

//首先重要的是实现Servlet这个接口。定义也说到,实现了这个接口的,就是一个Servlet。至于怎么实现呢,你可以继承J2EE中已经实现了这个Servlet接口的HttpServlet类和GenericServlet类,还可以自己另行编写一个,自己实现Servlet接口。

//①servlet并不在API的JDK的而是在j2ee中,在JDK是找不到sevlet相关的api信息的

javax.servlet.http 
Class HttpServlet

java.lang.Object
  javax.servlet.GenericServlet
      javax.servlet.http.HttpServlet

All Implemented Interfaces:

java.io.Serializable, ServletServletConfig


public abstract class HttpServlet extends GenericServlet

implements java.io.Serializable

Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:       

 

                                                                                                    //重新学习抽象类

抽象类里可以有一般方法并且可以只有一般方法,(即无抽象方法)但即使一个抽象类里没有抽象方法,它还是不能被实例化的
②抽象方法里的构造方法就是一般方法,由于抽象类不能被实例化即不能被new,所以它里面的构造方法只能被子类的构造方法所调用

③抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类

当一个方法为抽象方法时,意味着这个方法必须被子类的方法所覆盖掉(即所有在抽象类中出现的方法(构造方法除外),都要出现在继承它的子类中,普通继承则不用)(同时也证明:继承一个类的时候,虽然①要么父类的方法没被写出来,并不代表子类中没有这个方法,②在子类中有这个方法的相关代码,证明这个方法被覆盖了即重写了,其他没有重写的方法虽然在子类的代码中没有出现,但子类是有这个方法的,不然继承一个父类还弄得子类包含父类的所有的代码且拓展,那就起不到继承的写少一点代码的作用啦),因为根据③,你不全部实现的话,留有抽象方法的话其抽象类的子类仍然是抽象方法
 
 

④抽象类里的一般方法定义的写法与其他方法一样 

        //加了{}就等于实现了这个方法了
         //当然还要注意的是加了{}就不用再外面加分号了
         //因为加分号代表这是一个语句,{}表示什么都不做, 里面没 有语句,所以不用加 

abstract calss Shape{ 
     protected String name;
     public Shaape(String xm){
     name=xm; 
     System.out.print("名称:"+name);
     } 
     abstract public double getArea();
    abstract public double getLength();   / /绝对不能加{},写成
}                                    /  / abstract public double getLength(){}都是错的 
                                            //加了{}就等于实现了这个方法了
                                          //当然还要注意的是加了{}就不用再外面加分号了
                           //因为加分号代表这是一个语句,{}表示什么都不做, 里面没                                      有语句,所以不用加 

 
  • doGet, if the servlet supports HTTP GET requests
  • doPost, for HTTP POST requests
  • doPut, for HTTP PUT requests
  • doDelete, for HTTP DELETE requests
  • init and destroy, to manage resources that are held for the life of the servlet
  • getServletInfo, which the servlet uses to provide information about itself

Hello World 示例代码

下面是 Servlet 输出 Hello World 的示例源代码:

// 导入必需的 java 库
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 扩展 HttpServlet 类
public class HelloWorld extends HttpServlet {  //继承了HttpServlet就不用再 implements 
                                                //Servlet了
 
  private String message;

  public void init() throws ServletException
  {
      // 执行必需的初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 设置响应内容类型
      response.setContentType("text/html");

      // 实际的逻辑是在这里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  
  public void destroy()
  {
      // 什么也不做
  }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值