zoukankan      html  css  js  c++  java
  • JavaWeb 之 继承 HttpServlet 实现 Servlet

    一、继承 Servlet 的分发处理

      1、继承 Servlet 的自定义类

        可以观察到,当实现 Servlet 接口时,里面提供了一个 service() 方法,但是当从客户端对服务器进行访问的时候,无论是采用 GET 方式还是 POST 方式,都会执行这一个里面的代码。

        如果我们需要对不同的请求作出不同的处理,这时就需要进行分发处理。

        Servlet 示例:

     1 public class HelloServlet implements Servlet {
     2   /**
     3   * service 方法是专门用来处理请求和响应的
     4   * @param servletRequest
     5   * @param servletResponse
     6   * @throws ServletException
     7   * @throws IOException
     8   */
     9   @Override
    10   public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception{
    11        System.out.println("Hello Servlet 被访问了");
    13   }
    14}

      2、分发处理

        在 service() 方法中可以获取 servletRequest,然后把它强转成 HttpServletRequest 对象,就可以获取对应的请求方式,然后再处理。

        Demo:

     1 public class HelloServlet implements Servlet {
     2     /**
     3      * service 方法是专门用来处理请求和响应的
     4      *
     5      * @param servletRequest
     6      * @param servletResponse
     7      * @throws ServletException
     8      * @throws IOException
     9      */
    10     @Override
    11     public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws
    12             ServletException, IOException {
    13         System.out.println("3 service === Hello Servlet 被访问了");
    14         // 类型转换(因为它有 getMethod()方法)
    15         HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
    16         // 获取请求的方式
    17         String method = httpServletRequest.getMethod();
    18         if ("GET".equals(method)) {
    19             doGet();
    20         } else if ("POST".equals(method)) {
    21             doPost();
    22         }
    23     }
    24 
    25     /**
    26      * 做 get 请求的操作
    27      */
    28     public void doGet() {
    29         System.out.println("get 请求");
    30         System.out.println("get 请求");
    31     }
    32 
    33     /**
    34      * 做 post 请求的操作
    35      */
    36     public void doPost() {
    37         System.out.println("post 请求");
    38         System.out.println("post 请求");
    39     }
    40 }

    二、继承 HttpServlet 实现 Servlet 程序

      一般在实际项目开发中, 都是使用继承 HttpServlet 类的方式去实现 Servlet 程序:

      (1)编写一个类去继承 HttpServlet 类;

      (2)根据业务需要重写 doGet 或 doPost 方法;

      (3)到 web.xml 中的配置 Servlet 程序的访问地址;

      Servlet 类的代码:

     1 public class HelloServlet3 extends HttpServlet {
     2 
     3     /**
     4      * doPost() 在 post 请求的时候调用
     5      * @param request
     6      * @param response
     7      * @throws ServletException
     8      * @throws IOException
     9      */
    10     @Override
    11     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    12         System.out.println("HelloServlet3 的 doGet 方法");
    13     }
    14 
    15     /**
    16      * doGet() 在 get 请求的时候调用
    17      * @param request
    18      * @param response
    19      * @throws ServletException
    20      * @throws IOException
    21      */
    22     @Override
    23     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    24         System.out.println("HelloServlet3 的 doPost 方法");
    25     }
    26 }

      web.xml 中的配置信息

    1     <servlet>
    2         <servlet-name>HelloServlet3</servlet-name>
    3         <servlet-class>com.njf.java.HelloServlet3</servlet-class>
    4     </servlet>
    5     <servlet-mapping>
    6         <servlet-name>HelloServlet3</servlet-name>
    7         <url-pattern>/hello3</url-pattern>
    8     </servlet-mapping>

    三、使用开发工具创建 Servlet 程序

      1、使用 Eclipse 创建 Servlet 程序

        (1)菜单: new —> Servlet 程序

            

        (2)配置 Servlet 信息

            

      2、使用 Intellij IDEA 创建 Servlet 程序

        (1)菜单:new —> Serlvet 程序

            

        (2)配置 Servlet 信息

            

      3、共性

      可以发现,使用工具创建的 Servlet 是实现 HttpServlet这个类的,然后里面有构造器、doGet() 和 doPost() 方法。

  • 相关阅读:
    Android Studio 编译不通过,报错“找不到org.apache.http
    Android studio中出现非法字符时的部分解决方法
    eclipse项目导入到Android Studio Plugin with id 'android-library' not found
    将Eclipse代码导入到AndroidStudio的两种方式
    eclipse项目迁移到android studio(图文最新版)
    Android studio插件安装
    ViewPager PagerAdapter不更新视图
    Android:可扩展伸缩listview
    Android的崩溃错误报告之ACRA
    Android数据库ORMlite框架04
  • 原文地址:https://www.cnblogs.com/niujifei/p/15107560.html
Copyright © 2011-2022 走看看