中南大学
软件开发架构平台技术
实验报告
姓名:
学号:
班级:
指导老师:
完成时间: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; account.setListOption(request.getParameter("account.listOption ").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;
}
三、小组成员分工
组长:张先凯
小组三人均独立完成实验要求内容。