说在前面

昨天 完成了文件上出的学习和实践
今天 学习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 直接写相应的方法即可,不必再用选择结构判断!

最新文章

  1. Android笔记:android的适配
  2. $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
  3. 【InstallShield】 为什么卸载后有的文件没有删掉
  4. [BZOJ 3282] Tree 【LCT】
  5. testNg自动化,读取excel的数据
  6. ie8下下拉菜单文字为空
  7. SpringWeb增删改查
  8. JSTL常用标签
  9. shell编写mysql抽取数据脚本
  10. CF877F
  11. BZOJ_4590_[Shoi2015]自动刷题机_二分答案
  12. 2018-2019-2 20165232《网络对抗技术》Exp1 缓冲区溢出实验
  13. core_cm4_simd.h文件是干嘛的?
  14. element后太侧边
  15. js 对于jquery each 多层循环的问题和原生js多层循环问题
  16. Selenium2+python-unittest之装饰器(@classmethod)
  17. c++ 用构造函数
  18. spring Security简介
  19. Mac安装最新tensorflow遇到的坑,记录下方便后人
  20. 使用POI对excel进行操作生成二维数组

热门文章

  1. android sqlite 图片保存和读出 用流 转字节码
  2. Linux centosVMware vim 编辑模式、vim命令模式、vim实践
  3. bootstrap如何设置每一个选项卡对应一个页面
  4. JDBC--使用beanutils工具类操作JavaBean
  5. IOS 常用功能代码
  6. LVS负载均衡基本原理
  7. InnoDB 和 MyISAM的索引区别
  8. 解决Google浏览器不能打开kubernetes dashboard方法【转】
  9. Swift Access Levels (变量关键字访问权限)
  10. PLsql的汉化工具