日期:2014-05-18  浏览次数:20663 次

Struts中Action是怎么实现映射的
Struts中Action是怎么实现映射的

想做一个关于通过action来决定调用哪个方法的类,想实现的很简单,比如action=new,就执行new()方法,action=save,就执行save()方法

可是这个对我来说太难了,想不明白.怎么来映射关系,有了解的吗,谢谢

------解决方案--------------------
java反射机制
------解决方案--------------------
struts2本身就是这种机制,如果楼主可以使用struts2的话就直接用strut2 就可以了。原理的话就是:系统启动时会读取struts.xml文件,将里面配置的method的name和class及result name、value读取到一个map数据结构中,收到客户端的请求,会产生一个action代理类,由代理类进行前期的拦截器处理,随后交给actionDispacher,该类去根据前面读取struts2.xml的map去反射到相应的方法中。
如果楼主不使用struts2的话,可以封装一个继承HttpServlet的基类,在该基类中解析请求的URL,根据url中的action=new反射到子类的new 方法中就可以了。不过HttpServlet是单实例多线程的处理思想,楼主注意处理好同步的问题。
------解决方案--------------------
action的值决定走哪个方法不是用反射,用if else根据你传的方法名去调用相应的方法就OK了。而表单填的值经过struts2之后 对象里就有值了是用的放射,根据对象的属性名调用相应set方法。
------解决方案--------------------
struts用的是反射机制
如果自己实现就不要这么麻烦了,直接写个filter即可.....