2.2 学习总结 之 servlet 的两次抽取
2024-09-06 03:38:45
说在前面
昨天 | 完成了文件上出的学习和实践 |
今天 | 学习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 直接写相应的方法即可,不必再用选择结构判断!
最新文章
- Android笔记:android的适配
- $(document).ready(){}、$(fucntion(){})、(function(){})(jQuery)onload()的区别
- 【InstallShield】 为什么卸载后有的文件没有删掉
- [BZOJ 3282] Tree 【LCT】
- testNg自动化,读取excel的数据
- ie8下下拉菜单文字为空
- SpringWeb增删改查
- JSTL常用标签
- shell编写mysql抽取数据脚本
- CF877F
- BZOJ_4590_[Shoi2015]自动刷题机_二分答案
- 2018-2019-2 20165232《网络对抗技术》Exp1 缓冲区溢出实验
- core_cm4_simd.h文件是干嘛的?
- element后太侧边
- js 对于jquery each 多层循环的问题和原生js多层循环问题
- Selenium2+python-unittest之装饰器(@classmethod)
- c++ 用构造函数
- spring Security简介
- Mac安装最新tensorflow遇到的坑,记录下方便后人
- 使用POI对excel进行操作生成二维数组