利用java反射机制来实现一个servlet处理多种请求

     2022-05-04     480

关键词:

如果我们想在一个servlet中处理多种请求(比如新闻的添加、删除),简单的可以在jsp提交表单的action路径中添加一个键值对,然后再servlet中接收后根据不同的值来调用不同的方法。

jsp端

1 <form action="newsServlet?method=add" method="post">
2     <input type="text" ..>
3     <input type="submit"..>
4 </form>

servlet端

1 String method = request.getParameter("method");
2         if(method.equals("add")){
3             //处理添加
4         }
5         else if(method.equals("delete")){
6             //处理删除
7         }

接下来说一下利用java的反射机制来处理相应的业务。

jsp端

<form action="add.newsServlet" method="post">
     <input type="text" ..>
     <input type="submit"..>
 </form>

<form action="delete.newsServlet" method="post">
     <input type="text" ..>
     <input type="submit"..>
</form>

web.xml配置servlet-mapping的url-pattern为"*.newsServlet"

servlet端

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {		
		req.setCharacterEncoding("UTF-8");
		resp.setContentType("UTF-8");
		String servletPath = req.getServletPath();
        //去掉servlet路径中前面的/和后面的.newsServlet,只留下中间的请求类型
		String methodName = servletPath.substring(1);
		methodName = methodName.substring(0, methodName.length()-12);
		System.out.println(methodName);
		try {
        //利用反射得到对应请求类型方法的信息   
			Method method = getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
//利用反射调用执行方法
			method.invoke(this, req,resp);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

 

 

  当然servlet还要对应着add.newsServlet和delete.newsServlet实现对应的add(HttpServletRequest req, HttpServletResponse resp),和delete(HttpServletRequest req, HttpServletResponse resp)方法。

  

 

利用反射机制实现对象转map集合(代码片段)

分析问题问题主要有以下几点如何获取对象中的属性的名称?如何获取对象的属性值?如何这个属性被private修饰,该如何处理?返回的是一个对象该如何获取对象的属性参数呢?解决问题问题1:可以使用反射来获取POJO对象的get方法... 查看详情

java委托机制

...个语言级特性,而在Java语言中没有直接的对应,但是java利用反射即可实现委托!委托者接 查看详情

如何利用反射简化servlet操作

一、反射的实现  新建类BaseServlet,继承HttpServlet(不需要在web.xml文件中配置)  1、在doPost()方法中处理请求乱码,并调用doGet()方法    //处理post请求乱码,只需要在getParamter方法第一次调用前,设置request的编码   ... 查看详情

java反射机制的实现原理

反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。下面具体介绍一下java的反射机制。这里你将颠覆原来对java的理解。Java的反射机制的实现要... 查看详情

js反射机制

...能够在运行时知道自己有哪些方法和属性。在JavaScript中利用for(…in…)语句实现反射在JavaScript中有一个很方便的语法来实现反射,即for(…i 查看详情

类加载机制和反射

第18章 类加载机制和反射java类加载器处理根类加载器之外,其他都是用java写的18.1类的加载、连接和初始化系统可能在第一次使用某一个类时加载这个类,也可能采用预加载机制来加载某一个类18.1.1JVM和类当调用java命令... 查看详情

如何利用缓存机制实现java类反射性能提升30倍

一次性能提高30倍的JAVA类反射性能优化实践。文章来源:宜信技术学院&宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红《JAVA类反射技术&优化》分享者:宜信支付结算部支付研发团队高级工程师... 查看详情

如何利用java的反射机制动态创建对象

Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。反... 查看详情

如何利用java反射构造一个类,使之实现一个接口和一些功能

由于做工具包需要泛化,现需要通过java的反射API实现题述要求,详述如下:已知类A和接口CpublicclassApublicvoidfunc()publicinterfaceCpublicvoidexe();现需要通过反射机制生成如下所示的类BpublicclassBimplementsCprivateAa;publicvoidexe()a.func();其中,B... 查看详情

如何利用缓存机制实现java类反射性能提升30倍

1SSM框架简介SSM框架,即SpringMVC+Spring+Mybatis三个开源框架整合在一起的缩写。在SSM框架之前生产环境中SSH框架占据多数,即Struts2+Spring+Hibernate三个开源框架整合而成。后因Struts2爆出众多高危漏洞,导致目前SSM逐渐代替SSH成为主流... 查看详情

java反射机制与动态代理

...HadoopRPC时。用到了函数调用。函数调用都是採用的java的反射机制和动态代理来实现的,所以如今回想下java的反射和动态代理的相关知识。一、反射JAVA反射机制定义:JAVA反射机制是java程序在执行状态中。对于随意一个类,都能... 查看详情

反射基础(代码片段)

Java反射机制其实如果没有一个具体的应用的话我们很难体会到反射的好处 一、认识反射机制:1.反射机制的概念Java编程开发之所以会存在有反射机制,最为重要的原因是可以使Java编写代码更加的灵活,而这种灵活如果要想... 查看详情

045-利用反射机制,简单的实现php插件模式(代码片段)

<?php//利用反射机制,简单的实现PHP插件模式#假设,我们有一款开源产品,所有开发者都必须在我定制的需求之上,进行二次开发,#而开发完成后的新模块,就是一个不一样的新插件,可以放在特定的位置进行自动加载#这是... 查看详情

java讲课笔记36:初探反射机制

...Java反射的动态性质(三)如何理解Java反射的原理(四)利用反射可实现的功能二、Java反射常用API三、使用反射的基本步骤四、利用反射获取类的信息(一)获取Class对象1、调用对象的getClass()方法2、调用类的class属性3、使用Clas... 查看详情

软件测试——java反射机制

软件测试中出现私有方法时,需要使用反射机制来实现代码的测试。首先,简略说一下反射是什么~~https://www.cnblogs.com/zhaoguhong/p/6937364.htmlCOPY——JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方... 查看详情

计算机程序的思维逻辑(84)-反射

...些动态特性,包括反射、类加载器、注解和动态代理等。利用这些特性,可以以优雅的方式实现一些灵活和通用的功能,经常用于各种框架、库和系统程序中,比如:在63节介绍的实用序列化库Jackson,利用反射和注解实现了通用... 查看详情

反射实现servlet处理多个请求--server分发

importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResp 查看详情

javareflection(java反射)机制详解

反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。下面具体介绍一下java的反射机制。这里你将颠覆原来对java的理解。Java的反射机制的实现要... 查看详情