火龙果?整理 uml.org.cn 有可能的关键字组合用全部小写规范写就解决了这一问题。而在Java中正好有这样一个处理String类型的方法: toLowerCase()对于前导空格和后导空格的问题,在Java中同样给出了解决的方法:trim() 所以完整的代码: String searchform =
request.getParameter(\
//把从form表单中读取到的String类型的数据在作小写处理和忽略前导和后导空格后放入到//searchform这一个变量对象中
if(searchform.equals(\
searchform.equals(\searchform.equals(\
//注意这里的所有可能出现的组合必须要用小写形式
request.getRequestDispatcher(\
rd(request, response);
//跳转到《Harry Potter Boxed Set》一书的页面 }
4.5 购书系统的实现
用户点击自己喜欢的图书页面就会跳转到该书的详细介绍页面,其中包括该书的书名、ISBN、市场价格和本网站提供的更加优惠的价格等信息,用户在这一页面就可以实现购书的具体操作。以《Harry Potter Boxed Set》一书作为该系统设计和实现的例子。
要实现购书这一动作本系统设置了一定的权限,只有注册用户在登陆的状态下才有这一权限。如果用户在没有登陆状态下实行购买,系统会停留在原来的页面上同时给出要求以登陆状态购买的信息并且比较友好的出现注册和登陆的两个按钮,这两个按钮原先是不存在的,只有用户在这样的误操作状态下才会出现。
火龙果?整理 uml.org.cn
图10 购买图书图
图11 购买失败图
同时本系统要求用户必须在数量这一文本框中填入用户想购买的数量,如果没有填写同样是一次误操作。以下是这些功能实现的代码: 在Servlet组件中处理:
if(session.getAttribute(\Errors error = new Errors();
HashMap errtime = error.errInform(\就可以了 request.setAttribute(\
request.getRequestDispatcher(\
rd(request, response);
}else{
if(request.getParameter(\
request.getParameter(\
火龙果?整理 uml.org.cn Errors error = new Errors();
HashMap errNull = error.errInform(\
request.setAttribute(\
request.getRequestDispatcher(\
rd(request, response); 在显示组件Jsp中: <%
HashMap timeout = (HashMap)request.getAttribute(\这的getAttribute的名字要和相对应的setAttribute对应 if(timeout != null){
String errortimeout = (String)timeout.get(\ if( errortimeout != null){
System.out.println(\没有登陆操作或session已经过期\ %>
HashMap error = (HashMap)request.getAttribute(\if(error != null){ String errorNull = (String)error.get(\ 火龙果?整理 uml.org.cn if( errorNull != null){ System.out.println(\用户没有填写想购买的数量\ %> 如果用户没有产生任何的误操作那么页面就会跳转到清单列表的Jsp页面,其中把用户之前的所有的放入购物车ShoppingCart中的书都罗列出来,并显示这些书的相关信息以及用户应付的总价。因为有的时候书本的价格等会随时变动那么把书本的相关信息以静态网页形式表现出来显然不是很合理并且对于数据维护人员的后期维护会带来相当麻烦。为了解决这一问题本系统把书本的相关信息从数据库中读出来,那么数据维护人员可以根据不同时间对于书本信息的改变只要在数据库中完成即可,显然会方便很多具有可行性。因为书本的ISBN号是唯一的且不会改变,所以只要把书本的ISBN号从网页中读到然后从数据库中读取书本信息中跟该ISBN号匹配的书本信息就可以实现了。 ResultSet rs = database.stmt.executeQuery(\* from CartoonbookInfo where bookisbn='C01' \ShoppingCart myShoppingCart = (ShoppingCart) session.getAttribute(\ Book book =new Book(null, null, null, null); while(rs.next()){ book.setBookIsbn(rs.getString(\book.setBookName(rs.getString(\book.setBookPrice(rs.getString(\ book.setBookNumber(request.getParameter(\myShoppingCart.addBook(book); 火龙果?整理 uml.org.cn 图12 查看购物车内信息图 接下去用户可以继续购物,页面上提供了这样的按钮,如果用户把自己所需要的书已经已经都放入了购物车想要完成此次购买的那么就需要提供用户更加具体的信息来完成这次定单。 图13 提交购物定单图 用户把相关信息提供之后点击“下一步”按狃就完成了本次购买。 如何把用户的这次购买的相关信息准确的反映给工作人员完成后期的配送货呢?问题的答案就是把相关的信息作为数据库中ShoppingInfo表的数据插入,那么工作人员只要看到数据库中的信息就可以知道需要什么书送到什么地方的哪位客户那里,并且根据用户需要的运输方式及时的完成本次定单让用户满意。 if(request.getParameter(\ShoppingCart myShoppingCart = (ShoppingCart)session.getAttribute(\Book[] items = myShoppingCart.BookList(); for (int i = 0; i < items.length; i++){ database.stmt.execute(\ (userName, userAddress, userTelephone, transport, bookName, bookPrice, bookIsbn, bookNumber) values ('\