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

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

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

中南大学

软件开发架构平台技术

实验报告

姓名:

学号:

班级:

指导老师:

完成时间:2014-05

实验一基于MVC的JPetStore开发

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

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

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

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

简单的说一下做的过程中遇到的几个问题,有些问题虽然看着很简单,但是在实验过程中确实经常因为一些很简单的问题卡很久。

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

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

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

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

问题3. 在编写OrderDAOImpl的过程中出现了时间类型不匹配的情况

解决方法:一直报类型转换错误的异常,我很奇怪异常中写道必须为Date类,可是确实用的Date类的对象。后来通过上网查找问题发现这是由于pStatement.setDate 需要一个java.sql.Date类的对象。而我传给它的参数是一个java.util.Date类的对象,于是我用这个的语句解决了这个问题:pStatement.setDate(3,new

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

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

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

Boolean ship =

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

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

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

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

public Boolean getAccountByUsernameAndPasswordOnly(Account account) {

boolean selectResult = false;

Connection connection = DBUtil.getConnection();

try {

PreparedStatement pStatement = connection .prepareStatement(getAccountByUsernameAndPasswordOnlySql);

pStatement.setString(1, account.getUsername());

pStatement.setString(2, account.getPassword());

ResultSet resultSet = pStatement.executeQuery();

if (resultSet.next()) {

selectResult = true;

}

DBUtil.closeResultSet(resultSet);

DBUtil.closePreparedStatement(pStatement);

DBUtil.closeConnection(connection);

} catch (Exception e) {

e.printStackTrace();

}

return selectResult;

}

三、小组成员分工

组长:张先凯

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

实验二用AJAX改进用户体验

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

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

1.账号管理模块。在新建账号和修改账号信息页面上用AJAX技术进行表单验证。包括密码与二次输入密码是否一致,用户名是否重复等等。

2.商品查询模块。在首页右上角的查询商品中增加了自动补全功能,并可以用鼠标和键盘上线移动选中高亮部分,输入框的内容也会随着鼠标键盘的移动而移动。

3. 主页商品展示模块。在首页展示商品的图片上添加了AJAX效果,即当鼠标移到某个商品图片上时,用悬浮窗动态加载该类型商品的信息。

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

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

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

具体实现方法:

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

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

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

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

核心源代码:

模块一:账号管理模块

NewAccount.jsp

JS代码: