web项目优化step3浅析
经过之前 的servlet 合并和分离业务处理,servlet 已经得到一定程度的优化,之前的一大堆servlet已经浓缩成了少量的servlet ,但是随着功能的增加,servlet 的数量会越来越庞大,那么我们不是又回到了原来的servlet 数量过于庞大和冗余的问题了吗?可以不可以把所有的 servlet 合并成为一个servlet 呢?能不能在那一个 servlet 里面动态地实例化各个功能对应的 action 类和动态地调用各个action 类的方法呢?答案当然是 可以的!!我们可以通过 文件流和java的反射机制就可以实现了!
编写一个中央actionServlet 来接收用户请求,根据请求的路径来实例化对应的action 类,根具参数“method”的值来调用对应的处理方法。然后做出响应
具体思路是:
1 编写action.properties配置文件:配置访问路径与Action的对应关系。
2 在中央actoin里面,获取访问路径并截取
例如:shopping/user.action 截取之后路径->/user.action
3 通过截取之后的路径读取配置文件,得到相应的Action。
例如:/user.actoin->accp.jsp.com.servlet.action.UserAction
4 通过Java反射机制和得到的 action 和 方法类型“method” 实现动态的
实例化对应的Action 和调用对应的方法!
下面来开始具体实现所有的步骤
①首先编写一个中央action :ActionServlet 然后将所有的页面请求都设置转到这个ActionServlet , 在配置servlet 的时候设置所有的 *.action访问路径都转到这个ActionServlet 配置如图1所示
图1

然后在对应的JSP 页面里面修改对应的访问路径,例如用户登录:
<form action="user.action" method="post" name="form1">
② 编写 action.properties配置文件,配置访问路径与Action的对应关系,这样的话我们就可以根据路径例如“/user.actoin”来得到对应的action类 “action.properties”如图2所示

图2
③在中央控制器ActionServlet 里面截取访问路径,用于获取对应的action类名。获取方法名称,用于指明调用哪个方法。如图3所示


图3
④有了指示类名的路径requestURI ,我们就可以通过文件流,读入配置文件action.properties ,然后我们就可以根据配置文件来获取 对应的action类名 (类名用于在反射机制里面实例化对应的类) 如图4所示

图4
⑤有了类名actionClass 和方法名 method ,就可以通过反射机制来实例化对应的action类,和调用我们想调用的方法了。如图5所示

图5
⑥最后,根据调用方法返回的结果进行响应,那我们的第三步优化也就完成啦!

如图6所示
本文来源 我爱IT技术网 http://www.52ij.com/jishu/304.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
