原来后台是这样分辨浏览器请求的 浏览器发送请求给服务器 服务器通过反射辨别Servlet类 通过methodName分辨方法 妈妈再也不用担心我的学习了

简介: 原来后台是这样分辨浏览器请求的 浏览器发送请求给服务器 服务器通过反射辨别Servlet类 通过methodName分辨方法 妈妈再也不用担心我的学习了

浏览器会发送不用的请求给服务器,本质上每一个Servlet都是有一个映射名称,就比如说浏览器发送 /courseContent 给服务器时候,此时服务器会调用 有@WebServlet("/courseContent")的Servlet类,每一个servlet类中都会有很多的方法。


所以每一次浏览器向后台请求数据时候都会带入一个叫methodName的参数,通过methodName值来匹配调用哪一个具体的方法,就比如说当methodName = findCourseList , 这就说明要找的是叫findCourseList的这个方法。最简单的就是用过if语句进行字符串匹配来调方法,但是如果一个Servlet中存在很多很多的方法时候,显然这样子是不合适的,所以就可以改为使用反射技术动态获取方法了。


//        2. 优化if判断,使用反射的方式
        if (methodName  != null) {
            try {
//            1. 获取字节码文件对象  this == 访问的是哪一个servlet,this就等于哪一个servlet
                Class c = this.getClass();
//            2. 根据传入的方法名称,获取对应的方法对象
                Method method = c.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
                method.invoke(this,req,resp);
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }


通过this.getClass获取当前运行的Servlet字节码对象,然后通过.getMethod()方法获取对象的方法,通过invoke就可以将此方法激活,实现了调用请求的方法。通过反射技术动态调用了方法。


补充:this.getClass 返回值为 当前运行时类的Class对象。


相关文章
|
21天前
|
运维 Prometheus 监控
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
如何在测试环境中保持操作系统、浏览器版本和服务器配置的稳定性和一致性?
|
4月前
|
开发框架 缓存 .NET
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
并发请求太多,服务器崩溃了?试试使用 ASP.NET Core Web API 操作筛选器对请求进行限流
219 0
|
2月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
59 22
|
2月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
74 4
|
2月前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
56 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
33 1
|
4月前
|
存储 JavaScript 程序员
Vue学习之---浏览器本地存储(8/17)
这篇文章介绍了Vue中浏览器本地存储的使用方法,包括基础知识、localStorage和sessionStorage的代码实例及其测试效果,并提供了相关的API和操作示例。
Vue学习之---浏览器本地存储(8/17)
|
4月前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
|
4月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
38 3
|
4月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
35 1