5、 实例
为了更好地说明用JSP/Servlet构建三层式管理信息系统的方法,作者将举例分析设计一个商品邮购管理信息系统。这个商品邮购管理信息系统利用Java语言进行服务器端应用程序的开发,使用IBM公司的Webshpere作为应用服务器,数据库管理系统选用SQL Server7.0,数据库接口程序使用JDBC2接口。整个系统使用基于Web的方式来实现邮购业务的客户管理、职员管理、订单管理、商品管理、出库管理、入库管理等业务处理、流程控制、权限控制、查询统计以及打印等功能。其中详细分析订单管理部分的查询功能。
5.1数据库设计
对于订单部分,需要定义订单信息表Db_order,表中的字段有订单编号(ddbh),客户编号(khbh),商品编号(spbh),商品单价(spdj),定购数量(dgsl),合计总价(hjzj),收到金额(sdje),收到日期(sdrq)。为了能够在应用中使用Db_order表,必须建立数据库连接。这个功能由sql_data.java来实现。其部分代码如下。
Public class sql_data { String url = "jdbc:odbc:PostOrder"; // use your hostname and port number here String login = "sa"; // use your login here String password ="zh12345"; // use your password here Public Connection connection = null; Public Statement st = null; Public Result Set rs = null; Try {Class.forName ("com.microsoft.jdbc.sqlserver.SqlServerDriver"); Conn =DriverManager.getConnection (url, user, password); } Catch (Exception e) { E.printStackTrace (); } } |
5.2中间层设计
在商品邮购管理信息系统的开发过程中,基于MVC设计模式的思想,结合系统的实际情况,我们将Model层按照分工进行了进一步划分。Model层一般来说由许多JavaBeans组成,根据这些Beans在系统中起的不同的作用,将它们分为Command Beans、Data Beans、View Beans三种类型。其中Command Beans用来实现业务逻辑即对对象实例的处理;Data Beans是用来描述和定义从现实世界中抽象出来的对象模型;而 View Beans则是用来将处理完的对象实例进一步封装并返回到客户端。
首先,Command Beans获得Servlet传递过来的信息,并将这些业务信息封装在Data Beans定义的对象实例中,根据业务逻辑对信息进行处理。当需要进行调用数据库的存取操作时,Command Beans将对象实例以及相应的控制信息通过数据库接口方法完成对数据库的操作。数据库操作完成后,再将返回的记录集封装成Data Beans的对象实例,进行一定的处理后,将这些需要返回到界面的信息再封装到事先定义的View Beans中去,通过View Beans将信息返回到界面上。
以下是对订单进行查询处理的OrderGl.java的部分代码。
Public class OrderGl { …… //定义如下的方法完成对订单的查询操作 Public final String currentMultiQuery ( Javax.servlet.http.HttpServletRequest request, Javax.servlet.http.HttpServletResponse response) Throws com.goods.exception.GoodsException { //从JSP页面获得相应查询信息 Com.goods.view.OrderView view = get View (request, response); String ddbh = view.getDdbh(); //订单编号 //生成SQL语句 String sqlQuery = "select ddbh, khbh, spbh, spdj, dgsl, hjzj, sdje, sdrq from db_order "; //执行查询操作 Java.util.Vector vector = new java.util.Vector (); Com.goods.sjk.sql_data per = new com.goods.sjk.sql_data (); Try { Java.sql.ResultSet rs = per.executeQuery (sqlQuery); While (rs.next ()) { Com.goods.dx.Db_order temp = new com.goods.dx.Db_order (); Temp.setDdbh (rs.getString ("ddbh")); Temp.setKhbh (rs.getString ("khbh")); Temp.setSpbh (rs.getString ("spbh")); Temp.setSpdj (rs.getString ("spdj")); Temp.setDgsl (rs.getString ("dgsl")); Temp.setHjzj (rs.getString ("hjzj")); Temp.setSdje (rs.getString ("sdje")); Temp.setSdrq (rs.getString ("sdrq")); Vector.addElement (temp); } Rs.close (); Per. Close (); } Catch (Throw able e) { E.printStackTrace (); Per. Close (); Cxyw.printErrorToWeb (request, response, e.toString ()); Return e.toString (); } //将相关信息回显给界面 View.setVct (vector); Request.setAttribute ("view", view); Return "1"; } } |
5.3客户端设计
视图是向用户显示信息的应用程序的一部分,也就是用户发出请求之后返回给用户的Web页面。当单击"查询"按钮时,将显示根据订单编号得到的订单信息结果页面ordercx.jsp。这是用JSP页面中如下语法完成的:
<jsp:useBean id="view" class="com.goods.view.OrderView" scope="request" /> <jsp:useBean id="temp" class="com.goods.dx.Db_order" scope="page" /> < jsp:useBean >动作用id和scope发现存在的各个对象,再通过<%=view.GetDdbh () 和<%=temp.getDdbh()%>来获取相关数据。 |
6、 小结
本文提出了一个开发基于Web的利用JSP/Servlet技术的三层管理信息系统的解决方案。该方案实现了表示层和逻辑层的分离,使得系统具有很好的扩展性,同时,给管理信息系统的开发提供了一个完整的思路和方法。 
2/2 首页 上一页 1 2 |