Struts开发技巧__教程 |
|
日期:2007-5-20 0:38:05 人气:62 [大 中 小] |
|
|
|
模块配置 1. Struts配置文件定义 对于系统中的某个模块,需要在开发前定义该模块的配置,该struts的配置文件命名为: struts-config-xxx.xml xxx为模块的小写英文名或缩写,如:struts-config-sysman.xml 注意:中间为“-”,而不是“_”连接符 统一保存在“WEB-INFxml”文件夹下,并需要在web.xml中添加相应的配置文件 地址,具体如下例: …
config /WEB-INF/struts-config.xml, /WEB-INF/xml/struts-config-pages.xml,/WEB-INF/xml/struts-config-sysman.xml
… 注意:需要用“,”连接符隔开各个配置文件名 另外,所有的静态jsp需要通过配置文件定义其“.do”形式的访问,保存在 struts-config-pages.xml文件中,内容如下例: …
… 2. Tiles配置文件定义 系统的框架配置文件为tiles-defs_zh_CN.xml(通过.properties属性文件支持国际化应用,默认是tiles-defs.xml),模块的框架结构需要定义在里面,如下例: …
… 框架命名规范按“系统(子系统).功能模块.页面模块”,如上面的“default.frame” 在struts-config-pages.xml文件中的设置的页面action可以这样写:
这样就不必单独写一个tiles:insert的页面,如下:
3. 模块中的注释 不但需要在程序中添加必要的注释,在定义配置文件的时候也必须需要添加相应注释,主要是在struts-config-xxx.xml和tiles-defs_zh_CN.xml这些文件中添加注释,要把action或配置模块的功能解释清楚,放在配置项的前面,参见上面的配置文件 4. 对于配置文件的编辑 不能使用Jbuilder里面的xml编辑功能,因为JB会自动地改变xml里面的编码和内容,因此,对xml配置文件的编辑,要使用编辑软件,如UE等 事件定义 事件对应的类主要有Action、ActionForm,还有jsp中提交的“.do”定义,以及页面动作的提交,以login登录为例: 1. 类的命名定义(首字母需大写) 形式为“动作名+Action/Form” 如:LoginAction.class、LoginForm.class 2. 页面地址定义(首字母需小写) 如果有两个单词以上,第二个单词首字母大写,依此类推 形式为“动作名” 如:login.do或loginSys.do jsp文件命名也按此规范 3. 页面动作定义 因为jsp页面中的Form对应ActionForm,其本身有action这个属性,所以页面动作如果定义也为action,会引起不必要的麻烦,所以,把页面动作统一定义为“act”, 如需要编辑某条记录,地址如下: “/editRecord.do?act= Edit” 如需要删除,地址如下: “/editRecord.do?act=Delete” 4. 对于菜单和操作事件触发的控制机制 由于系统中的菜单和操作都是由“.do”形式向服务端发请求的,因此需要一套机制来控制哪些是对菜单的事件请求,哪些是对操作的事件请求; 我们在系统中引入了Filter过滤器,对所有请求进行控制,以及判断用户是否登录和是否有对资源(菜单等)访问权限等; 约定: jsp页面上对于系统中菜单的请求都是“GET”方法,对于操作的Action都是“POST”方法; 有了这样的约定,在Filter中先判断request的请求方法,如果是“GET”方法,则认为是对菜单的请求,所以去“菜单表”根据请求地址读取相应的记录,并读取用户的权限表,判断用户的菜单权限; 如果是“POST”的方法,则认为是对操作的请求,并提取request中的“act”动作,进行对用户的权限点的判定。
参数信息获取 1. 公共参数信息通过Plugin方式在Web服务启动时将变量放入application中,使得在任何需要该变量的jsp中都可以调用; 方式如下: public void setServletContext(ActionServlet actionServlet) { try { ServletContext sc = actionServlet.getServletContext(); //SysInitPwd sc.setAttribute(Constants.SYS_INIT_PWD,SelectLists.getSysConfig("PWDINIT")); … 在action等程序中的调用方式: getServlet().getServletContext().getAttribute(“…”); |
|
出处:本站原创 作者:佚名 |
|
|