Servlet三种创建方式
所以,使用 Servlet 创建动态网页的步,就是创建 Servlet 类。
Servlet 规范的最顶层是一个名为 javax.servlet.Servlet 的接口,所有的 Servlet 类都要直接或者间接地实现该接口。直接实现 Servlet 接口不太方便,所以 Servlet 又内置了两个 Servlet 接口的实现类(抽象类),分别为 GenericServlet 和 HttpServlet,因此,创建 Servlet 类有如下三种方式:
实现 javax.servlet.Servlet 接口,重写其全部方法。
继承 javax.servlet.GenericServlet 抽象类,重写 service() 方法。
继承 javax.servlet.http.HttpServlet 抽象类,重写 doGet() 或 doPost() 方法。
Servlet、GenericServlet 、HttpServlet 的关系
下图展示了 Servlet、GenericServlet 以及 HttpServlet 三者之间的关系,其中 MyServlet 是我们自定义的 Servlet 类。
由上图可知:
GenericServlet 是实现了 Servlet 接口的抽象类。
HttpServlet 是 GenericServlet 的子类,具有 GenericServlet 的一切特性。
Servlet 程序(MyServlet 类)是一个实现了 Servlet 接口的 Java 类。
Servlet 接口
javax.servlet.Servlet 是 Servlet API 的核心接口,所有的 Servlet 类都直接或间接地实现了这一接口。Servlet 接口中定义了 5 个方法,下面我们对他们做简单的介绍。
返回值 | 方法 | 备注 |
|---|---|---|
void | init(ServletConfig config) | Servlet 实例化之后,由 Servlet 容器调用,用来初始化 Servlet 对象。该方法只能被调用一次。 参数 config 用来向 Servlet 传递配置信息。 |
void | service(ServletRequest req,ServletResponse res) | Servlet 容器调用该方法处理客户端请求。 |
void | destroy() | 服务器关闭、重启或者 Servlet 对象被移除时,由 Servlet 容器调用,负责释放 Servlet 对象占用的资源。 |
ServletConfig | getServletConfig() | 该方法用来获取 ServletConfig 对象,该对象中包含了 Servlet 的初始化参数。 |
String | getServletInfo() | 该方法用于获取 Servlet 的信息,例如作者、版本、版权等。 |
示例 1
通过实现 Servlet 接口创建 Servlet,示例代码如下。
package net.biancheng.www;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
public class MyServlet implements Servlet {
//Servlet 实例被创建后,调用 init() 方法进行初始化,该方法只能被调用一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
//返回 ServletConfig 对象,该对象包含了 Servlet 的初始化参数
@Override
public ServletConfig getServletConfig() {
return null;
}
//每次请求,都会调用一次 service() 方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//设置字符集
servletResponse.setContentType("text/html;charset=UTF-8");
//使用PrintWriter.write()方法向前台页面输出内容
PrintWriter writer = servletResponse.getWriter();
writer.write("编程帮欢迎您的到来,网址: www.biancheng网站站点" rel="nofollow" />
package net.biancheng.www;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
public class MyServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//设置字符集
servletResponse.setContentType("text/html;charset=UTF-8");
//使用PrintWriter.write()方法向前台页面输出内容
PrintWriter writer = servletResponse.getWriter();
writer.write("编程帮欢迎您的到来,网址: www.biancheng网站站点" rel="nofollow" />
package net.biancheng.www;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//使用PrintWriter.write()方法向前台页面输出内容
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("编程帮欢迎您的到来,网址: www.biancheng网站站点" rel="nofollow" />
- 随机文章
- 核心危机(核心危机魔石合成攻略)
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 儿童教育文章(儿童教育)
- 光遇花手先祖位置(安卓光遇手花先祖)
- 广州4a广告公司(广州4a广告公司创意总监年薪)
- xboxones(xboxone手柄怎么配对主机)
- 陈武简历
- 帆船比赛(帆船比赛视频)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 儋州市第二中学(儋州市第二中学录取分数线)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 拆奶罩
- 东天目山(东天目山景区)
- 杭同(杭同培训中心怎么样)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 大松电饭煲(美的大松电饭煲)
- 服饰加盟(服饰加盟店招商)
- 点对点短信息(点对点短信息费是什么意思)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 查传倜(查传倜个人生活)
- 广州晓港公园(广州晓港公园正门图片)
- 钢筋等级符号(钢筋等级符号电脑怎么输入)
