GenericServlet 类

GenericServlet
1、GenericServlet概述
        GenericServlet是Servlet接口的实现类,我们可以通过继承GenericServlet来编写自己的Servlet。
    下面是GenericServlet类的源代码:

    GenericServlet.java
    public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
        private static final long serialVersionUID = 1L;
        private transient ServletConfig config;
        public GenericServlet() {}

        @Override
        public void init(ServletConfig config) throws ServletException {
            this.config = config;
            this.init();
        }
        [这个方法是GenericServlet自己的方法,而不是从Servlet继承下来的。]
        public void init() throws ServletException {}
                
        @Override
        public abstract void service(ServletRequest req, ServletResponse res) 
                throws ServletException, IOException;
        @Override
        public ServletConfig getServletConfig() {
            return config;
        }
        @Override
        public String getServletInfo() {
            return "";
        }
        @Override
        public void destroy() {}

                
        @Override
        public String getInitParameter(String name) {
            return getServletConfig().getInitParameter(name);
        }
        @Override
        public Enumeration<String> getInitParameterNames() {
            return getServletConfig().getInitParameterNames();
        }
        @Override
        public ServletContext getServletContext() {
            return getServletConfig().getServletContext();
        }
        @Override
        public String getServletName() {
            return config.getServletName();
        }

        public void log(String msg) {
            getServletContext().log(getServletName() + ": " + msg);
        }
        public void log(String message, Throwable t) {
            getServletContext().log(getServletName() + ": " + message, t);
        }

    }

2、GenericServlet的init()方法
        在GenericServlet中,定义了一个ServletConfig config实例变量,并在init(ServletConfig)方法中
    把参数ServletConfig赋给了实例变量。然后在该类的很多方法中使用了实例变量config。如果子类覆盖了
    GenericServlet的init(StringConfig)方法,那么this.config=config这一条语句就会被覆盖了,也就是说
    GenericServlet的实例变量config的值为null,那么所有依赖config的方法都不能使用了。如果真的希望完成
    一些初始化操作,那么去覆盖GenericServlet提供的init()无参方法,它是没有参数的init()方法,
    它会在init(ServletConfig)方法中被调用。

3、实现了ServletConfig接口
  GenericServlet还实现了ServletConfig接口,所以可以直接调用getInitParameter()、getServletContext()
    等ServletConfig的方法。
--------------------- 
 

转载于:https://my.oschina.net/oszzq/blog/3019484

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您可以按照以下步骤编写一个符合您要求的Servlet: 1. 创建一个Java,继承javax.servlet.GenericServlet。 2. 在中覆盖init()、service()和destroy()方法。 3. 在init()方法中,您可以添加一些代码来观察servlet的出生过程。比如,您可以使用日志记录工具将一些信息记录到日志文件中。 4. 在service()方法中,您可以编写一些逻辑来实现servlet的主要功能。比如,您可以获取请求参数,从数据库中读取数据等等。 5. 在destroy()方法中,您可以添加一些代码来观察servlet的销毁过程。比如,您可以释放一些资源,关闭一些连接等等。 以下是一个示例代码: ``` import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class MyServlet extends GenericServlet { public void init(ServletConfig config) throws ServletException { // 观察servlet的出生过程 log("MyServlet is born."); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { // 实现servlet的主要功能 response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head><title>MyServlet</title></head><body>"); out.println("<h1>Hello, World!</h1>"); out.println("</body></html>"); out.close(); } public void destroy() { // 观察servlet的销毁过程 log("MyServlet is destroyed."); } } ``` 您可以部署这个servlet到Web服务器中,并访问它的URL,观察它的整个生命周期。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值