日期:2014-05-17  浏览次数:20685 次

熟悉struts2 的原理的进,我在做一个类似struts2的控制器
用struts2用了半年,换了一家新单位,不用struts2了,是公司自己编写的框架,看不懂

我打算做一个struts2的框架。说一说我的心得吧。这几天磋磨的。

1.依我看action 和servlet 大体都一个一个类 ,这种类和其他普通类不同的就是 可以获取request,

如果我做一个类 wec,这个wec 也能够得到request就可以完成动态交互了,我的想法你们同意不?

2.我要模仿sturts2 自己做一个控制器,而struts2是 过滤器,在这个最基本的过滤器中 ,我没看到我的请求被 chain.doFilter(request,response),

抱歉 小弟学问浅薄,源码绕来绕去 我看不懂,我感觉这个访问srtuts2 的Action的请求 ,还有我们在action的处理,

都是在过滤器的doFilter()方法中完成的,是这样吗????????????????????

好像是通过反射和动态代理 找的Action,为什么不放行呢 请求没有执行这一步chain.doFilter(request,response) 为什么


------解决方案--------------------
如果你只想写一个能完成struts2流程的框架,其实很简单,无非就是写一个类实现Filter,拦截你的请求地址是否符合要求(.action结尾之类的),然后通过地址到你的配置文件里面去找对应的类和对应方法,通过反射创建那个类的对象,再通过反射调用参数所对应的set方法,把你请求里的参数赋值给类的属性,再调用具体的执行方法。最后获取这个方法的返回值,通过这个返回值去配置文件里去匹配应该转发(或跳转或别的)到对应的地址,只是别忘了把你要返回给页面的值通过request.setAttribute存起来就行了。
------解决方案--------------------
核心控制器不一定非得用filter,但是只要保证实现拦截功能就可以了。。
我以前写的一个类struts框架:

http://blog.csdn.net/chenghui0317/article/details/9413401