课程设计报告 | ||
(本科/专科) | ||
课程: | Javaweb程序设计 | |
学号: | ||
姓名: | ||
班级: | ||
教师: | 朱强 | |
时间: | 2019年11月18日 | |
计算机学院 | ||
设计名称: |
基于Javaweb的小米商城 |
设计内容、目的与要求: |
内容: 在客户端综合编程实验的基础上,结合JSP&JDBC等技术,完成商城后台管理系统的主体模块(登录、产品、产品信息等),实现相应信息的数据动态显示和后台操作功能,主要包括相关数据库设计以及用户登录功能、产品列表动态数据库表内容列表展示功能、购物车添加及与数据库的后台交互功能等,并能够借助开发工具进行服务端代码调试。 目的: 通过JSP&JDBC的综合运用,掌握中小型Java Web应用系统服务端数据库编程的基本原理和常用技术,具备进行服务端数据库表设计和JSP页面JDBC编程的基本动手能力。具体包括: 1) 编写Java代码,熟悉并掌握JDBC的使用,包括Connection、Statement、PreparedStatement和ResultSet等对象的原理和常用方法; 2) 编写JSP页面,熟悉并掌握JDBC在JSP页面中的应用语法、控制结构,掌握JSP内置对象的使用以及服务端调试技术; 3) 实现JSP&JDBC等服务端编程技术的融汇贯通,掌握对单表和关联关系表进行CRUD等常规数据操作,并达到服务端页面的合理代码布局、动态网页呈现和实时性交互。 要求: 1) 数据库表的合理设计,包括自增主键设计、合理主外键关联设计、基础数据表设计等; 2) JDBC开发包和驱动包的概念和作用,面向接口编程思想的理解; 3) JDBC驱动包在Java Web工程中的引入机制; 4) java.sql.*开发包下Connection、Statement、PreparedStatement、ResultSet等常用JDBC对象的应用; 5) Statement对象和PreparedStatement对象在不同场合的灵活运用,及其发送SQL语句的不同使用方式; 6) ResultSet对象的遍历运用; 7) JDBC编程步骤; 8) JSP JDBC模块编程的开发步骤和基本规范; 9) JSP页面传递请求参数的不同方式,包括表单传递、超链接传递等; 10) JDBC代码嵌入JSP页面,并与前续实验客户端技术相结合,完成客户端与服务端的动态交互效果,并能够进行服务端程序调试。 11) 写出实验报告 |
计划与进度安排: |
1、 创建数据库 11月18日-11月19日 小组讨论 2、 设想商城功能 11月19日-11月20日 小组讨论 3、 编程功能代码 11月20日-11月23日 小组分工 4、 测试 11月23日-11月24日 |
设计过程、步骤(可加页): |
1、 数据库 1)创建数据库代码: CREATE DATABASE `MI` 2)创建用户信息表user CREATE TABLE `users` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `uname` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, `upwd` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL, PRIMARY KEY (`uid`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 3)创建分类信息表type CREATE TABLE `type` ( `typeID` int(11) NOT NULL AUTO_INCREMENT, `typename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`typeID`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 4)创建商品表 CREATE TABLE `product` ( `productID` int(11) NOT NULL AUTO_INCREMENT, `productname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `price` decimal(10, 2) NOT NULL, `discribe` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `image` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `typeID` int(11) NOT NULL, `discribe2` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `color` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `num` int(11) NOT NULL, `edition` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`productID`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 71 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; 2、导入实验2,在此基础上开发登陆界面,利用用户表信息实现登录判断,登录成功转向首页,失败给予提示 1) 登录界面设计,其样式全部写在style.css中 <div class="login_input"> <input type="text" placeholder="请输入账号" class="login_username" name="username"> </div> <div class="login_input"> <input type="password" placeholder="请输入密码" class="login_password" name="password"> </div> <div class=""> <input class="login_btn sure" type="button" value="登录" onclick="check()"> <input class="login_btn cancle" type="reset" value="重置 " > </div> 2)判断当用户名和密码为空时,弹出提示信息 function check() { form.username.value=="") { alert("请输入账号!!"); form.username.focus(); return false; } form.password.value=="") { alert("请输入密码!!"); form.password.focus(); return false; } form.submit(); } 3)判断登录的账号是否在数据库中,建立DBUtil 类,在其中连接数据库 /** * 数据库连接管理类 * * @author 502 * */ public class DBManager { public static final String DEFAULT_PWD = "123456"; public static final String DEFAULT_UID = "root"; public static final String DEFAULT_URL = "jdbc:mysql://localhost:3306/mi"; public static final String DEFAULT_DRIVER = "sql.jdbc.Driver"; public static Connection getConn() { Connection con = null; try { Class.forName(DEFAULT_DRIVER); con = Connection(DEFAULT_URL, DEFAULT_UID, DEFAULT_PWD); } catch (ClassNotFoundException e) { System.out.println("数据库驱动加载失败"); e.printStackTrace(); } catch (SQLException e) { System.out.println("数据库连接失败"); e.printStackTrace(); } return con; } 4)建立登录界面判断的servlet为LoginServlet,在其中进行判断输入的用户名和密码是否存在。在其dopost()方法中写入; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String uname = Parameter("uname"); String upwd = Parameter("upwd"); String code = Parameter("code"); String remember = Parameter("remember"); boolean result = true; User u = new User(); u.setUname(uname); u.setUpwd(upwd); HttpSession session = Session(); String code2 = (Attribute("code"); if(code2.equals(code)){ UserDAO dao = new UserDAO(); List<User> users = dao.select(u); result = users.size()>0; if(!result){ request.setAttribute("msg", "账号密码错误"); } }else{ result = false; request.setAttribute("msg", "验证码错误"); } if(result){ if("remember".equals(remember)){ String uri = ContextPath() + "/"; int expiry = 60*60*24*14; Cookie c = new Cookie("uname",uname); //c.setDomain(""); c.setPath(uri); c.setMaxAge(expiry); response.addCookie(c); c = new Cookie("upwd", upwd); c.setPath(uri); c.setMaxAge(expiry); response.addCookie(c); } session.setAttribute("user", u); 3、用户表的显示以及增加、更新和删除操作;要求根据实际情况分别采用Statement对象和PreparedStatement对象发送SQL语句; 1)用商品表表的显示,即对数据库查询并显示在界面 在BookDao.java中写出查询所有书籍信息封装到ArrayList中的函数如下 public ArrayList<BookBean> get_ListInfo(){ ArrayList<BookBean> tag_Array = new ArrayList<BookBean>(); Connection conn = ConnectDb(); String sql = "select * from book"; PreparedStatement stm = null; ResultSet rs = null; try { stm = conn.prepareStatement(sql); rs = uteQuery(); ()){ BookBean tag = new BookBean(); tag.String("num")); tag.String("sname")); tag.String("author")); tag.String("press")); tag.String("type")); tag.Int("price")); tag_Array.add(tag); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ DBUtil.CloseDB(rs, stm, conn);}return tag_Array; } 在shouye.jsp中获取ArrayList中封装的内容,并显示在页面上 <% ArrayList<BookBean> bookdata = new ArrayList<BookBean>(); bookdata = (ArrayList<BookBean>)Attribute("data"); if(bookdata==null){ BookDao bookdao = new BookDao(); bookdata = (ArrayList<BookBean>)_ListInfo(); } for (BookBean bean : bookdata){ %> <tr bgcolor="#FFFFFF"> <td><p align="center"><%= um()%></p></td> <td><p align="center"><%= sname()%></p></td> <td><p align="center"><%= Autho()%></p></td> <td><p align="center"><%= Press()%></p></td> <td><p align="center"><%= Type()%></p></td> <td><p align="center"><%= price()%></p></td> <td><p align="center"><a href="updata.jsp"><img alt=""src="img/updata-02.jpg"> </a> <button type="button" onclick="deletebook(<%= um()%>)">删除</button></p></td></tr> <%} %> 2)增加界面 在增加书籍界面“input.jsp”中,在表单中action="/text5/IndexServlet",在IndexServlet中的dopost()方法改写如下 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // doGet(request, response); request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); //获取表单信息 String num = Parameter("num"); String bookname = Parameter("bookname"); String writer = Parameter("writer"); String select = Parameter("select"); String type = Parameter("type"); int money = Integer.Parameter("money")); BookDao bookdao = new BookDao(); bookdao.addBook(num,bookname,writer,select,type,money); response.sendRedirect("/text5/show.jsp"); } |
结果与分析(可以加页): |
(1) 当不输入账号和密码时弹出提示,如下图1所示: 图1:提示信息 (2) 输入错误的账号或密码,界面上有密码错误的字样,要重新输入账号和密码,如下图2所示: 图2:密码错误重新输入界面 (3) 正确输入,进入主界面;如下图3所示: 图3:主界面 (4) 点击购物车管理,进入其界面,如下图4所示: |
设计体会与建议: |
问题分析: 基于java的课程设计题目1)问题一: 解决办法:在进行数据库查询时,输入有误不到“sa”列, “Unknown column 'sa' in 'where clause'”类似于Unknown column ‘xxx’ in ‘where clause’的问题。 单从字面理解,我们很容易得出列名不存在的结论,但是,很多时候起始并不是由于列名出错造成的。而是由于拼凑sql语句时对字符类型数据没有用引号引起来造成的。 2)问题二: 解决办法: 这是服务器连接的问题,可能是你的在连接connection的时候有问题,比如说 1、本来没关就又开了一次 2、或者是没有连接 3、或者连接了没有连接成功 我的情况是第一种: 3)问题三 解决办法: 404问题,根本原因就是服务器不到目标页面(或者说成不到目web资源)而产生的。既然不到资源,那么很大原因就是访问路径或者XML的配置的出了问题。 第一个方法:检查表单的action属性中路径是否正确,是否有因为粗心而打错的字。 第二个方法:a标签中路径是否正确。 第三个方法:.XML是否配置正确,如果正确无任何问题,很可能就是已经选择了servlet的在XML中自动配置。而又在XML配置了一遍,于是就会报错 在编写Servlet的时候是选择创建Servlet文件,所以创建后Servlet文件中会产生着样的一串代码:@WebServlet("/InitServlet"),这说明在XML文件中就不用再配置对应的Servlet文件了。可我们在XML中还是写了,所以就产生了报错。 当我们把.xml标签删除之后就,程序就可以正常运行了。 2总结: 该程序虽说几乎可以运行成功,总的来说,对于我们能力有限的同学,做出这样一个程序实属不易,所以自己觉得总体上来说还好,但是还有很多不足之处。另外,这个商城系统刚还需要一个后台管理来配套,才能实现一个完整的管理系统,可以后期完善一下。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论