Java开发网 |
注册 |
登录 |
帮助 |
搜索 |
排行榜 |
发帖统计
|
您没有登录 |
» Java开发网 » Architecture & Framework
» Spring Framework
打印话题 寄给朋友 订阅主题 |
作者 | Re:[求助][急]如何将活动的servlet 注入 bean里 [Re:cliff] |
cliff
发贴: 11 积分: 0 |
于 2006-10-28 12:07
"If indeed there is a need, maybe the other way around is better, do it in the servlet context, i.e., either in the servlet or in the interceptor." about this sentence, I am confused! I know what you mean, you mean handle the action in the servlet if you want to use the servlet, as you don't need to care about where the servlet is , it's just there. Let's consider a scenario: With struts, you have more then 10 action classes(inheriting DispatchAction), in each action you have more than 5 action methods. You define a common class which have all the common methods, and you have to apply all these methods of this class in each method of every action class. But you have to set the ActionServlet as the property of this common class, since you have to get the session attribute in this common methods. One way to inject ActionServlet to this common class is to pass the servlet property of Action(we know action has a property named servlet which represents the ActionServlet instance) to it in each method of each action. It's ugly to do so, everytime you add a new method in the action class, you have to copy the code of injecting servlet and call the common methods of the common class. Another approach is to use interceptor, just as you say. You can implement MethodBeforeAdvice to setup the interceptor and do the logic in the before() method.
we set this SomeInterceptor into every action method like somefunction() checking these 2 snippets, you should notice several things: 1. the return type of the before() method is void. 2. the return type of somefunction() mnthod is ActionForward. 3. to get the ActionServlet context in the Interceptor, spring has inject them in the parameters of the before method, so you can hardcode to get them, ok, this is fine, but not stable, we can not make sure each time the parameters are just like these ones in every type of server(tomcat, weblogic, websphere ...). 4. in before() meothd , after checking some logic with these parameters, if some conditions are satisfied, we don't want to continue the process of somefunction() method, we just want to end up the somefunction() and return ActionForward. In before() method, how can we indicate somefunction() method to end up and return the ActionForward. With Spring AOP, how can we do that? Please give more advices, thank you.
cliff edited on 2006-10-28 12:13
从Coding Fan到真正的技术专家 |
话题树型展开 |
已读帖子 新的帖子 被删除的帖子 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |