Struts开发技巧__教程 |
|
日期:2007-5-20 0:38:05 人气:62 [大 中 小] |
|
|
|
2. 对于页面上需要展示的数据尽量存放在request这个范围里,可以减轻服务器端内存负载,方式如下: //调用员工处理类 StaffDeal sd=new StaffDeal(); //根据员工状态查询员工 ArrayList al=sd.qryStaff(strState); //放入request request.setAttribute("staffInfo",al); 3. 私有的或需要根据用户的属性来获取参数信息的,可以在tiles的定义中使用“controlClass=xxx”这个方式获取,配置如下例:
需implements Controller中的perform方法,代码如下例: public void perform(ComponentContext componentContext, HttpServletRequest request, HttpServletResponse response, ServletContext servletContext) throws IOException,ServletException { HttpSession session = request.getSession(); // Get current session. User user = (User) session.getAttribute(Constants.USER_KEY); if (user == null) { return null; } String uid = user.getUserid(); String sql = "select userid,content from ti_salutatory where userid=´"+uid+"´"; try { … } catch (Exception ex) { throw new ServletException(ex.getMessage()); } } 4. 对于后台出错信息在前台页面显示的技巧 首先在properties配置“message.common={0}” 然后在Action类中使用ActionErrors或ActionMessages时,方法如下: … ActionMessages ams = new ActionMessages(); //例外处理 Try{ … } catch (Exception ex) { ex.printStackTrace(); ams.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("message.common", ex.getMessage())); } finally { if (!ams.isEmpty()) { saveMessages(request, ams); } } … 在jsp页面中使用方法如下:
如果有后台的messages产生,前台页面就可以出现报错信息 5. 系统配置文件 系统参数如数据库连接等在sysConfi.xml文件中配置,存放在“WEB-INF/xml”文件夹下,请参见该文件。 开发规范和公用方法 关于java的开发规范参见《Java 编程规范.doc》,这里仅给出用struts开发中一些的规范: 1. java文件存放按业务逻辑划分,并用模块作为包名的形式,如:telecombi.logic.sysman.security 包名都为小写形式 所有的Action和ActionForm都存放在同一包下,便于管理,不要跨包调用 2. 所有ActionForm中的属性均为“首单词小写+第二个单词首字母大写+…”的形式,如:staffId、staffName,不允许使用“_”为单词连接符 3. 需要验证的页面,均需要客户端和服务端两次验证(即对jsp中的Form进行javascript验证和Action中的excute方法中进行验证),不能只采用其中一种方法,防止客户绕过js直接提交; 在验证登录提交的form时,必须使用staticJavascript="false",否则就会把javascript写到页面里,如: dynamicJavascript="true" staticJavascript="false"/>
验证的formName必须和validation.xml中的Form的名字对应起来,否则验证无效 4. ActionForm是代表html中的Form的,其中的变量需要和Form中的属性对应起来,如:要在jsp中使用,则使用的ActionForm中就必须有userName这个变量 5. 对于Action中的逻辑,如果处理方法在一个以上,需要另外新建一个处理类,负责对Action中的逻辑集中处理,命名为xxxDeal,如:LoginDeal; Action通过调用该处理类的方法,实现业务逻辑处理 6. 对数据库的操作使用DBManager这个类,对其中的一些方法,具体介绍如下: 查询结果对象化的Select操作,使用Select(String sql,String className)方法 StringBuffer sql = new StringBuffer( "select staff_id staffId from ts_m_staff ") .append("where staff_id=´").append(uid).append("´"); try { /** * User是一个用户对象类,其中有staffId这个属性,以及对应的get/set方法,通过 * DBManager的Select方法获得一个User的ArrayList集合 */ |
|
出处:本站原创 作者:佚名 |
|
|