重点及标注:其他鲜艳色
注释:红色
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, Servlet, ServletConfig
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{ |
doGet
, if the servlet supports HTTP GET requestsdoPost
, for HTTP POST requestsdoPut
, for HTTP PUT requestsdoDelete
, for HTTP DELETE requestsinit
anddestroy
, to manage resources that are held for the life of the servletgetServletInfo
, 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()
{
// 什么也不做
}
}