zoukankan      html  css  js  c++  java
  • Servlet接口实现类开发步骤

    Servlet编程方式

    • 1、实现Servlet接口
      这种情况Servlel不是独立的应用程序,没有main( )方法,而是生存在容器中,由容器来管理。编程时需要实现javax.servlet.Servlet接口的5个方法。
    • 2、继承GenericServlet类
      由javax. servlet包提供个抽象类GenericSerlet。它给出了Servlet接口中除service()方法外的其他4个方法的简单实现,并且还实现了ServletConfig接口,编程时直接继承这个类,代码会简化很多。
    • 3、继承HttpServlet、覆盖doXXX( )方法
      在大部分网络中,都是客户端通过HTTP协议来访问服务器端的资源。为了快速开发应用于HTTP协议的Servlet类,在javax.servlet.http包中提供了一个抽象类HttpServlet,它继承了GenericServlet类。编写一个Servlet类继承HttpServlet,只需要覆盖相应的doxx()方法即可。
    • 4、继承HttpServlet、重写service( )方法
      其本质就是扩展HttpServlet类,用户只需重写service( )方法,Servlet模块执行service()方法时,会自动调用doPost()和doGet()这两个方法,实现Servlet的逻辑处理功能。

    步骤

    第一步:创建一个Java类继承HttpServlet,使之成为一个Servlet接口实现类。
    第二步:重写HttpServlet父类两个方法,doGet或doPost。
    第三步:将Servlet接口实现类信息注册到Tomcat服务器(在web.xml里面部署)。

    xml配置信息

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app ...>
        <!--将Servlet接口实现类的类路径地址交给Tomcat-->
        <servlet>
            <!--声明一个变量存储servlet接口实现类的类路径-->
            <servlet-name>自己起的名字</servlet-name>
            <!--声明servlet接口实现类的类路径-->
            <servlet-class>servlet的类名,如果有包加上包名,注意这里的类名不要加.java</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>和servlet-name里的值一样</servlet-name>
            <url-pattern>该servlet运行的路径名,随便起名字,但是前面要加上“/”</url-pattern>
        </servlet-mapping>
    </web-app>
    

    代码示例

    在这里插入图片描述

    package com.zyh.controller;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * 直接实现servlet接口的话需要实现五个方法:
     *     init
     *     getServletConfig
     *     getServletInfo
     *     destroy
     *     service---只有这个方法有用
     * 为什么?
     *     Tomcat根据Servlet规范调用Servlet接口实现类规则:
     *     1、Tomcat有权创建Servlet接口实现类实例对象:
     *     Servlet oneservlet = new OneServlet();
     *     2、Tomcat根据实例对象调用service方法处理当前请求:
     *     oneServlet.service();
     */
    
    public class OneServlet extends HttpServlet {
    
        /*
         * 调用doGet还是doPost方法?
         * 由父类HttpServlet决定(看源码,大概在227行)
         * */
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("doGet");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("doPost");
        }
    }
    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>demo</servlet-name>
            <servlet-class>com.zyh.controller.OneServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>demo</servlet-name>
            <url-pattern>/myserv</url-pattern>
        </servlet-mapping>
    </web-app>
    

    访问:
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    类和结构体的区别
    List中的select和where 方法
    js报错,Uncaught SyntaxError: Unexpected token }
    去除list集合中重复项的几种方法
    new
    Dynamic
    ie8下缓存
    datagrid中动态url
    从后台序列化后的类的字符串
    抽象工厂
  • 原文地址:https://www.cnblogs.com/yu011/p/13706014.html
Copyright © 2011-2022 走看看