310 likes | 461 Views
Java Web. 企业宣传网站. 计算机与信息工程系. 由 Java Web 课程组提供. 需求描述. 某电子商品销售公司为了提升企业形象和商品销售量,决定开发一个公司形象宣传和商品介绍的网站。基本功能如下: 1 、站内新闻 2 、商品展示 3 、在线聊天 4 、留言簿 5 、后台管理 实现要求: 语言: JSP ,数据库: SQL Server. 项目实施和课程安排. 效果显示( 6-1 ). 网站首页: 商品展示 站内新闻 在线聊天 留言簿 后台管理. 效果显示( 6-2 ). 商品展示: 商品列表 商品信息. 效果显示( 6-3 ).
E N D
Java Web 企业宣传网站 计算机与信息工程系 由Java Web课程组提供
需求描述 某电子商品销售公司为了提升企业形象和商品销售量,决定开发一个公司形象宣传和商品介绍的网站。基本功能如下: 1、站内新闻 2、商品展示 3、在线聊天 4、留言簿 5、后台管理 实现要求: 语言:JSP,数据库:SQL Server
效果显示(6-1) • 网站首页: • 商品展示 • 站内新闻 • 在线聊天 • 留言簿 • 后台管理
效果显示(6-2) • 商品展示: • 商品列表 • 商品信息
效果显示(6-3) • 站内新闻: • 新闻列表 • 新闻内容
效果显示(6-4) • 在线聊天: • 登录和注册 • 聊天页面
效果显示(6-5) • 留言簿: • 留言列表 • 回复留言 • 新留言
效果显示(6-6) • 后台管理: • 管理员登录 • 分类管理
项目分组 • 三人一组,合作开发 公司宣传网站 协助 协助 组长A 组员C 组员B 后 台 页 面 后 台 管 理 商 品 管 理 首 页 设 计 在 线 聊 天 留 言 簿 后 台 管 理 站 内 新 闻 后 台 管 理 新闻管理 商品管理 系统管理
项目准备阶段A任务 • 项目框架搭建: • 项目名称:company • 各级包的命名:s2jsp.bysj下创建包dao和entity • Web Root下文件夹命名: • \(根目录) • admin(后台管理文件夹) • chat(在线聊天文件夹) • image(图片文件夹) • css(样式表文件夹) • 公共类的创建:BaseDao.java : • 获取数据库连接对象方法:getConn( ),并返回Connection 对象 • 数据库操作方法(增、删、改):executeSQL( ) • 关闭结果集、声明和连接的方法:closeAll( )
项目准备阶段B任务 • 数据库、数据表的创建 • 数据库:company • 数据表:RPODUCT • 创建实体类:Product.java • 完成top.jsp页面
项目准备阶段C任务 • 数据库、数据表的创建 • 数据库:company • 数据表:NEWS • 创建实体类:News.java • 完成根目录下left.jsp页面
项目准备阶段难点分析 • 公共类的实现: • execudeSQL( )方法 • SQL语句的参数设置 publicint executeSQL(String preparedSql,String[ ] param) { try { conn = getConn(); // 得到数据库连接对象 pstmt = conn.prepareStatement(preparedSql); if( param != null ) { for( int i = 0; i < param.length; i++ ) { pstmt.setString(i+1, param[i]); } } pstmt.executeUpdate(); // 执行SQL语句 } catch (Exception e) { e.printStackTrace(); // 处理异常 } finally { closeAll(conn,pstmt, null); // 释放资源} return num; } 为预编译sql设置参数
第一次集中编码:A任务 • 用户表USERS的创建 • 聊天室用户登录验证: • 登录页面:index.jsp • 身份验证代码:registerManage.jsp • 合法用户:进行入聊天页面 • 不合法:返回到注册页面 • 用户注册: • 注册页面:register.jsp • 注册操作:registerManage.jsp • 注册成功:返回到登录页面 • 注册失败:提示"注册失败",返回到注册页面 • 显示进入聊天室的所有登录用户列表 : • showUserList.jsp
第一次集中编码: B任务 • 实现商品列表: • 创建商品的业务类:ProductDao.java • 建立查询方法:findAllProduct( ),返回商品列表 • 页面显示商品列表:showProductList.jsp • 查看商品信息 • 在业务类中建立根据商品ID查找商品的方法: findProductByID(String productID),返回封装商品信息的商品对象 • 在页面中显示商品信息:detailProduct.jsp
第一次集中编码: C任务 • 实现新闻列表: • 创建新闻业务类:NewsDao.java • 建立查询方法:findAllNews( ),返回新闻列表 • 页面显示新闻列表:showNewsList.jsp • 查看新闻信息: • 在新闻业务类中建立根据新闻ID查找新闻内容的方法:findNewsByID( String newsID),返回封装了新闻信息的新闻对象 • 在页面detailNews.jsp中显示新闻内容
第一次集中编码:难点分析(2-1) • 在线聊天中用户注册的实现: • … • Users user = userDao.findUsers(userName, password); • if (user != null) { • List userList = (List) application.getAttribute("users"); • if (userList == null || userList.size() == 0) { • userList = new ArrayList(); • userList.add(userName); • } else { • boolean bool = true; • for (int i = 0; i < userList.size(); i++) { • if (userName.equals(userList.get(i).toString())) { • bool = false; • break; • } • } • if (bool) userList.add(userName); • } • session.setAttribute("user", user); • application.setAttribute("users", userList); • … • } 针对第一个登录者的操作 针对其他登录者的操作
第一次集中编码:难点分析(2-2) • 超链接传递数据: • 新闻列表新闻ID新闻内容 • 商品列表商品ID 商品信息 以参数的形式追加到地址后 • … • <a href="detailNews.jsp?newsID=<%=news.getNewsID() %>"> • <%=news.getTitle()%> • <font color="red">[<%=news.getWriterDate()%>]</font> • </a> • …
第二次集中编码: A任务 • 发送聊天信息: • 页面:sendMessage.jsp • 显示所有用户聊天信息:message.jsp • 说话人 • 说话内容 • 自动刷新页面: • 使用框架整合页面: • main.jsp
第二次集中编码:B任务 • 完善查看商品信息 • 页面的设计 • 数据的显示 • 网站首页的设计
第二次集中编码: C任务 • 完善显示新闻内容 • 页面设计 • 数据的显示 • 建立"售后服务"页面 • 建立"关于我们"页面 • 完成网站首页的新闻列表
第二次集中编码:难点分析 • 显示聊天信息页面的实现: • 如何保存信息 • 如何显示信息 • <% • request.setCharacterEncoding("gbk"); • List messageList = (List) application.getAttribute("messageList"); • String message = request.getParameter("message"); • Users user = (Users) session.getAttribute("user"); • if (messageList == null || messageList.size() == 0) { • messageList = new ArrayList(); • application.setAttribute("messageList",messageList); • } • if (message != null && !"".equals(message)) { • messageList.add(“<img src=‘../image/iboy.gif’ /> <font color=‘blue’>”+user.getUserName() + “ <b>说:</b></font> • <br /> “+ message);} • %> 从application中 取出聊天信息列表 向messageList中 添加当次聊天信息
第三次集中编码: A任务 • 设计留言列表页面 • 页面:messageBoard.jsp • 实现回复功能: • 回复页面:revertMessage.jsp • 保存回复信息:saveRevert.jsp • 查看留言和回复信息: • 完善revertMessage.jsp
第三次集中编码: B任务 • 后台管理登录验证 • 非注册用户:提示"用户名或密码错误" • 注册用户:提示"非管理员" • 管理员:跳转到"admin/index.jsp"页面 • 后台管理: • 商品管理 • 添加商品
第三次集中编码: C任务 • 后台页面设计 • 左侧菜单的实现:left.jsp • 后台页面框架的实现:index.jsp
第三次集中编码:难点分析 • 后台管理登录验证: • 根据用户名和密码判断当前用户是否存在 • 如果存在,判断用户的身份(status) • <% • String userName = request.getParameter("userName"); • String password = request.getParameter("password"); • UserDao userDao = new UserDao( ); • Users user = userDao.findUsers(userName, password); • if (user != null) { • if (user.getStatus() == 1) { • session.setAttribute("userSession", user); • response.sendRedirect("index.jsp"); • } else { • out.print("<script type=‘text/javascript’>alert(‘你不是管理员, • 登录失败。');location.replace('../index.jsp');</script>"); • } • } else { • out.print("<script type=‘text/javascript’>alert(‘登录失败, • 帐号或密码错误。');history.go(-1);</script>"); • } • %> 登录成功,转发 到后台管理页面 非管理员登录 非注册用户登录
第四次集中编码: A任务 • 新留言的实现 • 页面:newMessage.jsp • 保存留言:saveMessage.jsp • 后台管理—系统管理: • 添加管理员 • 用户管理
第四次集中编码: B任务 • 后台管理—商品管理 • 商品列表:manageProduct.jsp • 修改商品信息:updateProduct.jsp • 删除商品:manageProduct.jsp?action=delete
第四次集中编码: C任务 • 后台管理—新闻管理 • 添加新闻:addNews.jsp • 新闻列表:manageNews.jsp • 删除新闻:manageNews.jsp?action=delete
第四次集中编码:难点分析 • 后台管理中信息的删除: • 同一个页面处理不同的请求 • <% • NewsDao newsDao = new NewsDao(); • String action = request.getParameter("action"); • if(action!=null && "delete".equals(action)){ • String newsID = request.getParameter("newsID"); • newsDao.deleteNewsByID(newsID); • out.print("<script type='text/javascript'> • alert('成功删除一条新闻。');</script>"); • } • List newsList = newsDao.findAllNews(); • for(int i=0;i<newsList.size();i++){ • News news = (News) newsList.get(i); • %> • //页面显示代码 • <% } %> 删除操作 显示列表