版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 / 31摘 要JAVA 语言是目前 Internet 上大型的 WEB 应用程序开发时使用得最热门的编程语言,本文描述了 JAVA 和 JSP 技术的特点以与在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。关键字JAVA, JavaBeans, Servlet, JSP, 网络编程, 电子商务, 网上书店 目 录前言 3第 1 章概述 41.1 JSP 简介和运行原理 41.2 开发背景 5第 2 章需求分析 62.1 系统组成:62.2 系统要求配置 6第 3 章系统设计 73.1 数据库设计 73.1.1 数据库需求分析 73.
2、1.2 数据库逻辑结构设计 10第 4 章详细设计 124.1 系统概述 12411 用户界面部分 122 / 31412 管理界面部分 124.2 详细代码与说明 124.2.1 实现 bookshop.run 包 124.2.2 客户界面设计与实现 20第 5 章系统测试 275.1 数据库连接 275.2 检测运行速度 27第 6 章总结 30参考文献 31致 32前 言随着计算机、网络、通信技术的发展和日益融合,以与 Internet 的普与应用,包括电子商务(EC) 、视频会议、网上书店等在的一些应用已开始引起社会的关注,并逐步走进人们的日常生活。JSP 是 Sun 公司推出的一种开
3、发技术,Sun 公司借助自己在 Java 上的不凡造诣,又把人们引进 JSP 时代,JSP 即 Java Server Page,它可以在 Servlet 和 JavaBean 的支持下,完成功能强大的 Web 应用程序。所以,在我的毕业设计中,我采用了 JSP 作为开发工具,构建了一个能实现简单的电子商务的小型动态商务网上书店销售系统。通过这次的毕业设计,我了解了目前流行的动态商务的构成和运作原理,掌握了用JSP 构建动态的相关知识和技术原理,锻炼了自己的动手实践能力。在这次毕业设计过程中,我得到了指导老师杜雪平老师的悉心指导。在此,我对你表示衷心的感!3 / 31第 1 章 概 述1-1
4、JAVA 语言简介Java 是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet 的开发工具。自从 1995 年正式问世以来,Java 的快速发展已经让整个 Web 世界发生了翻天覆地的变化。在早期,Java 比较多的用在浏览器上,插入到网页中(即是Java Applet 程序),成为最灵活、最强大的网页多媒体的载体,但由于 Java 虚拟机相对于个人电脑而言,有占用资源大,安全性相对较差等缺点,Applet 逐渐的被后起之秀Flash 所替代,但随着 Java Servlet 的推出,Java 在电子商务方面开始崭露头角,最新的 JSP(Java Server P
5、age)技术的推出,更是让 Java 成为基于 Web 的应用程序的首选开发工具,目前的 Java 技术已成为所有大型电子商务项目的必然选择。1-2 开发背景我国的网上书店虽然从数量上取得了一定的进展,但从售量而言却不尽人意,目前,国尚无一家在网上零售领域形成绝对领先优势的网上书店。发展比较好的寥寥无几,比较成功的有当当书店(.dangdang.) 。伴随着电子商务技术的不断成熟,电子商务的功能也越来越强大,注册用户可以在网上搜索购买到自己想要的各种商品,初步让人们体会到了足不出户,便可随意购物的快感。我的毕业设计也就正是一个电子商务系统的开发-网上商品销售系统。4 / 31第 2 章JAVA
6、 技术简介2-1 在 Windows 平台下配置 JSP 运行环境为了使系统能够正常运行 JSP 和相关程序,必须先配置好能够使用 JSP 的 WEB 服务器。各种能使用 Servlet 技术的 WEB 服务器中,运用得最多的是 Tomcat 服务器,如果仅是为了用于测试程序,Tomcat 的配置则显得太复杂了,本文推荐使用 Resin 服务器,Resin 据称是最快的 Servlet 运行平台,不过限于单站点,对传统的一些网关支持不是很好,因此对于商业而言,不是最好的选择,不过如果仅是为了测试 Servlet,这个Resin 的安装可谓有点傻瓜化。Resin 比较新的版本是 3.x,但目前实
7、际用的 2.x 版本的比较多,Resin 可到官方站点下载:.caucho./download/本文使用的是 2.1.13 版本,文件位置:.caucho./download/resin-2.1.13.zip如果你的电脑上已装好 JDK,直接把下载的 resin 包解压到 D:盘根目录解压后即D:resin-2.1.13 为服务器的目录,把本文的源程序 jspweb 文件夹也放在 D:盘根目录,即是 D:jspweb 为根目录,打开 D:resin-2.1.13conf resin.conf(是一份 XML 形式的配置文件) ,找到 doc 这里改为 D:jspweb,然后运行 D:resin
8、-2.1.13bin d.exe,在浏览器输入 localhost:8080/j1.jsp,看到了“我是 JSP!”的字样了吧,你的 Servlet 服务器就这样配置成功了,为了能编译 Servlet 类,还需要做的事情是:把D:resin-2.1.13lib 加入到 windows 的 CLASSPATH 的环境变量中。2-2 JSP、ASP 和 PHP 技术之比较JSP 与 ASP、PHP 技术都是目前网上最流行的在服务器端运行的脚本技术,JSP 能用JavaBeans 技术封装,达到商业逻辑的目的,ASP 对应之的是 COM 组件,因此两者都能用于开发商业逻辑,PHP 则更像于一个纯脚本
9、,仅适合于普通的开发,而不能用作商业逻辑而被冠以“Person Home Page”的名称,这是最贴切不过的了。JSP 与 ASP 相比,JSP 具有跨平台、安全、强大的可伸缩性的特点,而果硬要挑一些毛病,JSP 相对别的脚本更加难掌握,因为精通 JSP 必须精通 Java 语言,对于中小型项目,我们要考虑开发人员、开发速度、开发成本等问题,在这方面 ASP 和 PHP 会比JSP 更容易胜出。值得一提的是,ASP 的最新版本 ASP.NET 与原来的 ASP 性质完全是不同的,它和JSP 一样,都是一种编译性的脚本,本身完全与强大的 Net 框架结合,完美的支持 Xml的各种应用,与昔日的
10、ASP 不可同日而语,但是无论是 ASP 还是 ASP.NET,它都摆脱不了 Windows 平台本身,这是 ASP 一个致命的缺点。5 / 312-3 JSP 语法基础2-3-1 嵌入了 JAVA 语言的 HTML 文件把下面网页保存为:j1.jsp这就成了一个最简单的 JSP 页面了,其中是声明输出的文件类型为 text/html,字符编码是 gb2312,在 JSP 中里的容表示的是 JSP 编译时的一些选项或向客户端发送的头信息的 JSP 指令,里的容就是 Java 语言,如果有必要,更改适当设定,还可以使用 javascript 作为脚本,不过实际应用中很少有人这样做。2-3-2 r
11、equest、out & response-与访问者的交互接收客户端的请求和向客户端返回信息是动态网页最常做的事情,在 JSP 中,主要通过 request、response、out 三大对象实现这些功能。request 对象的作用是接收用户通过 URL 或通过表单向发服务器发送请求信息和与用户计算机相关的一些信息。response 对象用于网页传回用户端的回应。out 用于传送回应的输出,即向客户端返回信息。把上面的例子稍作修改:保存为 j2.jsp 在浏览器上输入:“localhost:8080/j1.jps?msg=我是 JSP”看一下效果,这和 j1.jsp 的结果一样吧?但它
12、输出的是客户端返回的信息,这在意义上完全不同于前者。2-3-3 session-保持访问者的会话状态会话状态维持是 Web 应用开发者必须面对的问题。有多种方法可以用来解决这个问题,如使用 Cookies 、隐藏的表单输入域,或直接将状态信息附加到 URL 中。Java Servlet 提供了一个在多个请求之间持续有效的会话对象,该对象允许用户存储和提取会话状态信息,JSP 也置了这个对象。Session 最基本的用法是:创建一个会话 session.putValue(名称,值);获得一个会话的值 session.getValue(名称);2-3-4 JSP 其它基本置对象JSP 有九大置对象
13、,除了上述四种以外,还包括:6 / 31pageContext 网页的属性是在这里管理application Servlet 正在执行的容config Servlet 的构架部件page JSP 网页本身exception 针对错误网页,未捕捉的例外这些基本的置对象是构成 JSP 页面的重要因子。第 3 章 系统设计本系统采用三层架构设计,它的工作原理如图 3-1 所示。图 3-1 三层架构模型采用三层构架以后,用户界面层通过统一的接口向业务层发送请求,业务层按自己的逻辑规则将请求处理之后进行数据库操作,然后将数据库返回的数据封装成类的形式7 / 31订购用户订单列表订单图书返回给用户界面层。
14、3.1 数据库设计数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率,以与实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。3.1.1 数据库需求分析针对一般在线书店的需求,得出如下需求信息。用户分为游客和已注册用户。订单分为单详细订单和总订单。一个用户可以购买多本图书。一个用户对应一订单。一个列表对应多订单。针对本系统功能分析,总结出如下的需求信息。用户,包括数据项:用户 ID、用户名、密码。图书,包括数据项:图书编号、图书名、价格、图书介绍。订单列表,包括数据项:订单编号、图书编号、购书数量。订单,包括数据项:订单编
15、号、用户编号、下单时间。从本系统中规划出的实体有:用户实体、图书实体、订单实体、订单列表实体。实体之间关系的 E-R 图如图 3-5 所示。1 1NN图 3-5 实体关系 E-R 图用户信息实体的 E-R 图如图 3-6 所示。图书实体的 E-R 图如图 3-7 所示。订单实体的 E-R 图如图 3-8 所示。8 / 31订单列表实体的 E-R 图如图 3-9 所示。图书图书编号图书名称分类编号封面图 3-6 图书实体 E-R 图用户用户名密码用户编号E-mail图 3-7 用户实体 E-R 图订单订单编号用户编号图书编号订购数量图 3-8 订单实体 E-R 图9 / 31订单列表订单号用户编
16、号图书编号是否付款图 3-9 订单列表实体 E-R 图3.1.2 数据库逻辑结构设计在线书店数据库中各个表的设计结果如下面的标和所示。表 3.1 为图书信息列表 book。表 3.1 图书信息表 book字段名数据类型长度允许空说明IDint4自动编号,主键booknameint4书名bookclassvarchar255图书类别authorvarchar100yes图书作者publishfloat8yesbookNovarchar100yes书号Contenttext16yes容介绍pricetinyint1yes价格Amountint4yes总数量Leav_numberint4yes库存量
17、pictureint4yes封面reg_timedatetime8yes入库时间表 3.2 为用户信息列表 shop_user。表 3.2 用户信息表 shop_user字段名数据类型长度允许空说明10 / 31IDint4自动编号,会员编号usernamevarchar4no用户名passwordvarchar100no密码Namesint4yes会员级别Sexvarchar50yes名字Addrvarchar50yes地址Phonevarchar25yesPostvarchar25yesEmailvarchar25yesRetimedatetime8yes注册时间RegIpAddrvarc
18、har20yes注册 ip表 3.3 为订单表,记录订单信息 orders。表 3.3 订单信息表 orders字段名数据类型长度允许空说明IDint4yes自动编号,订单编号order_idint4yes会员编号user_idint4yes图书编号quantityint4yes订购数量submit_timedatetime8yes提交订单时间consignmentTimedatetime8yes交货时间totalpricefloat8yes总价contentvarchar20yes备注ipAddrvarchar20yes用户 ipisPayoffint11yes是否付款isSaleint11
19、yes是否发货表 3.4 为订单列表,记录订单列表信息 allorder。表 3.4 订单列表 allorder 字段名数据类型长度允许空说明IDint4自动编号,卡类型编号orderIDint11yes订单号BookNoint11yes书号11 / 31Amountint11yes数量表 3.5 书店管理员信息表,记录管理员信息 bookadmin。表 3.5 管理员信息表 bookadmin字段名数据类型长度允许空说明AdminUservarchar20管理员用户名AdminPassvarchar50 yes管理员密码表 3.6 图书分类信息表,记录图书分类信息 bookclass。表 3
20、.6 图书分类表 bookclass字段名数据类型长度允许空说明IDint4自动编号,卡类型编号Classnamevarchar30yes图书类别第 4 章 详细设计4.1 系统概述411 用户界面部分图书选购(可按分类查找图书,或者通过关键字进行查询) 。购物车功能。查看图书详细信息。用户注册。用户登录。查看用户的订单信息。修改用户个人信息。412 管理界面部分现有图书管理:修改,删除,查看。用户管理:查看,修改,删除。订单管理:查看订单清单,更新订单付款,出货状态,删除订单。添加新图书。添加图书分类。12 / 314.2 详细代码与说明4.2.1 实现 bookshop.run 包1:lo
21、gin.java1:login.java这是一个以客户为中心的交易平台,只有成为了系统的合法用户才能够使用这个系统,因此需要检验每个用户的合法性,管理用户登录的 login.java 正是要完成这样的功能。类中定义了个 private 属性和他们对应的 setX()/getX()方法和默认构造函数和execute() getSql() 操作。private 属性分别是:private String username;/登录用户名 private String passwd;/登录密码 private boolean isadmin;/是否管理员登录 private long userid=0;
22、/用户 ID 号重要操作:主要介绍 execute()execute()操作功能:从数据库中查询用户信息。返回值:boolean 型,如果取值成功返回 true,否则,返回 false。设计思路:获得数据库连接对象 Connection 对象,ResultSet 对象和Statement 对象 调用 getSql()方法获得 sql 语句执行 sql 语句。程序主干部分代码:public boolean execute() throws Exception try con=DataBase.getConnection(); stmt=con.createStatement(); rs = st
23、mt.executeQuery(getSql(); catch(Exception e) e.printStackTrace(); while (rs.next()13 / 31 if (!isadmin) userid = rs.getLong(id); flag = true; 2:op_book.java该类主要负责图书的管理,包括图书的修改,查询,删除和添加等。op_book 类有以下属性: private book abooks = new book(); /新的图书类 private javax.servlet. . ServletRequest request; /建立页面请求
24、private boolean sqlflag = true ; /对接收到的数据是否正确 private Vector booklist; /显示图书列表向量数组 private int page = 1; /显示的页码 private int pageSize=5;/每页显示的图书数 private int pageCount =0;/页面总数 private long recordCount =0; /查询的记录总数 public String sqlStr=; op_book 类有以下方法(省去了属性对应的 getX()/setX()方法):book_search();完成图书查询,包
25、括分类,关键字查询。 delete();负责图书的删除。 getOnebook();主要完成图书的单本查询,用于支持页面的“查看详细信息” 。 insert();负责图书的添加。 to_String();把字符串以“ISO 8859-1”编码形式输出,使页面正常显示。 update();负责修改图书信息。14 / 31 getRequest();负责接受页面传递过来的参数,分解并将参数存放到 abooks 对象中。重要操作:主要介绍 getRequest() getRequest()方法功能:负责从页面接受表单数据并分解,设置 abooks 对象相应属性。参数设计:页面传递的 Request
26、对象,其中包括表单数据。 返回值:boolean 型,true 表示成功,否则返回 false。 设计思想:获取页面传递的 Request 对象分解Request 对象获取表单参数值把参数值设置成图书对象abooks 相对应的属性值。 程序主干代码:public boolean getRequest(javax.servlet. . ServletRequest newrequest) request = newrequest; String BookName = request.getParameter(BookName);abooks.setBookName(to_String(BookN
27、ame);String author = request.getParameter(author);abooks.setAuthor(to_String(author);String publish = request.getParameter(publish); abooks.setPublish(to_String(publish);String bookclass = request.getParameter(bookclass);abooks.setBookClass(bc);String bookno = request.getParameter(bookno);abooks.set
28、BookNo(to_String(bookno);String picture = request.getParameter(picture);abooks.setPicture(to_String(picture);price =new Float(request.getParameter(price).floatValue();abooks.setPrice(price); amount = new Integer(request.getParameter(amount).intValue();15 / 31abooks.setAmount(amount); String Content
29、= request.getParameter(Content); abooks.setContent(to_String(Content);. 3:op_user.java: 为了使用上的方便,我们把对用户的管理,包括用户的添加,删除,修改,查询等集合成一个管理类。 该类具有以下属性: private user user = new user(); /新的用户对象 private javax.servlet. . ServletRequest request; /建立页面请求 private Vector userlist;/显示用户列表向量数组 private int page = 1;/显
30、示的页码 private int pageSize=8;/每页显示的图书数 private int pageCount =0;/页面总数 private long recordCount =0; /查询的记录总数 private String message = ; /出错信息提示 private String username = ; /注册后返回的用户名 private long userid = 0; /注册后返回的用户 ID该类具有的主要方法(省去了属性相关的 getX()/setX()操作): add():负责用户的添加。 delete():负责删除指定 ID 的用户。 get_al
31、luser():取出书店所有用户的信息。 getGbk():返回指定字符串的 GBK 编码。 getUserinfo():负责取得用户的详细信息。 update():负责修改用户资料。 getRequest():获取表单数据,并分解存储。4:op_buy.java我们把业务逻辑和对订单以与和订单列表的管理集成到了该类当中。该类具有以下属性:private javax.servlet. . ServletRequest request; /建立页面请求16 / 31 private Session session; /页面的session; private boolean sqlflag = t
32、rue; /对接收到的数据是否正确 private Vector purchaselist; /显示图书列表向量数组 private Vector allorder; /订购单列表 private Vector order_list; /订单清单列表 private int booknumber = 0; /购书总数量 private float all_price = 0; /购书总价钱 private boolean isEmpty = false; /库中的书数量是否够购买的数 private int leaveBook = 0; /库存数量 private String orderId
33、 = ; /用户订单号 private boolean isLogin = true; /用户是否登录! private int page = 1; /显示的页码 private int pageSize = 15; /每页显示的订单数 private int pageCount = 0; /页面总数private long recordCount = 0; /查询的记录总数该类的主要操作(省去了属性相关的 getX()/setX()操作)addnew():负责向购物车中添加新购买的图书。delete():负责从数据库中删除指定ID的订单。modiShoper():负责修改购物车中已选的图书。
34、delShoper():负责删除购物车中的物品。getAllorder():负责从数据库中的订单列表中查询指定用户的订单列表。getGbk():获得指定字符串的GBK编码。getOrder():获得单个订单对象。payout():提交购物车,把订单插入到数据库中。update():该方法负责当用户付款后,把数据中对应订单的是否付款标记修改成已付状态。重要操作:主要介绍addnew()addnew()方法功能:负责向购物车中添加一条新记录。参数设计:页面传递的 request 对象。返回值:boolean 类型,成功返回 true,否则返回 false。设计思路:从页面获得表单数据(reques
35、t 对象中)-获得图书编号等参数值判断购买数量是否合法如果是可以操作,否则不能操作判断是否第一次购买17 / 31如果是第一次购买,按第一次购买操作否则查询购买列表,找是否有相应项,有则直接修改数量否则添加新记录。函数代码: public boolean addnew( ServletRequest newrequest) throws Exception request = newrequest; String ID = request.getParameter(bookid); String Amount = request.getParameter(amount); long booki
36、d = 0; int amount = 0; try bookid = Long.parseLong(ID); amount = Integer.parseInt(Amount); catch (Exception e) return false; if (amount rs.getInt(1) leaveBook = rs.getInt(1);isEmpty = true;return false;18 / 31 DataBase.closeResultSet(rs); DataBase.closeStatement(stmt); DataBase.closeConnection(con);
37、 catch (SQLException e) return false; allorder iList = new allorder(); iList.setBookNo(bookid); iList.setAmount(amount); boolean match = false; /是否购买过该图书 if (purchaselist = null) /第一次购买 purchaselist = new Vector(); purchaselist.addElement(iList); else / 不是第一次购买 for (int i = 0; i purchaselist.size();
38、 i+) allorder itList = (allorder) purchaselist.elementAt(i); if (iList.getBookNo() = itList.getBookNo() itList.setAmount(itList.getAmount() + iList.getAmount(); purchaselist.setElementAt(itList, i); match = true; break; /if name matches结束 / for循环结束 if (!match) purchaselist.addElement(iList); session
39、.setAttribute(shopcar, purchaselist); return true;19 / 314.2.2客户界面设计与实现1:界面头和界面尾设计。 为了提高代码的重用性,我把客户界面部分一样的头和尾作成两个独立的块,分别命名为 head.inc 和 tail.inc。这两个文件是单纯的 html 代码,在 jsp 页面中只要通过以下语句就可以实现对两个文件的调用: 他们的效果如下图 4-1:图 4-1 界面头和尾部分显示效果用户登录界面 login.jsp 代码如下:2:用户登录模块的设计。为了检验用户是否合法,所以需要输入用户名和密码来验证用户的合法性,用户登录模块刚好完
40、成这样的一个功能。该模块需要用到 login.java(见 4.4.3 1)这个 bean。需要设计一个表单让用户输入信息。效果图如下:图 4-2图 4-2 用户登录界面3.在线购书功能模块设计。 在该模块用户可以看见书店现有的样子,用户可以查找书通过分类,关键字查找。户可以购买图书,页可以查看图书的详细资料,还可以跳转到其他的模块,例如查看购物车,查看订单信息等。在这个模块中我们要用到 JavaBean 有bookshop.book.book,bookshop.run.op_book,bookshop.run.op_bookclass 三个JavaBean。对于他们的介绍我已经在前面介绍了这
41、里就不在一一罗列了。详情见 4.221 / 31和 4.3 其中我把导航条抽出来单独作为一个模块:sub.inc 左边的查找框也单独设计成一个模块:left.inc 两个纯粹的 html 代码部分,在 jsp 页面中直接调用。效果如下图4-3 所示:图 4-3 在线购书模块效果显示在线购书页面模块 booklist.jsp 代码如下:4:购物车模块页面设计。 在购物车这个模块当中用户可以修改购买数量,可以删除已选图书,可以提交购物车,也可以清空购物车,同时也可以继续购书。在这个模块中我们用到了bookshop.run.op_book,bookshop.run.op_bookclass,book
42、shop.run.op_buy 三个 JavaBean.关于他们的介绍在前面已经罗列出来了这里就不在一一说明了。该模块运行时效果如图 4-4 所示:图 4-4 购物车模块显示效果页面核心代码如下 shopcar.jsp:23 / 31% String userid = (String) session.getAttribute(userid);if ( userid = null )userid = ;String modi = request.getParameter(modi);String del = request.getParameter(del);String payoutCar
43、= request.getParameter(payout);String clearCar = request.getParameter(clear);String mesg = ;if (modi!=null & !modi.equals() if ( !shop.modiShoper(request) )if (shop.getIsEmpty()mesg = 你要的修改购买的图书数量不足你的购买数量!;elsemesg = 修改购买数量出错!; else mesg = 修改成功;else if ( del != null & !del.equals() ) if ( !s
44、hop.delShoper(request) ) mesg = 删除清单中的图书时出错! ;else if (payoutCar != null & !payoutCar.equals() ) if (shop.payout(request) ) mesg = 你的购物车中的物品已提交给本店,你的订单号为 + shop.getOrderId() + 请与时付款,以便我们发货!;session.removeAttribute(shopcar); else if(!shop.getIsLogin()24 / 31mesg = 你还没有登录,请先登录后再提交;else mesg = 对不起,
45、提交出错,请稍后重试,shop.payout 出错!; else if (clearCar != null & ! clearCar.equals() ) session.removeAttribute(shopcar);mesg = 购物车中的物品清单已清空;%5其他页面显示效果图。图 4-5 订单页面显示效果订单页面我们可以看到自己已经提交的所有订单,可以查看订单的状态和详细情况。并色环境以弹出窗口的形式显示订单信息。这种功能主要是通过 javascript 脚本语言实现的。如:function openScript(url,name, width, height)var Win
46、= window.open(url,name,width= + width + ,height= + height + ,resizable=1,scrollbars=yes,menubar=no,status=yes );function checklogin() 25 / 31if (document.payout.userid.value=)alert(你还没有登录,请登录后再提交购物清单。);return false;return true;function check()if (document.change.amount.value1)alert(你的购买数量有问题);docume
47、nt.change.amount.focus();return false;return true;26 / 31第 5 章 系统测试5.1 数据库连接在系统的整个开发工程中,我们最容易碰到的难题是数据库连接这个模块。在JavaBean 中连接数据库注意的一些事项有: 1 首先要下载 Microsoft SQL Server 2000 Driver for JDBC 这个包,并安装。 2 把 Microsoft SQL Server 2000 Driver for JDBC 的 lib 文件夹下的:msbase.jar,mssqlserver.jar,msutil.jar 三个文件拷贝到 To
48、mcat 安装目录下的commen/lib 文件夹下。 3 把 msbase.jar,mssqlserver.jar,msutil.jar 三个文件的路径添加到CLASSPATH 中。 4 如果使用的操作系统是 Windows xp 在安装 SQL Server2000 后必须下载 SP3补丁并安装,否则打不开 1433 端口号。在数据库连接中出现问题将会出现异常提示信息:org.apache.jasper.JasperExceptionorg.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
49、org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)javax.servlet. . Servlet.service( Servlet.java:802)root cause java.lang.NullPointerExceptionbookshop.run.login.execute(login.java:83)org.apache.jsp.bookshop.admin.
50、adm_005flogin_jsp._jspService(adm_005flogin_jsp.java:72)org.apache.jasper.runtime. JspBase.service( JspBase.java:94)javax.servlet. . Servlet.service( Servlet.java:802)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)27 / 31org.apache.jasper.servlet.JspServlet.serviceJsp
51、File(JspServlet.java:292)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)javax.servlet. . Servlet.service( Servlet.java:802)如图 5-1 所示:图 5-1 数据库连接异常这个时候可能出现的问题是数据库服务器没有开启,或者是没有安装 Microsoft SQL Server 2000 Driver for JDBC 这个包。5.2 检测运行速度一、用 Ajax 提高用户体验 由于我的上字体的大小是根据点击次数决定,所以每次点击都要提交到服务
52、器端并记录次数,再在客户端打开。这在 localhost 测试的时候没有发现问题,但是部署到服务器上,会感到明显的等待。解决办法就是用 Ajax。用户点击后就直接打开,再通过Ajax 将点击的事件提交到服务器端记录。这样用户感觉不到任何延时。 二、将逻辑移到客户端的 javascript 中在开始的时候, “标签高亮”和“手气不错”的功能都是提交到服务器端操作,然后28 / 31返回结果的。后来,我发现其实很多逻辑是可以移到客户端,由 javascript 来实现的。Javascript 非常强大,可以完成很多复杂的逻辑。将逻辑移到客户端的 javascript 中,可以很有效的减少和服务器通
53、讯的次数,获得更好的访问速度。 三、解决进程的 由于采用的是 fastCGI 的方式,我配置了 django.fcgi。可是,我发现系统进程中,有大量的 django.fcgi 进程被标记为 (失去功能)。这些进程会导致服务器有时无常访问。我开始尝试用命令来 kill 掉这些进程,但是很快发现这无法从根本上解决问题。后来,我看到一个老外在 blog 上提到一个解决方案,将 django.fcgi 改名为 dispatch.fcgi。原来,dispatch.fcgi 是一个 dreamhost 的系统进程,它的健壮性是可以得到保障的。果然,我将 django.fcgi 改名为 dispatch.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁夏黄河农村商业银行科技人员社会招聘备考题库及参考答案详解
- 随机变量课程设计
- 儿童托管师资2025年十年薪酬体系优化报告
- 2025年医疗废物隔离塑料袋发展报告
- 中国电力科学研究院有限公司2026年高校毕业生招聘200人的备考题库及一套答案详解
- 2025年温州瓯海区人民医院公开招聘2人模拟笔试试题及答案解析
- 2025年招商银行海口分行社会招聘备考题库及答案详解一套
- 2025中国农业科学院饲料研究所家禽营养与饲料创新团队科研助理招聘1人(北京)考试重点试题及答案解析
- 2025年电力线缆检测机器人技术报告
- 2025年新能源分布式发电并网在绿色数据中心冷却系统中的节能分析
- 第三方协议合同范本
- 《元旦新气象梦想再出发》主题班会
- 《法制教育守护成长》主题班会
- 利用对称性计算图示结构,作弯矩图EI=常数
- 某图书馆应急救援体系研究
- 《淳安县养老服务设施布局专项规划(2022-2035年)》
- DZ/T 0426-2023 固体矿产地质调查规范(1:50000)(正式版)
- 麻醉科临床技术操作规范2023版
- 消防系统瘫痪应急处置方案
- GB/T 11417.5-2012眼科光学接触镜第5部分:光学性能试验方法
- 《寝室夜话》(4人)年会晚会搞笑小品剧本台词
评论
0/150
提交评论