当前位置:文档之家› 软件架构小组实验报告1-3

软件架构小组实验报告1-3

软件架构小组实验报告1-3
软件架构小组实验报告1-3

中南大学

软件开发架构平台技术

实验报告

姓名:学

号:班级:

指导老师:

完成时间:

2014-05

实验一基于MVC的JPetStore开发

一、完成项目的过程和时间安排

完成过程:实验由我们小组三人合作完成,考虑到我们对这个实验相关的知识都还比较陌生,我们商量后决定每个人做自己的,遇到问题互相讨论,最终我们小组成员也都先后完成实验,达到实验预期的目标,完成了基于MVC的JPetStore 的开发。

时间安排:我们小组利用三天时间完成实验,事先对相关知识的熟悉大概花费了1天的时间,大部分的时间都用来编码和调试。

二、遇到的问题和解决方法

简单的说一下做的过程中遇到的几个问题,有些问题虽然看着很简单,但是

在实验过程中确实经常因为一些很简单的问题卡很久。

问题1.商品展示部分product只能显示一条内容

解决方法:一开始是以为jsp页面显示出了问题,但是没有检查出结果,后来发现页面显示出的全都是每一个类型的第一条内容,后来我开始在servlet方面查错,通过一层层的调用system.out.println()方法,最终发现我在DA0层的Impl 实现类中把while写成了if,问题的原因也就显而易见了。

问题2.在商品展示模块,所有的图片都无法正常显示

解决方法:经过检查jsp页面内容都没有出错,后来发现由于组织工程的文件夹内容不同,在数据库中的路径写的不一致,他用的是绝对路径,我改成了相对路径后问题解决。

问题3.在编写OrderDAOImpI的过程中出现了时间类型不匹配的情况解决方法:一直报类型转换错误的异常,我很奇怪异常中写道必须为Date类,

可是确实用的Date类的对象。后来通过上网查找问题发现这是由于

pStatement.setDate 需要一个java.sql.Date 类的对象。而我传给它的参数

是一个java.util.Date 类的对象,于是我用这个的语句解决了这个问题:

pStateme nt.setDate(3, new

java.sql.Date(order.getOrderDate().getTime()));

问题4.如何读取checkbox中是否勾选信息

解决方法:一开始我认为checkbox返回的是boolean类型的值,后来通过上网查资料发现,如果不勾选时checkbox所对应属性的值为null,于是我用了这样的语句判断是否勾选。

Boolea n ship =

request.getParameter( "shippingAddressRequired" )== null ;

account .setListOption(request.getParameter( "account.listOption

").equals( "true" ) ? true : false );

问题5.没有找到例子中的合适的检测是否登录的方法

解决方法:由于给的例子用了框架等方法,没有找到可以用的检测是否在登录状态的类,于是我自己写了一个方法。

public Boolea n getAcco un tByUser nameA ndPassword Only (Acco unt

acco unt) {

boolean selectResult = false ;

Conn ecti on connection = DBUtil. getCo nn ecti on ();

try {

PreparedStateme nt pStateme nt = conn ecti on

.prepareStateme nt( getAccou ntByUsernameA ndPassword On lySql );

pStateme nt.setStri ng(1, acco un t.getUser name());

pStateme nt.setStri ng(2, acco un t.getPassword());

ResultSet resultSet = pStateme nt.executeQuery();

if (resultSet.next()) {

selectResult = true ;

}

DBUtil. closeResultSet (resultSet);

DBUtil. closePreparedStateme nt (pStateme nt);

DBUtil. closeC onn ecti on (conn ecti on);

} catch (Exception e) {

e.pri ntStackTrace();

}

retur n selectResult;

}

三、小组成员分工

组长:张先凯

小组三人均独立完成实验要求内容

实验二用AJAX改进用户体验

一、项目应用了AJAX技术的功能模块以及有无使用框架。

运用了Ajax技术的功能模块:

1.账号管理模块。在新建账号和修改账号信息页面上用AJAX技术进行表单

验证。包括密码与二次输入密码是否一致,用户名是否重复等等。

2商品查询模块。在首页右上角的查询商品中增加了自动补全功能,并可以用鼠标和键盘

上线移动选中高亮部分,输入框的内容也会随着鼠标键盘的移动而移动。

3.主页商品展示模块。在首页展示商品的图片上添加了AJAX效果,即当

鼠标移到某个商品图片上时,用悬浮窗动态加载该类型商品的信息。

三个模块中均未使用框架技术。

二、说明应用AJAX技术的理由、具体实现方法和核心源代码。

理由:将整个页面刷新转化为局部刷新功能,改进响应效果,增强用户体验。

具体实现方法:

1.点击按钮或者鼠标失焦等操作触发ajax操作。

2?在js接收传来的值,并利用Json对象与服务器异步交互。在没有接收到服务

器的响应之前,Jsp页面做出响应的等待的响应的反应。

3?得到响应后刷新相应的div或者控件或者显示加载失败。

核心源代码:

模块一:账号管理模块

NewAcco un t.jsp

JSf弋码: