- 浏览: 175945 次
- 性别:
- 来自: 福州
文章分类
最新评论
-
mncc:
太好了!!!Mark一下!不过貌似那个冒泡的还少个右下角吧? ...
Google Maps 图标地址收藏 -
ivorytower:
去年5月捡了命回来,现在不评论那些豆腐渣工程……
汶川地震留给我们什么?单单建什么地震纪念馆是没有用的 -
lgx2351:
wtusmchen 写道blog写的不错啊,以后多过来学习:) ...
js学习笔记2-函数 -
wtusmchen:
blog写的不错啊,以后多过来学习:)
js学习笔记2-函数
MVC框架中,控制器组件与模型组件需要相互传送数据,我们可以写个javaBean来保存。
ParamBean这个javaBean本质上是把数据放在hashtable中,并提供了存放和取出数据等方法。
代码如下:
public class ParamBean implements Serializable { // 操作员用户代码(用于日志显示) private String opr_code = ""; // 用户部门代码(用于日志显示) private String dep_code = ""; // 当前操作的菜单(用于日志显示) private String menu_code = ""; // 当前操作的说明(用于日志显示) private String op_desc = ""; // 返回代码(0表示成功) private int ret_code; // 错误信息 private String err_msg = ""; private Hashtable ht; private CachedRowSet crs; /** * 构造函数 */ public ParamBean() { opr_code = ""; err_msg = ""; ret_code = 0; ht = new Hashtable(); crs = null; } /** * 设置信息 */ public void set_info(String opr_code, String dep_code, String menu_code, String op_desc) { this.opr_code = opr_code; this.dep_code = dep_code; this.menu_code = menu_code; this.op_desc = op_desc; } /** * 添加参数到哈希表 */ public void add_param(String param_name, Object param_value) { if (param_name == null || param_value == null) return; param_name.trim(); if (param_name.equalsIgnoreCase("")) return; this.ht.put(param_name, param_value); } /** * 从参数哈希表中获取参数 */ public Object get_param(String param_name) { if (param_name != null) { param_name.trim(); if (!param_name.equalsIgnoreCase("")) { return ht.get(param_name); } } return null; } /** * 从参数哈希表中删除参数 */ public void remove_param(String param_name) { if (param_name != null) { param_name.trim(); if (!param_name.equalsIgnoreCase("")) { ht.remove(param_name); } } } /** * 取哈希表中的参数个数 */ public int get_param_count() { return this.ht.size(); } /** * 清空参数(参数无须传回客户端) */ public void clear_param() { this.ht.clear(); } /** * 设置CRS */ public boolean set_crs(ResultSet rs) { boolean ok = false; try { crs = new CachedRowSetImpl(); crs.populate(rs); ok = true; } catch (Exception e) { e.printStackTrace(); } return ok; } /** * 设置错误信息,同时置ret_code为-1 */ public void setErr_msg(String err_msg) { this.ret_code = -1; this.err_msg = err_msg; } /** * 设置成功信息 */ public void setSuccess() { this.ret_code = 0; this.err_msg = ""; } /** * 判断操作是否成功 */ public boolean success() { return this.ret_code == 0; } public String getDep_code() { return dep_code; } public void setDep_code(String dep_code) { this.dep_code = dep_code; } public CachedRowSet getCrs() { return crs; } public void setCrs(CachedRowSet crs) { this.crs = crs; } public Hashtable getHt() { return ht; } public void setHt(Hashtable ht) { this.ht = ht; } public String getMenu_code() { return menu_code; } public void setMenu_code(String menu_code) { this.menu_code = menu_code; } public String getOp_desc() { return op_desc; } public void setOp_desc(String op_desc) { this.op_desc = op_desc; } public String getOpr_code() { return opr_code; } public void setOpr_code(String opr_code) { this.opr_code = opr_code; } public int getRet_code() { return ret_code; } public void setRet_code(int ret_code) { this.ret_code = ret_code; } public String getErr_msg() { return err_msg; } }
以上代码都很好理解,主要是add_param(),set_crs()方法主要是把数据库执行查询后得到的ResultSet通过CachedRowSetImpl的populate方法放进CachedRowSetImpl里,至于为什么要放到CachedRowSetImpl里处理,参看些jdbc编程方面的知识。(TO-DO)
写好这个javaBean后,在控制器组件里可以把在前台传进来的值通过add_param()方法放进来,如下:
param_bean param = new param_bean(); String dep_code = (String)request.getSession().getAttribute("LOGIN_USER_DEP"); param.add_param("DEP_CODE", dep_code);
在模型组件里可以根据传进来的这个param来取到值,进行一些数据库的操作,如下:
public param_bean loginAuth(param_bean param) throws java.lang.Exception{ String user_code = (String)param.get_param("USER_CODE"); param.clear_param(); String sql = ".."; sqlExecQuery(param,sql); return param; } /** * 执行查询语句的公共方法 * @param param * @param sql */ private void sqlExecQuery(param_bean param,String sql) throws Exception{ database_bean db = get_database(); param.ret_code = -1; try{ param.set_crs(db.execute_query(sql)); param.ret_code = 0; param.err_msg = ""; db.close(); }catch(Exception ex){ param.ret_code = -1; param.err_msg = ex.getMessage(); ex.printStackTrace(); } }
完成相应的数据库操作后,在控制器里进行如下判断,并对数据库的查询结果放到request进行更加复杂的处理,如下:
if (param.ret_code == 0) { request.setAttribute("PARAM_CRS", param.crs); } else { System.out.print(param.err_msg); throw new Exception(param.err_msg); }
到这里,MVC三层结构中在在控制器组件与模型组件之间传送数据大致介绍完成了:)
发表评论
-
判断一个url是否连接正常
2012-01-13 19:45 180try { ... -
Hibernate+Spring+Struts2+ExtJS开发CRUD功能
2012-01-06 10:03 0http://blog.csdn.net/myloon/art ... -
安装Oracle运行pl/sql developer(转)
2011-06-09 16:48 978Sql客户端中,虽然最便捷的是万能而且轻量无比的Sql Wor ... -
boss部署时出现的 Bad version number in .class file错误
2011-03-11 17:32 1017http://blog.sina.com.cn/s/blog_ ... -
ireport制作报表
2011-01-19 16:34 1198ireport制作报表好早以前用过,过了一段时间再做,发现都忘 ... -
Eclipse+MyEclipse安装及环境配置
2010-12-14 10:22 961为了方便更多的人,写了这个! MyEclipse是 ... -
上传下载总结
2010-07-19 11:40 172这里的上传是上传到数据库的blob字段中。前台的代码省略 ... -
对java对象和jsp的理解
2010-07-19 11:10 0一:对jsp的理解 jsp其实就是servlet ... -
Eclipse快捷键
2010-06-19 16:20 864编辑相关快捷键 Eclipse的编辑功能非常强大 ... -
eclipse快捷键
2010-05-15 11:02 807作用域 功能 快捷键 ... -
关于java的一些公共方法总结(不断更新)
2010-03-05 11:06 239工作总结,不说多,直接上代码 public class Ut ... -
HttpServletResponse的处理封装(将不断更新)
2010-03-05 11:04 370工作总结,不说多,直接上代码: public class H ... -
HttpServletRequest的处理封装(将不断更新)
2010-03-05 11:03 1705不多说了,时常工作整理的,直接上代码吧,欢迎大家多提意见。 ... -
对java web工程的个人理解
2010-03-02 10:50 4031、在多工程下对session的理解: 一个浏览器打开一 ... -
个人实施工作总结(只是个人实施工作总结)
2010-01-21 16:31 693这次升级出了好多问题,记录如下: 一、 更新了high ... -
基于struts的web应用开发总结(三)
2010-01-13 16:08 2241.应用开发常常从数据库取出数据来处理。而数据库的数据有可能是 ... -
json在服务端取值
2010-01-07 15:19 1074我们一般在servlet里返回一个json的toString( ... -
action端发请求并且处理
2010-01-07 15:13 120我们一般是在前端发请示,然后在struts的action端来处 ... -
修改Eclipse/MyEclipse项目的默认编码(转)
2009-12-26 15:35 3538... -
servlet端取前台参数值方法探讨
2009-12-20 21:24 636servlet取前端传过来的参数值,我们一般用HttpServ ...
相关推荐
数据传输项目(Data Transfer Project,DTP)是一个重要的开源项目,旨在简化用户在不同在线服务提供商之间迁移数据的过程。这个项目的核心目标是构建一个通用的框架,它包含了数据模型和协议,使得用户的数据能直接...
**接线与硬件配置**:在实验设备部分,描述了如何正确连接和设置实验仪器,例如TEC-4计算机组成原理实验仪、双踪示波器等,以及如何将控制器、指令寄存器、数据通路等各个部分的信号线连接,以实现正确的数据流动和...
实验小结部分,学生通常会总结他们在实验中学到的知识点,如理解总线控制、组件功能以及如何通过逻辑电路实现数据传输。这种实践操作加深了对计算机组成原理的理解,特别是关于数据在计算机硬件中的流动方式,为后续...
**DMA(Direct Memory Access)控制器**是嵌入式系统和计算机架构中的关键组件,负责在无需CPU干预的情况下实现数据的高效批量传输。在本文档中,我们将深入探讨Altera公司开发的具有Avalon接口的DMA控制器核心,该...
- **错误处理机制**:描述了 USB 在数据传输过程中如何处理错误,确保数据传输的可靠性和完整性。 #### 五、总线访问管理 - **调度算法**:介绍了 USB 系统使用的调度算法,用于有效管理和分配带宽资源。 - **...
- **USB接口控制器**:SL8111HS作为USB接口控制器,负责与USB总线的通信,是实现USB功能的关键组件之一。 - **串行接口电路**:串行接口用于与其他设备进行通信,例如与PC进行数据交换。 #### 4. 软件实现过程 ...
并行数据链路层控制器是网络通信中一个关键组件,它负责在物理层之上提供可靠的数据传输服务。 首先,我们要理解数据链路层(Data Link Layer)在OSI七层模型中的位置和作用。它是第二层,负责在两个相邻节点之间...
控制器之间的通信协议栈需要精心设计,以支持高效的数据传输和同步。 总结来说,“电信设备-一种实现双控制器通信的通信方法及通信模型”涵盖了冗余设计、心跳检测、数据同步、负载均衡、通信模式、错误恢复策略、...
USB主机控制器驱动是内核中的一层软件,它与硬件接口,执行设备枚举、数据传输等任务。本文将深入探讨USB主机控制器驱动的工作原理和关键概念。 首先,我们需要了解USB架构。在Linux中,USB驱动模型分为三个层次:...
在此模型中,HCI层作为蓝牙模块与主机之间的软硬件接口,提供了一个统一的界面来控制基带与链路控制器、链路管理器以及状态寄存器等硬件组件。主机与主机控制器之间的通信通过HCI层完成,其中主机负责运行HCI层以上...
5. **同步与异步接口**:控制器通常有与CPU或其他系统组件的同步接口,以及与DDR3内存的异步接口,需要处理两者之间的时钟域转换。 6. **资源优化**:在FPGA中,需要考虑逻辑资源、时序和功耗等因素,通过Vivado的...
在电子设计领域,SDRAM(Synchronous Dynamic Random-Access Memory)控制器是系统设计中的关键组件,它负责管理和协调与SDRAM内存芯片之间的通信。SDRAM控制器设计涉及到多个复杂的功能模块,如初始化、刷新管理、...
通过这个程序,开发者可以轻松地与各种支持串口通信的硬件设备进行交互,例如工业控制器、传感器、打印机等。同时,了解并掌握COM组件的使用以及串口通信的相关参数设置,对于提升软件的兼容性和稳定性至关重要。
使用者可以通过模型来观察和分析预测控制器的决策过程,了解其对系统性能的影响。此外,模型还可以用于研究和优化控制器参数,以适应不同的应用需求。 《功率变换器和电气传动的预测控制》的MATLAB模型,不仅包含...
在这个“javafx显示多个窗口以及javafx多窗口之间数据交互传输项目原文件”中,我们可以学习到如何在JavaFX中创建并管理多个窗口,以及在这些窗口之间进行数据的交换和传递。 1. **创建JavaFX窗口** 在JavaFX中,...
4. **指令发送**:根据用户的操作,程序将控制指令转化为串行数据,通过TSerialPort组件发送到飞机的控制器。 5. **错误处理与调试**:良好的错误处理机制是任何软件的基础。源码中可能会包含对串口通信异常的处理...
本资料"网络游戏-以可变时隙传输数据的面向数据包数据网络的过程和控制器"深入探讨了这一核心问题,尤其是关注如何通过可变时隙技术优化数据在网络中的传输。 首先,面向数据包的数据网络是一种基于IP(Internet ...
在理解经典蓝牙(BT)的数据传输流程时,我们需要先了解其基本架构和各个组件的作用。经典蓝牙技术基于蓝牙核心规格,如Core_v5.4,它定义了一个分层的通信模型,确保了不同设备间可靠的数据交换。以下是BT蓝牙数据...
### 基于装饰器模式的卫星控制系统数据处理与传输 #### 一、装饰器模式概述与卫星控制系统适配性分析 ##### 装饰器模式概述: **定义:** 装饰器模式是一种允许在不修改已有类的情况下,动态地向已有类添加新的...
这种模式将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),以实现数据、展示和业务逻辑的分离。 1. **模型(Model)**: 模型是应用的核心,负责处理业务逻辑和数据管理。它与...