




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江万里学院集中实践课程报告课程名称:程序设计综合训练实践方向: JavaWeb 专业班级: 姓名: 学号: 起止日期: 2016年6月20日-2016年7月1日 一、平时课堂练习功能:利用DBUtils对数据库进行增、删、查、改。制作步骤:下载DBUtils然后解压。运行之后数据库效果:2.用户注册功能的校验:功能:使重复用户名不能重复注册,制作步骤:使用ajax异步传输,检验用户注册的合理,防止用户名的重复注册。并反馈给用户用户名是否能够注册。运行效果:3.查询商品详情:功能:用户可在购买商品之前,查看商品详情。了解商品的具体情况。以免不了解商品详情,出现不敢购买商品的情况。制作步骤:在Servlet中写好方法,控制jsp展示。在Dao层写好对数据库的查询方法。运行效果图:二、综合项目制作功能需求:(1)买家功能:1.登录2.注册3.退出(注销)4.查看商品5.添加购物车6.修改购物车商品的购买数量7.删除购物车中的商品8.提交订单9.支付(2)卖家功能(单独的系统):1.添加商品2.查询商品(3)系统功能:1.将一定时间内没有付款的订单,修改为过期状态2.权限控制(买家不能访问,卖家添加商品和查询商品的功能)3.配置错误页面(4)前台功能需求:前台主要包括,商品展示,购物车管理,我的订单,用户管理,商品管理。 1.商品展示:实现商品预览,商品明细,分类检索功能;具体是(1)该模块主要 是显示最新商品,热卖商品,以及打折促销的商品(2)商品分类检索。 2. 购物车:实现添加、删除商品,商品数量修改,清空购物车,结算功能。 3.我的订单:实现订单确认,订单列表,删除订单,查询明细功能;具体是:a.会员可以通过组合搜索或者快速搜索查找所需要的商品,可以查看返回结果中的某一具体商品信息,能够对该商品进行评论,如果暂时不想购买该商品,可以把该商品加入收藏夹,也可以把加入购物车购买该商品,会员可以查看自己的购物车,并对购物车的物品进行修改,生成订单;b.生成订单后,可以通过拨打客服热线,取消该订单。c.客户确认购买号即生成一个唯一的订单号,客户依此号码可以查询所购商品情况。4.用户管理:实现登入/登出,用户注册,信息修改功能。 (a)非会员可以通过注册成为网上购物系统会员;会员登录系统后,才能够查看个人信息,才能够对商品进行评论,才能够购买商品;若会员忘记了自己的密码,可以通过注册时候填写的邮箱向系统要回自己的会员密码。对于自己登陆界面风格的管理。(b)会员登录后,可以查看自己账号的相关信息,可以查看以往购买过的商品,感兴趣的新商品,个人信息汇总,修改个人信息,个人消费积分纪录,查看收藏夹,查看个人历史订单等信息。(5)后台功能需求:后台用于管理员对商品的管理,后台提供会员管理模块,订单管理模块,商品管理模块,信息反馈模块,消息发布模块。制作步骤:1. 新建一个web project2. 拷贝项目静态资源(即前端页面的jsp,css样式等)然后部署一下项目到tomcat,看看拷贝的静态资源有没有问题。3. 定义项目开发结构4. 导入项目依赖的jar包5.导入工具类5. 配置文件文件内容:注意用户名和密码使用自己的数据库的com.mysql.jdbc.Driverjdbc:mysql:/:3306/estorerootroot7.配置全站乱码过滤器复制该文件到项目,放入cn.itcast.filter包中在web.xml中配置过滤器,将下面的代码复制到web.xml中GenericEncodingFiltercn.itcast.filter.GenericEncodingFilter GenericEncodingFilter /* 效果如红框中所示:8. 数据库设计:我们在实际的开发中,不同的项目使用的数据库也不同,同样,我们的estore项目,也需要设计一个数据库。9. 新建数据库:导入数据库文件执行estore.sql10. 分析数据库表结构使用E-R图分析数据库表矩形:表菱形:表和表之间的关系椭圆:表中的字段11.导入与数据库表对应的Java类复制下面的问价到:cn.itcast.domain包中效果图:12. 3普通用户功能(买家):注册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, Safariif (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest();/ code for IE6, IE5else 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 & 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)document.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;elsedocument.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. 发送请求xmlhttp.send(username= + username);22.其他Servlet同理。作品说明:这是基于JavaWeb开发的大型电商网站。买家功能:1.登录2.注册3.退出(注销)4.查看商品5.添加购物车6.修改购物车商品的购买数量7.删除购物车中的商品8.提交订单9.支付卖家功能(单独的系统):1.添加商品2.查询商品系统功能: 1.将一定时间内没有付款的订单,修改为过期状态2.权限控制(买家不能访问,卖家添加商品和查询商品的功能)3.配置错误页面遇到问题及解决方法:问题:当我点击注册时,浏览器返回找不到的错误提示,开始我以为是自己的Servlet写的有问题,仔细检查,发现没有问题。于是,我请教老师,老师打开浏览器F12开发功能,发现我的Servlet的配置路径错误。于是,我打开web.xml,发现里面的配置路径有问题。重新配置了一下路径。于是开启服务器,打开浏览器,点击注册。发现成功了。数据库中添加了一条记录。说明注册功能已经实现了。三、个人总结在学习完本次为期半个月的实训之后,我深刻明白在开发JavaWeb项目中,首先要掌握Java的基础,其次要掌握Web端的基础。把这两个基础打好之后才能进行JavaWeb的开发。基础真的很重要,如果没有掌握好基础,真的很难开发项目。开发项目还要讲究步骤问题,项目的开发结构。要学会从每一层再到另一层开发,写代码。层与层之间要学会调用,还要细心,千万不能拼错单词。起初我在上课的时候只是学过一些基本的JSP,记得那时候做东西的时候不懂得异常处理,更不懂得安全问题,因为没见过那么大的天空,就满足在自己头上的云彩。因为学院聘请了传智播客的讲师来给我们培训,所以在某种程度上我算是见识到了真正的程序员,看到了他们的工作方式,思维方式,以及码代码的方式,颇有感悟。记得在在大二第一学期的时候就一直想学servlet,但是虽然自己买了许多的书,其中包括孙鑫的 JSP/Servlet 深入详解,可是由于自己的惰性,始终没能动手演练,因为我们常用的Servlet是基于HTTP(1.1)协议的,而且常用的request,response对象也都是继承自HttpServletrequest和HttpServletResponse的,所以,代码看起来会略显得有些复杂,(当然这只是对于初学者来说,或者说是没入门的人来说),所以没次拿起书看代码的时候就会感觉到“哇这个东东太难了!,以后再说吧。”每次都是这种感觉。直至我碰到了javaMail邮件开发详解的作者之一方*(暂且称之为方老师吧,我感觉都写书的即使不是老师也可以被称作老师了)。在他的指引之下,我算正式进入了学习javaweb的门槛,也算是一个初步的入门。从起步开始对于我这个“野路子出家”的人是一种折磨,因为没有基础(像核心技术的IO,集合,GUI,socket等技术我都不怎么会的),而且要直接学javaweb。记得开始的几天几乎都是麻木的,换句话说,这一段时间几乎不是在学习WEB技术,而是在测试自己大脑的缓存到底有多大(因为本身的压力就大,加上没有基础,最重要的是没有一个学习方法)。所以几乎前几天的日子都在做一个工作,就是把学到的东西压缩到自己的大脑,回去复习呢,就像是个没头苍蝇一样,学到哪就看到哪,打开书本和笔记,发现自己不会的就开始看,毫无目的。学习的效果也可想而知。到头来发现自己似乎没会什么东西,因为即使是自己在写代码,也是在写别的代码,再调别人错过的错误。总之过了很久大概一个多月吧,这种状态都没有改观。可以说形势很不乐观。但是呢又没有更好的办法。 直至遇到了王老师,虽然不能说听君一席话,胜读十年书,但是对我来说真是受益匪浅,此时也算是我再一次的重新开始javaweb的学习。由于有过一个多月的经验,现在再来学习第二遍,也算总结了点方法。下面就浅谈一下自己的体会。 如果放弃持久层的东西,也就是JDBC操作数据库这一部分来说,javaweb的东西就是Servlet和JSP,一个控制层(controller)和一个显示层(view)两方面的学习。记得方老师的第一句话就是:“javaweb是没有什么东西的,但是它又是很重要的,将来你们学的框架技术很可能在3,5年后就被淘汰了,但是这个javaweb在10年哪怕是更久都不会被淘汰的!所以你们一定要学好,至于为什么说它没什么东西,这个以后你们学完就会知道”。听了这些话,我心里的压力顿时减轻了很多。敢于去接受一些新的知识,当然是用合理的方法。现在回头总结的话,我个人的感悟就是当你明白了servlet和JSP的工作原理之后,你要学的就是那几个最常用的东西,比如说注册并发邮件,自动登录,购物车,下订单,三种常用的分页技术,过滤器功能(处理乱码,转义),监听器处理在线人数啊,在线支付等等(这里我就不一一列举了,当然HTTP协议是必须会的)。现在列举出这些东西并实现技术虽然很容易,但是在当时学习的时候可是吃了不少苦,因为开始不懂啊,就拿人家写好的代码,一个显示屏幕分成两块,开始手动copy。虽然写出了功能,但是没过多久就会忘记,即使3个月不忘记,6个月也会忘,因为它不是自己的东西嘛。这些问题是在我第二次写东西的时候发现的,因为要对自己负责嘛。所以自己很难受。于是开始找我们老师想办法,他给我讲解了一遍这些技术的实现思路并操做演示给我看。在他讲解完,我是茅塞顿开。自己开始继续写,可是一写就发现还是不会,又开始翻代码。后来我觉得不行,又去找王老师,“老师那个你讲的东西我听懂了,可是自己一写就写不出来,不知道该写什么,按你的代码写完,没多久又忘记了,这可怎么办?”王老师一句简短的回答算是改变了我,可以说直到今天的学习,他说:“想不出来是吗,那你就一直想,什么时候想出来了,什么时候再写,这个不急”。回来我就想,这是好话还是赖话啊,人家同学都快写完了,我还在这想呢。无解。那就死马当活马医呗。回去坐在那我就想,电脑一合上盖子。持续接近两个小时,我一拍大腿,哦了!打开电脑,画个图,理清一下流程,看看图,写吧,一个小时不到全部OK!然后王老师问我,你怎么自己在那怪怪的笑(他是南方人,说话的口音加上语调很有意思)?我说我写出来了。嘿嘿。他问我,你会忘吗?我说我坚决不会忘,我自己想出来的东西,就是我忘记了我也还会想出来,然后我就还能写出来。然后我就笑了,理由很简单,我找到方法了。回过来说我们学习SUN公司的API,底层代码,第三方的资料和工具,最好的学习方法就是把他们的东西转换成你自己的思想,这样你就真的学会了。到后来我发现,在我们一起写代码的时候不乏很多高人,他们的效率很高,能力很强,但是有很多的人恰恰相反而且这类人不占少数,最实在的例子,在我身边一起写代码的朋友,当我写完7,8个功能的时候,准备进行下一个模块的分析了,他还在那为一开始的两个功能发愁,看着那抛出来的异常瞪眼,更为悲观的是他不会对着异常分析而是去分析别人写过的代码,去看看自己哪里写的不一样。 当然万事开头难是必然的,因为刚刚起步没有经验,但是随着你的代码量的增加和处理能力经验的丰富,一切都会变的简单起来。开始为什么说javaweb简单呢,因为当你学会的时候你要是善于总结你就会发现,其实servlet的一套API就那么多,只要学会了它就哦了,至于其它的帮助工具如何使用都是些大同小异的事情,实在不会可以百度嘛,百度不行就谷歌,再不行就翻墙。当然也可以请教同学喝老师,找到问题的所在之处,总会解决的嘛。所以最后列出一个等式:成功 = 坚持冲过起步的低谷 + 良好的学习方法 + 勤敲代码的习惯 + 处理问题分析问题解决问题的能力。换行标签换段落标签链接格式为:超链接名称 第1行中的第1列 第1行中的第2列 第1行中的第3列 第2行中的第1列 第2行中的第2列 第2行中的第3列 用户名:密码: 多行的文本框您的意见对我很重要:请将意见输入此区域css:1、如何引入一个外部的css文件2、Css选择器种类首先说主都有哪些先择器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的一种引入方式,而不是选择器,因为根本就没有用到选择器。我们分别来看下这些选择器: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文档里,我们在要控制样式的标签的开标签(非成对标签如input直接放在标签里)里加入 class=xxx,在页面对应的css文件里,用.xxx就可以指向这个标签,从而对这个标签进行控制,我们称这种通过定义类(class)来找到标签的方式为 :类选择器。这种定义class 的方式是前端开发最常用的选择器,有几个突出的特点:可以给不同的标签设置同一个类,从而用一条CSS命令控制几个标签,减少大量代码,是页面修改简单,易维护,易改版;其次,后台工作人员机会不会用到有关class的相关设置,不需要跟后台人员之间进行交互;再者,可以通过js等动态改变标签的Classname,从而改变整个标签的样式,使前端动态效果实现起来更为容易。3:ID选择器ID选择器和类选择器相似,不同的是,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:1px blue solid;群组选择器实际上是对CSS的一种简化写法,只不过把有相同定义的不同选择器放在一起,省了很多代码。6.继承选择器学习使用继承选择器就必须先了解文档树和CSS的继承。每个XHTML都可以被看作一个文档树,文档树的根部就是html标签,而head和body标签就是其子元素。在head和body里的其他标签就是html标签的孙子元素。整个XHTML就呈现一种祖先和子孙的树状关系。CSS的继承是指子孙元素继承祖先元素的某些属性。以下通过实例来详细讲解这两个重要的CSS概念。 文档树 CSS的继承 继承选择器.test span img border:1px blue solid;div span img border:1px blue solid;后代选择器实际上是使用:多个选择器加上中间的空格来找到具体的要控制标签;从左往右,依次细化,最后锁定要控制的标签,如上例,先找到class为test的标签,再从他的子标签里查找span标签,再从span的子标签中找到IMG标签。7.伪类选择器伪类也是选择器的一种,但是用伪类定义的CSS样式并不是作用在标签上的。伪类作用在标签的状态上。由于很多浏览器支持不同类型的伪类,没有一个统一的标准,所以很多伪类都不常被用到。伪类包括::first-child、:link:、:vistited、:hover、:active、:focus和:lang等等。其中有一组伪类是主流浏览器都支持的,就是超链接的伪类,包括:link:、:vistited、:hover和:active。a的这四个伪类,分别表示了a的四种状态,要注意的是,a可以只具有一种状态(:link),或者同时具有2种或者三种状态!比如说,任何一个有HREF属性的a标签,在未有任何操作时都已经具备了:link的条件,也就是满足了有链接属性这个条件;如果访问过的a标签,同时会具备 :link :visited 两种状态。把鼠标移到访问过的a标签上的时候,a标签就同时具备了 :link :visited :hover三种状态。a:linktext-decoration:none; javascript:1、表单元素(文本框、密码框、单选按钮、复选框)等的获取获取表单中输入的用户名:var username = document.form.username.value;var username = document.getElementById(username).value;username = username.lengthchecked2、如何引入一个外部的js文件(test.js)3、javascript中的对象(window,document,form,location,navigator,history)4、警告框使用 :alert(用户名不能为空);servlet:1、servlet执行的流程 (http:/localhost:8080/servlet/hello) web.xml 客户端发送请求至服务器 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器 服务器将响应返回客户端 Server创建一个Servlet的实例 Server调用Servlet的init()方法 一个客户端的请求到达Server Server创建一个请求对象 Server创建一个响应对象 Server激活Servlet的service()方法,传递请求和响应对象作为参数 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息HelloServlet包.类名HelloServlet/hello2、如何访问在web.xml配置好的servlet,访问路径3、servlet生命周期:init(),service(),destroy()4、servlet请求处理所调用的方法:doGet(),doPost,service() HttpServletRequest,HttpServletResponse5、如何获取用户提交的请求参数值 String username =request.getParameter(username); String hobbies = request.getParameterValues(hobby);jsp:1、jsp执行过程: jsp先转义,编译,运行 1. 用户请求JSP页面(HTTP请求) 2. web server中的servlet容器发现URL中有JSP后缀, 就调用JSP容器来处理 3. 如果此页面是第一次被请求, JSP容器要定位JSP页面文件并解释它, 解释的过程包括: 将JSP源文件处理成servlet代码(java), 以及编译java文件生成servlet的call文件. 说明: JSP解释器生成的servlet类是实现了java.servlet.jsp.HttpJspPate接口的类(由JSP容器提
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33218-2025设备结构健康监测基于光纤传感技术的设备健康监测方法
- GB 45833-2025燃气燃烧器具用电安全通用技术要求
- 2025年中国水处理过滤器行业市场发展监测及投资潜力预测报告
- 2025年中国可印刷磁胶行业市场全景分析及前景机遇研判报告
- 2025年中国可调节床底座和床套行业市场全景分析及前景机遇研判报告
- 2025年中国建筑集成光伏(BIPVBIPV)天窗行业市场全景分析及前景机遇研判报告
- 2025年南极冰藻提取物项目节能评估报告(节能专)
- 2025年中国配电断路器行业发展监测及发展趋势预测报告
- 税务师网课老师和课件
- 中国制动毂拆装翻转架行业市场发展现状及投资潜力预测报告
- 荆州中学2024-2025学年高二下学期6月月考历史试卷
- 2025-2030年中国婚庆产业行业市场现状供需分析及投资评估规划分析研究报告
- 2024-2025学年苏教版四年级下学期期末测试数学试卷(含答案)
- 2025年新高考2卷(新课标Ⅱ卷)英语试卷
- 2024年湖北省初中学业水平考试地理试卷含答案
- 2024年认证行业法律法规及认证基础知识 CCAA年度确认 试题与答案
- 地方病防治技能理论考核试题
- 老年患者他汀的应用课件
- 2022更新国家开放大学电大本科《计算方法(本)》2023-2024期末试题及答案(试卷代号:1084)
- GB∕T 40278-2021 纸和纸板 加速老化(光照条件下)
- 悬挑式脚手架验收表范本
评论
0/150
提交评论