当前位置:   article > 正文

【JavaWeb】创建servlet实例的方法_java 再已有容器中 添加 注册servlet

java 再已有容器中 添加 注册servlet

1.通过实现Servlet接口的Servlet实例

需要实现Servlet接口来创建任何servlet(直接或间接)。它提供了3个生命周期方法,用于初始化servlet,服务请求以及销毁servlet2个非生命周期方法。

Servlet接口的方法

方法描述
public void init(ServletConfig config)初始化servlet它是servlet的生命周期方法,由web容器调用一次。
public void service (ServletRequest request, ServletResponse response)为传入的请求提供响应它由Web容器的每个请求调用。
public void destroy()仅被调用一次,并且表明servlet正在被销毁。
public ServletConfig getServletConfig()返回ServletConfig对象。
public String getServletInfo()返回有关servlet的信息,如作者,版权,版本等
public class MyServlet implements Servlet {
    ServletConfig servletConfig = null;

    /**
     * 初始化servlet,它是servlet的生命周期方法,由web容器调用一次。
     * @param servletConfig servlet的配置
     */
    @Override
    public void init(ServletConfig servletConfig){
        this.servletConfig = servletConfig;
        System.out.println("servlet is initialized");
    }

    /**
     * 为传入的请求提供响应。它由Web容器的每个请求调用。
     * @param request 请求
     * @param response 响应
     * @throws IOException
     * @throws ServletException
     */
    @Override
    public void service(ServletRequest request, ServletResponse response) throws IOException, ServletException {
        // 设置响应内容类型器
        response.setContentType("text/html");
        // 获取响应输出对象
        PrintWriter out = response.getWriter();

        out.print("<html><body>");
        out.print("<div style='text-align:center;'><h1>Hello Simple Servlet</h1></div>");
        out.print("</body></html>");
    }

    /**
     * 仅被调用一次,并且表明servlet正在被销毁。
     */
    @Override
    public void destroy(){
        System.out.println("servlet is destroyed");
    }

    /**
     * 返回ServletConfig对象。
     * @return 返回servlet的配置对象
     */
    @Override
    public ServletConfig getServletConfig(){
        return servletConfig;
    }

    /**
     *返回有关servlet的信息,如作者,版权,版本等。
     * @return 返回servlet的信息
     */
    @Override
    public String getServletInfo(){
        return "copyright 2012-2020";
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

2.通过继承GenericServlet类的Servlet实例

GenericServlet类实现了ServletServletConfigSerializable接口。它提供除了service方法之外,还实现了这些接口的所有方法。GenericServlet类可以处理任何类型的请求,因此它与协议无关。可以通过继承GenericServlet类并提供服务方法的实现来创建通用的servlet

GenericServlet类的方法

序号方法描述
1public void init(ServletConfig config)用于初始化servlet
2public abstract void service(ServletRequest request, ServletResponse response)为传入请求提供服务,每当用户请求一个servlet时调用它。
3public void destroy()在整个生命周期中仅调用一次,以表明servlet正在被销毁。
4public ServletConfig getServletConfig()返回ServletConfig对象
5public String getServletInfo()返回有关servlet的信息,如作者,版权,版本等。
6public void init()这是servlet程序员的一个方便的方法,现在不需要调用super.init(config)
7public ServletContext getServletContext()返回ServletContext的对象。
8public String getInitParameter(String name)返回给定参数名称的参数值。
9public Enumeration getInitParameterNames()返回web.xml文件中定义的所有参数。
10public String getServletName()返回servlet对象的名称。
11public void log(String msg)在servlet日志文件中写入给定的消息。
12public void log(String msg,Throwable t)将说明性消息写入servlet日志文件和堆栈跟踪。
public class MyServlet1 extends GenericServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response) throws IOException, ServletException {
        // 设置响应内容选择器
        response.setContentType("text/html");
        // 获取响应输出对象
        PrintWriter out = response.getWriter();
        out.print("<html><body>");
        out.print("<div style=\"text-align:center;\"><h1>Hello Generic Servlet</h1></div>");
        out.print("</body></html>");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

通过继承HttpServlet类的Servlet实例

HttpServlet类的方法

HttpServlet类扩展了GenericServlet类并实现了Serializable接口。它提供了http特定的方法,如:doGet,doPostdoHeaddoTrace等.

序号方法描述
1'public void service(ServletRequest req,ServletResponse res)`通过将请求和响应对象转换为http类型将请求调度到受保护的service方法。
2protected void service(HttpServletRequest req, HttpServletResponse res)从service方法接收请求,并根据传入的http请求类型将请求发送到doXXX()方法。
3protected void doGet(HttpServletRequest req, HttpServletResponse res)处理GET请求,它由Web容器调用。
4protected void doPost(HttpServletRequest req, HttpServletResponse res)处理POST请求,它由Web容器调用。
5protected void doHead(HttpServletRequest req, HttpServletResponse res)处理HEAD请求,它由Web容器调用。
6protected void doOptions(HttpServletRequest req, HttpServletResponse res)处理OPTIONS请求,它由Web容器调用。
7protected void doPut(HttpServletRequest req, HttpServletResponse res)处理PUT请求,它由Web容器调用。
8protected void doTrace(HttpServletRequest req, HttpServletResponse res)处理TRACE请求,它由Web容器调用。
9protected void doDelete(HttpServletRequest req, HttpServletResponse res)处理DELETE请求,它由Web容器调用。
10protected long getLastModified(HttpServletRequest req)返回自1970年1月1日GMT以来HttpServletRequest上次修改的时间。
public class HelloServlet extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response){

        try {
            response.getWriter().println("<h1>Hello Servlet!</h1>");
            response.getWriter().println(new Date().toString());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/149536
推荐阅读
相关标签
  

闽ICP备14008679号