前段时间加入朋友的一个java讨论群。朋友的讨论主题是反射和rtti的区别和联系,这个话题很令人迷茫。终究是一个虚的话题。有一次我们在群中讨论时,大家都意识到了反射的重要性,尤其是在spring,struts等通用性框架中的大量使用。但是也存在一些误解的。有的网友把Object和Class混为一个概念。这是很危险的想法。那么Class又是一个怎么样的类呢!Class是一个描述类本身有那些属性、构造方法和一般方法的类,说起来好像有点绕口!
如何获取Class对象呢,它不能用构造方法初始化,如果获取没有具体类的Class对象 String.class 还有可以通过 Class.foName("java.lang.String"); Class.forName("java.lang.String").newInstance()创建类的一个实例。
实现反射的类在java.lang.reflect包中。例如Filed 和 Method。实现类似DispatchAction的这样方法分发,Method就很容易实现。我们以servlet为基础实现servlet的按方法名进行分发。思路很简单。首先制定一个父类实现方法分发,我们以后要写的servlet继承这个父类就可以了,这样我们重写父类的doPost()和doGet()方法。在重写的方法通过Method获取类本身的Method[],和传入的方法名参数比较如果存在则调用
Class clazz = this.getClass();
String methodName = request.getParameter("method");
Method[] methods;
try {
Object obj = clazz.newInstance();
methods = clazz.getDeclaredMethods();
for (Method method:methods){
if(method.getName().equals(methodName)){
method.invoke(obj, new Object[]{request,response});
}
}
子类继承该servlet就可以了
package com.zhh.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zhh.multiaction.MultiServlet;
public class HelloAction extends MultiServlet {
public void hello(HttpServletRequest request,HttpServletResponse response) throws IOException{
PrintWriter out = response.getWriter();
out.print("hello");
}
public void world(HttpServletRequest request,HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("world");
}
}
分享到:
相关推荐
### Java反射机制与NoSuchMethodException详解 在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改自身结构和行为。然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang....
在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种...在项目中,`DispathAction.ppt`可能包含关于`DispatchAction`的详细讲解和示例,而`dispacthertest`可能是与这两个组件相关的测试代码或示例应用。
### DispatchAction、LookupDispatchAction、SwitchAction 的应用详解 #### 一、DispatchAction 的应用 **DispatchAction** 是 Struts 框架中一个非常有用的类,它位于 `org.apache.struts.actions` 包中。其核心...
在实际的Web应用程序开发中,通常一个URL对应一个Action,而`DispatchAction`则允许一个Action处理多个不同的请求,每个请求映射到Action中的不同方法,提高了代码的可维护性和组织性。 `DispatchAction`的核心机制...
Struts是Java Web开发中的一款经典MVC框架,它的核心组件之一是DispatchAction,这个组件在处理用户请求时起到了至关重要的作用。DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的...
总之,Struts DispatchAction是Java Web开发中一种有效的请求分发机制,它允许在一个Action类中组织和管理多个业务处理方法,提高了代码的可读性和可维护性。然而,随着技术的发展,如Struts2的出现,开发者可以选择...
Struts框架是Java Web开发中一个非常重要的MVC(Model-View-Controller)框架,它为开发者提供了一种结构化的方式来组织和管理应用程序。在早期的Struts版本中,`DispatchAction`类是一个核心组件,它允许我们通过...
Struts框架是Java Web开发中常用的一个MVC(Model-View-Controller)框架,它极大地简化了企业级应用的开发工作。DispatchAction是Struts框架中的一个动作类,用于处理用户的请求并转发到相应的业务逻辑。在这个场景...
Struts 是一个经典的Java Web开发框架,用于构建企业级的MVC(模型-视图-控制器)应用程序。在Struts框架中,`DispatchAction`是一个关键组件,它扮演着控制器的角色,负责处理用户请求并调用相应的业务逻辑。在本篇...
SSH整合是Java Web开发中的一种常见技术组合,它由Spring、Struts和Hibernate三个框架组成。这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现...
Struts是Java Web开发中的一款经典MVC框架,它的出现极大地简化了企业级应用的构建。在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑...
java8 源码 联系方式 手机:15018735217 Email: QQ号:31342108 个人信息 邓海二/男/1986 本科/广州大学计算机系 工作年限:8年 ...DispatchAction 的思路自己写了一个只有一个 Java 文件的控制器,还有一个U
本文总结了 Java 面试中的一些常见问题,涵盖了 Ajax 的原理、优缺点、 DispatchAction 和 Action 的区别等知识点。 Ajax 的原理 Ajax 是一种异步请求技术,通过 XmlHttpRequest 对象来向服务器发送异步请求,从...
它在2000年代初期非常流行,为MVC(Model-View-Controller)设计模式提供了一个实现,使得开发者能够更好地组织和管理Java Servlets和JSP(JavaServer Pages)应用程序。Struts1的核心理念是通过分离业务逻辑、数据...
- `DepartmentAction.java`: 实现DispatchAction,包括`executeAdd()`, `executeDelete()`, `executeUpdate()`等方法。 - `struts-config.xml`: 配置DispatchAction及其映射规则。 - `department.jsp`: 显示部门...
【Java工程师项目经验】在Java工程师的简历中,通常会包含以下几个关键知识点: 1. **CoreJava编程**:这是Java的基础,包括面向对象编程、集合框架、多线程、异常处理、I/O流等,良好的代码规范和注释习惯是专业...
Struts框架是Java Web开发中的一个关键组件,属于SSH(Struts、Spring、Hibernate)三大框架之一。它提供了一种模型-视图-控制...理解并熟练运用DispatchAction,能帮助开发者更好地利用Struts框架构建复杂的应用程序。
Spring框架是Java企业级应用的核心组件,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,简化了对象的创建和管理。`getAvailableLocales`可能涉及到Spring的国际化(I18N)支持,允许应用程序根据用户的选择或...
**应用服务器**:Tomcat 6.0,为Java Web应用程序提供运行环境。 #### 项目二:NETCTOSS经营支持系统 **项目简介**:NETCTOSS经营支持系统主要目的是为运营商提供经营管理支持,包括但不限于用户管理、计费管理等...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。