`
xiaoZ5919
  • 浏览: 404735 次
  • 性别: Icon_minigender_1
  • 来自: 安平人@北京
博客专栏
Group-logo
Netty学习笔记
浏览量:73198
社区版块
存档分类
最新评论

java反射应用-模拟dispatchaction

阅读更多

     前段时间加入朋友的一个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");
	}

}

 

 

    

2
1
分享到:
评论
1 楼 favor 2008-09-22  
收下了!谢了!

相关推荐

    java 反射 报错 no such method exception

    ### Java反射机制与NoSuchMethodException详解 在Java编程中,反射是一种强大的机制,允许程序在运行时检查和修改自身结构和行为。然而,当开发者尝试使用反射调用一个不存在的方法时,便会遇到`java.lang....

    DispatchAction

    在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种...在项目中,`DispathAction.ppt`可能包含关于`DispatchAction`的详细讲解和示例,而`dispacthertest`可能是与这两个组件相关的测试代码或示例应用。

    DispatchAction、LookupDispatchAction、SwitchAction的应用

    ### DispatchAction、LookupDispatchAction、SwitchAction 的应用详解 #### 一、DispatchAction 的应用 **DispatchAction** 是 Struts 框架中一个非常有用的类,它位于 `org.apache.struts.actions` 包中。其核心...

    DispatchAction实例

    在实际的Web应用程序开发中,通常一个URL对应一个Action,而`DispatchAction`则允许一个Action处理多个不同的请求,每个请求映射到Action中的不同方法,提高了代码的可维护性和组织性。 `DispatchAction`的核心机制...

    struts中dispatchAction用法

    Struts是Java Web开发中的一款经典MVC框架,它的核心组件之一是DispatchAction,这个组件在处理用户请求时起到了至关重要的作用。DispatchAction是Struts提供的一个可扩展的Action类,它允许开发者将一个单一的...

    struts DispatchAction

    总之,Struts DispatchAction是Java Web开发中一种有效的请求分发机制,它允许在一个Action类中组织和管理多个业务处理方法,提高了代码的可读性和可维护性。然而,随着技术的发展,如Struts2的出现,开发者可以选择...

    Struts中等同于DispatchAction类方法

    Struts框架是Java Web开发中一个非常重要的MVC(Model-View-Controller)框架,它为开发者提供了一种结构化的方式来组织和管理应用程序。在早期的Struts版本中,`DispatchAction`类是一个核心组件,它允许我们通过...

    Struts(DispatchAction) + 存储过程 => 实现分页效果

    Struts框架是Java Web开发中常用的一个MVC(Model-View-Controller)框架,它极大地简化了企业级应用的开发工作。DispatchAction是Struts框架中的一个动作类,用于处理用户的请求并转发到相应的业务逻辑。在这个场景...

    Struts 之 DispatchAction

    Struts 是一个经典的Java Web开发框架,用于构建企业级的MVC(模型-视图-控制器)应用程序。在Struts框架中,`DispatchAction`是一个关键组件,它扮演着控制器的角色,负责处理用户请求并调用相应的业务逻辑。在本篇...

    SSH整合继承DispatchAction的简单例子

    SSH整合是Java Web开发中的一种常见技术组合,它由Spring、Struts和Hibernate三个框架组成。这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现...

    struts+oracle实现DispatchAction类

    Struts是Java Web开发中的一款经典MVC框架,它的出现极大地简化了企业级应用的构建。在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑...

    java8源码-resume:个人简历

    java8 源码 联系方式 手机:15018735217 Email: QQ号:31342108 个人信息 邓海二/男/1986 本科/广州大学计算机系 工作年限:8年 ...DispatchAction 的思路自己写了一个只有一个 Java 文件的控制器,还有一个U

    java面试过程中遇到的问题总结

    本文总结了 Java 面试中的一些常见问题,涵盖了 Ajax 的原理、优缺点、 DispatchAction 和 Action 的区别等知识点。 Ajax 的原理 Ajax 是一种异步请求技术,通过 XmlHttpRequest 对象来向服务器发送异步请求,从...

    java-struts1

    它在2000年代初期非常流行,为MVC(Model-View-Controller)设计模式提供了一个实现,使得开发者能够更好地组织和管理Java Servlets和JSP(JavaServer Pages)应用程序。Struts1的核心理念是通过分离业务逻辑、数据...

    利用struts标签,dispatchAction,实现增删改查

    - `DepartmentAction.java`: 实现DispatchAction,包括`executeAdd()`, `executeDelete()`, `executeUpdate()`等方法。 - `struts-config.xml`: 配置DispatchAction及其映射规则。 - `department.jsp`: 显示部门...

    java工程师项目经验简历范文.pdf

    【Java工程师项目经验】在Java工程师的简历中,通常会包含以下几个关键知识点: 1. **CoreJava编程**:这是Java的基础,包括面向对象编程、集合框架、多线程、异常处理、I/O流等,良好的代码规范和注释习惯是专业...

    深入解析Java的Struts框架中的控制器DispatchAction

    Struts框架是Java Web开发中的一个关键组件,属于SSH(Struts、Spring、Hibernate)三大框架之一。它提供了一种模型-视图-控制...理解并熟练运用DispatchAction,能帮助开发者更好地利用Struts框架构建复杂的应用程序。

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》

    Spring框架是Java企业级应用的核心组件,它提供了依赖注入(DI)和面向切面编程(AOP)等特性,简化了对象的创建和管理。`getAvailableLocales`可能涉及到Spring的国际化(I18N)支持,允许应用程序根据用户的选择或...

    Java项目经验,里面有六个项目经验

    **应用服务器**:Tomcat 6.0,为Java Web应用程序提供运行环境。 #### 项目二:NETCTOSS经营支持系统 **项目简介**:NETCTOSS经营支持系统主要目的是为运营商提供经营管理支持,包括但不限于用户管理、计费管理等...

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证的示例

    解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。

Global site tag (gtag.js) - Google Analytics