• 2.2 学习总结 之 servlet 的两次抽取


    说在前面

    昨天 完成了文件上出的学习和实践
    今天 学习servlet的两次抽取,以加快编写工程的速度

    一、servlet 抽取的原因:

      刚刚学习使用servlet写后台,往往只使用一个servlet来处理一个功能,但是随着项目规模加大,页面增多,众多的servlet让人很是心烦,这时候就需要向上抽取serlvet了,即将servlet按照模块来划分,比如注册和登录的servlet就放到user的servlet中。

    二、servlet 的第一次抽取

      使用选择结构,页面提交请求是加上一个method的参数,表示同一模块的不同功能,到selvlet中获取 method 再判断调用哪个方法即:

    1)界面的请求

     ......

    2)servlet的处理

     三、servlet的第二次抽取

      使用反射,通过一个字符串,来找到一个方法

    1、注意事项:

    1)method所带参数,必须与方法名相同

    2)方法必须是共有的(public)

    2、界面请求相同

    3、selvlet 处理

    1)、创建基础selvlet 类,实现通过一个字符串,来找到一个方法

    package com.me.web.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.lang.reflect.Method;
    @WebServlet("/BaseServlet")
    @SuppressWarnings("all")
    public class BaseServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        public BaseServlet() {
            super();
        }
    
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
            
            try {
                //1、获得请求的method的名称
                String methodName = request.getParameter("method");
                //2、获得当前被访问的对象的字节码对象
                Class clazz = this.getClass();//ProductServlet.class ---- UserServlet.class
                //3、获得当前字节码对象的中的指定方法
                Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
                //4、执行相应功能方法
                method.invoke(this, request,response);
                
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }

    2)、其他的selvlet继承 BaseServlet 直接写相应的方法即可,不必再用选择结构判断!

  • 相关阅读:
    KindEditor
    java大文件(百M以上)的上传下载分享
    java大文件(百M以上)的上传下载问题
    java大文件(百M以上)的上传下载方法
    java大文件(百M以上)的上传下载思路
    飞镖靶计分题[待]
    Hive高级(1):优化(1) 执行计划/ Fetch 抓取 /本地模式
    Hadoop基础:补充:Zookeeper的目录结构
    Hadoop基础:补充:hadoop的目录结构介绍
    java 基本语法(二十):mysql JDBC URL格式各个参数详解
  • 原文地址:https://www.cnblogs.com/20183544-wangzhengshuai/p/12252106.html
Copyright © 2020-2023  润新知