1、计算机程序设计综合训练集中实践报告浙江万里学院集中实践课程报告课程名称:程序设计综合训练实践方向: JavaWeb 专业班级: 姓名: 学号: 起止日期: 2016年6月20日-2016年7月1日 一、平时课堂练习功能:利用DBUtils对数据库进行增、删、查、改。制作步骤:下载DBUtils然后解压。运行之后数据库效果:2.用户注册功能的校验:功能:使重复用户名不能重复注册,制作步骤:使用ajax异步传输,检验用户注册的合理,防止用户名的重复注册。并反馈给用户用户名是否能够注册。运行效果:3.查询商品详情:功能:用户可在购买商品之前,查看商品详情。了解商品的具体情况。以免不了解商品详情,出现
2、不敢购买商品的情况。制作步骤:在Servlet中写好方法,控制jsp展示。在Dao层写好对数据库的查询方法。运行效果图:二、综合项目制作功能需求:(1)买家功能:1. 登录2. 注册3. 退出(注销)4. 查看商品5. 添加购物车6. 修改购物车商品的购买数量7. 删除购物车中的商品8. 提交订单9. 支付(2)卖家功能(单独的系统):1. 添加商品2. 查询商品(3)系统功能:1. 将一定时间内没有付款的订单,修改为过期状态2. 权限控制(买家不能访问,卖家添加商品和查询商品的功能)3. 配置错误页面(4)前台功能需求:前台主要包括,商品展示,购物车管理,我的订单,用户管理,商品管理。 1.
3、商品展示:实现商品预览,商品明细,分类检索功能;具体是(1)该模块主要 是显示最新商品,热卖商品,以及打折促销的商品(2)商品分类检索。 2. 购物车:实现添加、删除商品,商品数量修改,清空购物车,结算功能。 3.我的订单:实现订单确认,订单列表,删除订单,查询明细功能;具体是:a.会员可以通过组合搜索或者快速搜索查找所需要的商品,可以查看返回结果中的某一具体商品信息,能够对该商品进行评论,如果暂时不想购买该商品,可以把该商品加入收藏夹,也可以把加入购物车购买该商品,会员可以查看自己的购物车,并对购物车的物品进行修改,生成订单;b.生成订单后,可以通过拨打客服热线,取消该订单。c.客户确认购买
4、号即生成一个唯一的订单号,客户依此号码可以查询所购商品情况。4.用户管理:实现登入/登出,用户注册,信息修改功能。 (a)非会员可以通过注册成为网上购物系统会员;会员登录系统后,才能够查看个人信息,才能够对商品进行评论,才能够购买商品;若会员忘记了自己的密码,可以通过注册时候填写的邮箱向系统要回自己的会员密码。对于自己登陆界面风格的管理。(b)会员登录后,可以查看自己账号的相关信息,可以查看以往购买过的商品,感兴趣的新商品,个人信息汇总,修改个人信息,个人消费积分纪录,查看收藏夹,查看个人历史订单等信息。(5)后台功能需求:后台用于管理员对商品的管理,后台提供会员管理模块,订单管理模块,商品管
5、理模块,信息反馈模块,消息发布模块。制作步骤:1. 新建一个web project2. 拷贝项目静态资源(即前端页面的jsp,css样式等)然后部署一下项目到tomcat,看看拷贝的静态资源有没有问题。3. 定义项目开发结构4. 导入项目依赖的jar包5.导入工具类5. 配置文件文件内容:注意用户名和密码使用自己的数据库的 com.mysql.jdbc.Driver jdbc:mysql:/127.0.0.1:3306/estore root root 7.配置全站乱码过滤器复制该文件到项目,放入cn.itcast.filter包中在web.xml中配置过滤器,将下面的代码复制到web.xml
6、中 GenericEncodingFilter cn.itcast.filter.GenericEncodingFilter GenericEncodingFilter /* 效果如红框中所示:8. 数据库设计:我们在实际的开发中,不同的项目使用的数据库也不同,同样,我们的estore项目,也需要设计一个数据库。9. 新建数据库:导入数据库文件执行estore.sql10. 分析数据库表结构使用E-R图分析数据库表矩形:表菱形:表和表之间的关系椭圆:表中的字段11.导入与数据库表对应的Java类复制下面的问价到:cn.itcast.domain包中效果图:12. 3 普通用户功能(买家):注册
7、13. 功能分析14.完善页面(修改form表单)15编写注册Servlet。16.编写注册Service。17.编写ServiceImpl。18.编写Dao。19.编写DaoImpl。20.使用ajax验证用户名是否已被注册:需求分析:21.页面实现: / 获取XMLHttpRequest对象 function getXMLHttpRequest() var xmlhttp; / code for IE7+, Firefox, Chrome, Opera, Safari if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); /
8、code for IE6, IE5 else xmlhttp = new ActiveXObject(Microsoft.XMLHTTP); return xmlhttp; / 使用ajax 验证当前用户是否存在 function _checkUserName(username) if (username != ) / 1. 获取XMLHttpRequest对象 var xmlhttp = getXMLHttpRequest(); / 2. 监听服务器返回状态 xmlhttp.onreadystatechange = function() if (xmlhttp.readyState = 4
9、& xmlhttp.status = 200) var result = xmlhttp.responseText; / 根据result结果进行相应的处理 / 后台返回一个标记,如果为-1,表示当前用户名存在 if (result = -1) document.getElementById(username_notice).innerHTML = 当前用户名已经存在,请使用其他用户名!; document.getElementById(registForm).onsubmit = function() return false; ; / 可以使用 else if(result = 1) do
10、cument.getElementById(username_notice).innerHTML = 用户名可以使用; document.getElementById(registForm).onsubmit = function() return true; ; else if(result = -3) document.getElementById(username_notice).innerHTML = 用户名不能为空; document.getElementById(registForm).onsubmit = function() return true; ; else docume
11、nt.getElementById(username_notice).innerHTML = 服务器忙请稍后再试; document.getElementById(registForm).onsubmit = function() return false; ; ; / 3. 打开连接 xmlhttp.open(POST, $root/checkUserName, true); / 使用表单的方式 POST 数据 xmlhttp.setRequestHeader(Content-type, application/x-www-form-urlencoded); / 4. 发送请求 xmlhtt
12、p.send(username= + username); 22.其他Servlet同理。作品说明:这是基于JavaWeb开发的大型电商网站。买家功能:1. 登录2. 注册3. 退出(注销)4. 查看商品5. 添加购物车6. 修改购物车商品的购买数量7. 删除购物车中的商品8. 提交订单9. 支付卖家功能(单独的系统):1. 添加商品2. 查询商品系统功能: 1. 将一定时间内没有付款的订单,修改为过期状态2. 权限控制(买家不能访问,卖家添加商品和查询商品的功能)3. 配置错误页面遇到问题及解决方法:问题:当我点击注册时,浏览器返回找不到的错误提示,开始我以为是自己的Servlet写的有问题
13、,仔细检查,发现没有问题。于是,我请教老师,老师打开浏览器F12开发功能,发现我的Servlet的配置路径错误。于是,我打开web.xml,发现里面的配置路径有问题。重新配置了一下路径。于是开启服务器,打开浏览器,点击注册。发现成功了。数据库中添加了一条记录。说明注册功能已经实现了。三、个人总结在学习完本次为期半个月的实训之后,我深刻明白在开发JavaWeb项目中,首先要掌握Java的基础,其次要掌握Web端的基础。把这两个基础打好之后才能进行JavaWeb的开发。基础真的很重要,如果没有掌握好基础,真的很难开发项目。开发项目还要讲究步骤问题,项目的开发结构。要学会从每一层再到另一层开发,写代
14、码。层与层之间要学会调用,还要细心,千万不能拼错单词。起初我在上课的时候只是学过一些基本的JSP,记得那时候做东西的时候不懂得异常处理,更不懂得安全问题,因为没见过那么大的天空,就满足在自己头上的云彩。因为学院聘请了传智播客的讲师来给我们培训,所以在某种程度上我算是见识到了真正的程序员,看到了他们的工作方式,思维方式,以及码代码的方式,颇有感悟。记得在在大二第一学期的时候就一直想学servlet,但是虽然自己买了许多的书,其中包括孙鑫的 JSP/Servlet 深入详解,可是由于自己的惰性,始终没能动手演练,因为我们常用的Servlet是基于HTTP(1.1)协议的,而且常用的request,
15、response对象也都是继承自HttpServletrequest和HttpServletResponse的,所以,代码看起来会略显得有些复杂,(当然这只是对于初学者来说,或者说是没入门的人来说),所以没次拿起书看代码的时候就会感觉到“哇这个东东太难了!,以后再说吧。”每次都是这种感觉。直至我碰到了javaMail邮件开发详解的作者之一方*(暂且称之为方老师吧,我感觉都写书的即使不是老师也可以被称作老师了)。在他的指引之下,我算正式进入了学习javaweb的门槛,也算是一个初步的入门。从起步开始对于我这个“野路子出家”的人是一种折磨,因为没有基础(像核心技术的IO,集合,GUI,socket
16、等技术我都不怎么会的),而且要直接学javaweb。记得开始的几天几乎都是麻木的,换句话说,这一段时间几乎不是在学习WEB技术,而是在测试自己大脑的缓存到底有多大(因为本身的压力就大,加上没有基础,最重要的是没有一个学习方法)。所以几乎前几天的日子都在做一个工作,就是把学到的东西压缩到自己的大脑,回去复习呢,就像是个没头苍蝇一样,学到哪就看到哪,打开书本和笔记,发现自己不会的就开始看,毫无目的。学习的效果也可想而知。到头来发现自己似乎没会什么东西,因为即使是自己在写代码,也是在写别的代码,再调别人错过的错误。总之过了很久大概一个多月吧,这种状态都没有改观。可以说形势很不乐观。但是呢又没有更好的
17、办法。 直至遇到了王老师,虽然不能说听君一席话,胜读十年书,但是对我来说真是受益匪浅,此时也算是我再一次的重新开始javaweb的学习。由于有过一个多月的经验,现在再来学习第二遍,也算总结了点方法。下面就浅谈一下自己的体会。 如果放弃持久层的东西,也就是JDBC操作数据库这一部分来说,javaweb的东西就是Servlet和JSP,一个控制层(controller)和一个显示层(view)两方面的学习。记得方老师的第一句话就是:“javaweb是没有什么东西的,但是它又是很重要的,将来你们学的框架技术很可能在3,5年后就被淘汰了,但是这个javaweb在10年哪怕是更久都不会被淘汰的!所以你们
18、一定要学好,至于为什么说它没什么东西,这个以后你们学完就会知道”。听了这些话,我心里的压力顿时减轻了很多。敢于去接受一些新的知识,当然是用合理的方法。现在回头总结的话,我个人的感悟就是当你明白了servlet和JSP的工作原理之后,你要学的就是那几个最常用的东西,比如说注册并发邮件,自动登录,购物车,下订单,三种常用的分页技术,过滤器功能(处理乱码,转义),监听器处理在线人数啊,在线支付等等(这里我就不一一列举了,当然HTTP协议是必须会的)。现在列举出这些东西并实现技术虽然很容易,但是在当时学习的时候可是吃了不少苦,因为开始不懂啊,就拿人家写好的代码,一个显示屏幕分成两块,开始手动copy。
19、虽然写出了功能,但是没过多久就会忘记,即使3个月不忘记,6个月也会忘,因为它不是自己的东西嘛。这些问题是在我第二次写东西的时候发现的,因为要对自己负责嘛。所以自己很难受。于是开始找我们老师想办法,他给我讲解了一遍这些技术的实现思路并操做演示给我看。在他讲解完,我是茅塞顿开。自己开始继续写,可是一写就发现还是不会,又开始翻代码。后来我觉得不行,又去找王老师,“老师那个你讲的东西我听懂了,可是自己一写就写不出来,不知道该写什么,按你的代码写完,没多久又忘记了,这可怎么办?”王老师一句简短的回答算是改变了我,可以说直到今天的学习,他说:“想不出来是吗,那你就一直想,什么时候想出来了,什么时候再写,这
20、个不急”。回来我就想,这是好话还是赖话啊,人家同学都快写完了,我还在这想呢。无解。那就死马当活马医呗。回去坐在那我就想,电脑一合上盖子。持续接近两个小时,我一拍大腿,哦了!打开电脑,画个图,理清一下流程,看看图,写吧,一个小时不到全部OK!然后王老师问我,你怎么自己在那怪怪的笑(他是南方人,说话的口音加上语调很有意思)?我说我写出来了。嘿嘿。他问我,你会忘吗?我说我坚决不会忘,我自己想出来的东西,就是我忘记了我也还会想出来,然后我就还能写出来。然后我就笑了,理由很简单,我找到方法了。回过来说我们学习SUN公司的API,底层代码,第三方的资料和工具,最好的学习方法就是把他们的东西转换成你自己的思
21、想,这样你就真的学会了。到后来我发现,在我们一起写代码的时候不乏很多高人,他们的效率很高,能力很强,但是有很多的人恰恰相反而且这类人不占少数,最实在的例子,在我身边一起写代码的朋友,当我写完7,8个功能的时候,准备进行下一个模块的分析了,他还在那为一开始的两个功能发愁,看着那抛出来的异常瞪眼,更为悲观的是他不会对着异常分析而是去分析别人写过的代码,去看看自己哪里写的不一样。 当然万事开头难是必然的,因为刚刚起步没有经验,但是随着你的代码量的增加和处理能力经验的丰富,一切都会变的简单起来。开始为什么说javaweb简单呢,因为当你学会的时候你要是善于总结你就会发现,其实servlet的一套API
22、就那么多,只要学会了它就哦了,至于其它的帮助工具如何使用都是些大同小异的事情,实在不会可以XX嘛,XX不行就谷歌,再不行就翻墙。当然也可以请教同学喝老师,找到问题的所在之处,总会解决的嘛。所以最后列出一个等式:成功 = 坚持冲过起步的低谷 + 良好的学习方法 + 勤敲代码的习惯 + 处理问题分析问题解决问题的能力。换行标签换段落标签链接格式为:超链接名称 第1行中的第1列 第1行中的第2列 第1行中的第3列 第2行中的第1列 第2行中的第2列 第2行中的第3列 用户名:密码: 多行的文本框您的意见对我很重要:请将意见输入此区域css:1、如何引入一个外部的css文件2、Css选择器种类首先说主
23、都有哪些先择器1.标签选择器(如:body,div,p,ul,li)2.类选择器(如:class=head,class=head_logo)3.ID选择器(如:id=name,id=name_txt)4.全局选择器(如:*号)5.组合选择器(如:.head .head_logo,注意两选择器用空格键分开)6.继承选择器(如:div p,注意两选择器用空格键分开)7.伪类选择器(如:就是链接样式,a元素的伪类,4种不同的状态:link、visited、active、hover。)在标签内写入style= 的方式,应该是CSS的一种引入方式,而不是选择器,因为根本就没有用到选择器。我们分别来看下这
24、些选择器:1:标签名选择器一个XHTML文档中有许多标签,例如p标签,h1标签等。若要使文档中的所有p标签都使用同一个CSS样式,就应使用标签选择器。div color:red;border:1px blue solid;p color:#000;2:类选择器使用标签选择器可以为整个XHTML文档中的同一个标签指定相同的CSS样式。但是在实际运用中,XHTML文档中的同一个标签会被反复使用。若要为相同的标签赋予不同的CSS样式就应使用类选择器。测试代码.test color:red;border:1px blue solid;在html文档里,我们在要控制样式的标签的开标签(非成对标签如inp
25、ut直接放在标签里)里加入 class=xxx,在页面对应的css文件里,用.xxx就可以指向这个标签,从而对这个标签进行控制,我们称这种通过定义类(class)来找到标签的方式为 :类选择器。这种定义class 的方式是前端开发最常用的选择器,有几个突出的特点:可以给不同的标签设置同一个类,从而用一条CSS命令控制几个标签,减少大量代码,是页面修改简单,易维护,易改版;其次,后台工作人员机会不会用到有关class的相关设置,不需要跟后台人员之间进行交互;再者,可以通过js等动态改变标签的Classname,从而改变整个标签的样式,使前端动态效果实现起来更为容易。3:ID选择器ID选择器和类选
26、择器相似,不同的是,ID选择器不能复用。在一个XHTML文档中,一个ID选择器只能把其CSS样式指定给一个标签。测试代码#test color:red;border:1px blue solid;有 ID 的 HTML元素可以被JavaScript来操纵.再就是ID也是后台开发人员会经常用的,所以前端开发人员应该尽量少的使用。4.全局选择器全局选择器是一个星号。它能作用于XHTML文档中的所有元素。*margin:0; padding:0;5.组合选择器标签选择器、类选择器和ID选择器是可以组合起来使用的。一般的组合方式是标签选择器和类选择器组合,标签选择器和ID选择器组合。由于这两种组合方式的原理和效果一样,所以只介绍标签选择器和类选择器的组合。组合选择器只是一种组合形式,并不算是一种真正的选择器,但在实际中经常使用。比如 .orderlist li xxxx 或者 .tableset td 我们使用的时候一般用在重复出现并且样式相同的一些标签里,比如 li td dd等。比如 H1.red color: red 群组选择器.test1,span,test2 border:1px blue solid;div,span,img border:1p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1