计算机《程序设计综合训练》集中实践报告.docx

上传人:b****5 文档编号:5924377 上传时间:2023-01-02 格式:DOCX 页数:25 大小:1.61MB
下载 相关 举报
计算机《程序设计综合训练》集中实践报告.docx_第1页
第1页 / 共25页
计算机《程序设计综合训练》集中实践报告.docx_第2页
第2页 / 共25页
计算机《程序设计综合训练》集中实践报告.docx_第3页
第3页 / 共25页
计算机《程序设计综合训练》集中实践报告.docx_第4页
第4页 / 共25页
计算机《程序设计综合训练》集中实践报告.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

计算机《程序设计综合训练》集中实践报告.docx

《计算机《程序设计综合训练》集中实践报告.docx》由会员分享,可在线阅读,更多相关《计算机《程序设计综合训练》集中实践报告.docx(25页珍藏版)》请在冰豆网上搜索。

计算机《程序设计综合训练》集中实践报告.docx

计算机《程序设计综合训练》集中实践报告

 

浙江万里学院

集中实践课程报告

课程名称:

 程序设计综合训练 

 

实践方向:

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.新建一个webproject

2.拷贝项目静态资源(即前端页面的jsp,css样式等)然后部署一下项目到tomcat,看看拷贝的静态资源有没有问题。

3.定义项目开发结构

4.导入项目依赖的jar包

5.导入工具类

5.配置文件

文件内容:

注意用户名和密码使用自己的数据库的

xmlversion="1.0"encoding="UTF-8"?

>

--默认配置,如果没有指定则使用这个配置-->

com.mysql.jdbc.Driver

jdbc:

mysql:

//127.0.0.1:

3306/estore

root

root

7.配置全站乱码过滤器

复制该文件到项目,放入cn.itcast.filter包中

在web.xml中配置过滤器,将下面的代码复制到web.xml中

GenericEncodingFilter

cn.itcast.filter.GenericEncodingFilter

GenericEncodingFilter

/*

效果如红框中所示:

8.数据库设计:

我们在实际的开发中,不同的项目使用的数据库也不同,同样,我们的estore项目,也需要设计一个数据库。

9.新建数据库:

导入数据库文件

执行estore.sql

10.分析数据库表结构

使用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对象

functiongetXMLHttpRequest(){

varxmlhttp;

//codeforIE7+,Firefox,Chrome,Opera,Safari

if(window.XMLHttpRequest){

xmlhttp=newXMLHttpRequest();

}

//codeforIE6,IE5

else{

xmlhttp=newActiveXObject("Microsoft.XMLHTTP");

}

returnxmlhttp;

}

//使用ajax验证当前用户是否存在

function_checkUserName(username){

if(username!

=""){

//1.获取XMLHttpRequest对象

varxmlhttp=getXMLHttpRequest();

//2.监听服务器返回状态

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readyState==4&&xmlhttp.status==200){

varresult=xmlhttp.responseText;

//根据result结果进行相应的处理

//后台返回一个标记,如果为-1,表示当前用户名存在

if(result==-1){

document.getElementById("username_notice").innerHTML="当前用户名已经存在,请使用其他用户名!

";

document.getElementById("registForm").onsubmit=function(){

returnfalse;

};

}//可以使用

elseif(result==1){

document.getElementById("username_notice").innerHTML="用户名可以使用";

document.getElementById("registForm").onsubmit=function(){

returntrue;

};

}elseif(result==-3){

document.getElementById("username_notice").innerHTML="用户名不能为空";

document.getElementById("registForm").onsubmit=function(){

returntrue;

};

}else{

document.getElementById("username_notice").innerHTML="服务器忙请稍后再试";

document.getElementById("registForm").onsubmit=function(){

returnfalse;

};

}

}

};

//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就那么多,只要学会了它就哦了,至于其它的帮助工具如何使用都是些大同小异的事情,实在不会可以XX嘛,XX不行就谷歌,再不行就翻墙。

当然也可以请教同学喝老师,找到问题的所在之处,总会解决的嘛。

所以最后列出一个等式:

成功=坚持冲过起步的低谷+良好的学习方法+勤敲代码的习惯+处理问题分析问题解决问题的能力。

 换行标签

  换段落标签

链接格式为:

超链接名称

第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.继承选择器(如:

divp,注意两选择器用空格键分开)

7.伪类选择器(如:

就是链接样式,a元素的伪类,4种不同的状态:

link、visited、active、hover。

在标签内写入style=""的方式,应该是CSS的一种引入方式,而不是选择器,因为根本就没有用到选择器。

我们分别来看下这些选择器:

1:

标签名选择器

一个XHTML文档中有许多标签,例如p标签,h1标签等。

若要使文档中的所有p标签都使用同一个CSS样式,就应使用标签选择器。

div{color:

red;border:

1pxbluesolid;}

p{color:

#000;}

2:

类选择器

使用标签选择器可以为整个XHTML文档中的同一个标签指定相同的CSS样式。

但是在实际运用中,XHTML文档中的同一个标签会被反复使用。

若要为相同的标签赋予不同的CSS样式就应使用类选择器。

测试代码

.test{color:

red;border:

1pxbluesolid;}

在html文档里,我们在要控制样式的标签的开标签(非成对标签如input直接放在标签里)里加入class="xxx",在页面对应的css文件里,用.xxx就可以指向这个标签,从而对这个标签进行控制,我们称这种通过定义类(class)来找到标签的方式为:

类选择器。

这种定义class的方式是前端开发最常用的选择器,有几个突出的特点:

可以给不同的标签设置同一个类,从而用一条CSS命令控制几个标签,减少大量代码,是页面修改简单,易维护,易改版;其次,后台工作人员机会不会用到有关class的相关设置,不需要跟后台人员之间进行交互;再者,可以通过js等动态改变标签的Classname,从而改变整个标签的样式,使前端动态效果实现起来更为容易。

3:

ID选择器

ID选择器和类选择器相似,不同的是,ID选择器不能复用。

在一个XHTML文档中,一个ID选择器只能把其CSS样式指定给一个标签。

测试代码

#test{color:

red;border:

1pxbluesolid;}

有ID的HTML元素可以被JavaScript来操纵.再就是ID也是后台开发人员会经常用的,所以前端开发人员应该尽量少的使用。

4.全局选择器

全局选择器是一个星号。

它能作用于XHTML文档中的所有元素。

*{margin:

0;padding:

0;}

5.组合选择器

标签选择器、类选择器和ID选择器是可以组合起来使用的。

一般的组合方式是标签选择器和类选择器组合,标签选择器和ID选择器组合。

由于这两种组合方式的原理和效果一样,所以只介绍标签选择器和类选择器的组合。

组合选择器只是一种组合形式,并不算是一种真正的选择器,但在实际中经常使用。

比如.orderlistli{xxxx}或者.tablesettd{}

我们使用的时候一般用在重复出现并且样式相同的一些标签里,比如litddd等。

比如H1.red{color:

red}

群组选择器

.test1,span,test2{border:

1pxbluesolid;}

div,span,img{border:

1p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1