❶ 如何设计网站——对Web设计的一点总结
在最近的工作中,遇到了导航的问题,无意中发现了找出了收藏已久的《别让我思考》,花了一周时间读了两遍,才清楚的理解导航对于一个产品的重要作用。也更加印证了产品圈中将用户当做小白的理论,其实并不是在产品设计中将一切都为用户标注出来,而是让用户能够通过自己的方式更加轻松的使用产品,这样的产品对于用户来说必定是不言而喻的,也就是主题“别让我思考”。下面是这次读书的笔记,虽然这本书给我很大的启发,但是一切需要归于实践,在实践中验证这个理论。
一、指导原则
第一章:别让我思考---可用性第一定律
web设计的终极法则:别让我思考,即看到一个界面应该是不言而喻,一目了然,自我解释。
强迫我们思考的地方:(1)酷炫的名字或技术名词。(2)看起来不太明显的按钮和链接
当思考时,需要权衡,权衡应该更倾向于“显而易见”,而不行hi需要额外的思考
每个需要思考的地方会加重用户的认知负担,把用户的注意力从要完成的任务上拉开
访问网站时不需要思考的事都有什么?
我在什么位置?
该从哪里开始?
他们把xx放在什么地方?
这个项目上最重要的是什么?
为什么他们给它取这个名字?
如果做不到让一个页面不言而喻,那么至少应该让它自我解释
当浏览网站遇到问题时,用户会认为是自己的错误,而不会责怪网站
如果要让网页有效,它们必须在用户第一眼看到时将自己展示出来,而要做到这一点,最好的方法是创建不言而喻的网页,或者至少是自我解释。
第二章:我们实际上是如何使用Web的---扫描,满意即可,勉强应付
事实1--我们不是阅读,而是扫描,寻找能吸引用户注意力的文字或词语(除新闻故事,报告,产品描述界面)
为什么扫描?
(1)我们总是处于忙碌之中---使用web是想节约时间
(2)我们知道自己不必阅读所有内容---寻找感兴趣或手头的任务相关的内容
(3)我们善于扫描---生活习惯,找感兴趣的内容
用户在网页上看到什么却决于想看到什么,通常为页面的一小部分内容
吸引注意力的文字和短语是什么?
(1)与手头任务有关的
(2)我们当前或接下来的个人兴趣
事实2---我们不作最佳选择,而是满意即可
用户大多数时间不会选择最佳选项,而是选择第一个合理的选项---满意策略
为什么不寻找最佳选择?
(1)我们总是处于忙碌之中---最佳策略时间久,满意策略效率高
(2)如果猜错了,也不会产生什么严重的后果
(3)对选择进行权衡并不会改善我们的机会
(4)猜测更有意思---猜测不会像权衡那么累,猜对了,可能看到意外的内容
事实3---我们不是追根究底,而是勉强应付
勉强应付不仅限于初学者,技术专家也会在理解事物的工作原理上有着惊人的误会
原因是什么?
(1)这对我们来说并不重要---明白事物工作机制并不重要
(2)如果发现某个事物能用,我们会一直使用它---如果遇到更好的方法,会用好的方法,但是很少主动寻找更好的方法
如果用户明白网站,而不是勉强应付的作用
(1)用户更容易找到自己需要的东西,对用户和网站都好
(2)用户更容易理解你的网站有哪些服务---不仅仅是用户偶然看到的
(3)引导用户看到你希望他们看到的内容(网站上)
(4)在你的网站上,用户会感到掌控全局,并逐渐成为老用户
第三章:广告牌设计101法则---为扫描设计,不为阅读设计
吸引用户的5个重要方面(为下方2-6部分内容)
在每个页面上建立清楚的视觉层次
尽量利用习惯用法
把页面划分成明确定义的区域
明显标识可以点击的地方
最大限度降低干扰
建立清楚的视觉层次
视觉层次清楚的页面的特点
(1)越重要的部分越突出
(2)逻辑上相关的部分在视觉上也相关
(3)逻辑上包含的部分在视觉上进行嵌套
一个页面没有清楚的视觉层次,用户会降低扫描页面的速度,会寻找关键的文字和短语,然后拼凑出感觉重要的内容和内容的组织方式,这样会增加工作量
习惯用法是你的好帮手
web的习惯用法
(1)它们非常有用---适当使用习惯用法,让用户访问更容易,减少额外学习工作原理ide成本
(2)设计师通常不愿意利用它们
如果不打算使用习惯用法,需要的做法:
a.必须确定你在使用一种同样清楚、同样不言而喻,没有学习曲线的方法
b.带来很大的价值
把页面划分成明确定义的区域
明显标识可以点击的地方
降低视觉噪声
噪声的分类
(1)眼花缭乱---所有的信息都想吸引用户的目光,没有突出点
(2)背景噪声---页面没有一个地方会造成过分干扰,但是这些很小的噪声太多会惹人厌烦
第四章:动物、植物、无机物---为什么用户喜欢无需思考的选择
真正的问题不是到达目标之前要点击的次数,而是每次点击有多难,需要多少思考,多大的不确定性来判断自己是否在进行正确的选择
关键:如果用户需要一直在网络上进行选择,那么让这些选择变得无需思考是让一个网站容易使用的原因
第五章:省略不必要的文字---不要在Web上写作的艺术
有力的文字都很简练。句子里不应该有多余的文字,段落中不应该有多余的句子
去掉没人看的文字的优点有哪些?
可以降低页面的噪声
让有用的内容更加突出
让页面简洁,让用户在每个页面上以言就能看见更多的内容,而不必滚动屏幕
需要去掉的文字是欢迎词和指示说明
二、必须正确处理的几个方面
第六章:街头指示牌和面包屑---设计导航
如果在网站上找不到方向、人们不会使用你的网站
网络导航101法则
你通常是为了寻找某个目标
你会决定先询问还是先浏览
如果选择刘兰兰,你将通过标志的引导再层次结构中穿行
最后,如果找不到想要的东西,你会离开
web与生活从空间角度来看的不同点
感觉不到大小
感觉不到方向
感觉不到位置
用户使用Web导航是因为需要得知自己当前的位置
导航的用途---显而易见的用途
帮助我们找到想要的任何东西
告诉我们现在身处何处
导航给了用户一些固定的感觉,让用户感到脚踏实地
导航的其他用途---被忽视的用途
导航告诉我们当前的位置---告诉网站有些什么,导航表现了内容,导航站点比告诉我们位置更重要
导航告诉我们如何使用网站---从哪里开始,如何进行选择
导航给了用户对网站建造者信心
Web导航的习惯用法
网站ID
栏目
实用工具
指示器(指明用户当前位置)
下一级栏目
页面名称
页面导航(当前这一层的内容)
小字体版的底端导航
持久导航(或全局导航):来描述出现在网站每个页面的一组导航元素
持久导航应在在整个网站保持一致,使用户只需要了解一次就够了,减少学习成本
持久导航的五个元素
站点ID
回首页的方式(Home)
搜索的方式
栏目
实用工具
主页和表单不需要使用持久导航
主页:承担一些不同的任务,遵守一些不同的承诺,所以不需要使用持久导航
表单:在填写表单的页面,持久导航会产生干扰
如何设计Web导航各元素(表格下方为示例-亚马逊)
导航元素名称
细节点
站点ID
1.在Web上需要在每个页面都能看到网站的名称---页面ID,通常在左上或靠近左上
2.网站ID代表整个网站,也就是说在当前站点结构中层次最高
3.站点ID如何出现在页面可视层次的首要位置
(1)让网站站点成为本页最显眼的内容
(2)让网站ID涵盖页面所有其他元素
4.站点ID需看起来像一个站点ID---例如logo
栏目
1.栏目(或称主导航条)是到达站点主要栏目的链接,结构的最顶层
2.大部分情况,持久导航也包括二级导航(当前栏目的下一级栏目清单)的显示位置
实用工具
实用工具是到达网站中不属于内容层次的重要元素的链接
返回主页Home
1.返回主页(Home)的按钮需要始终可见,给用户一种随时可以从新开始的感觉
2.Home的用法
(1)在栏目或使用工具清单中包含一个回到主页的链接
(2)在主页之外的站点ID上小心地加上Home的字样,让用户知道点击它
搜索
1.避免混淆的方法
(1)花哨的用字
(2)指示说明
(3)选项---将选项写下来
2.需要对低层次导航给予足够的重视(三级导航)
页面名称
1.页面名称的注意事项
(1)每个页面都需要一个名称
(2)页面名称要出现在合适的位置
(3)名称引人注目
(4)名称要和点击的链接一致
指示器
1.如何标记当前位置
(1)在旁边放置一个指示器
(2)改变文字的颜色
(3)使用粗体
(4)按钮反白
(5)改变按钮的颜色
2.告诉用户你所在的站点层级结构的前后关系(在网页中的位置)
层级菜单
1.告诉用户从主页到当前位置的路径(如何到达)
2.层级导航的最佳实践方式
(1)将它们放在最顶端
(2)使用“>”对层级进行分隔
(3)使用小字体(表明是一种补充机制)
(4)使用了文字“你在这里”
(5)将最后一个元素加粗
(6)不需要把它们用作页面名称
标签
1.为什么标签做导航是一个上佳的选择
(1)它们不言而喻
(2)它们很难错过(视觉上与众不同)
(3)它们灵活
(4)它们暗示了一个物理的空间
2.注意事项
(1)正确绘制---激活的标签页在其他标签页之前
(2)颜色编码---提高关注度
示例
如何评判一个网站设计的好
这是什么网站?(站点ID)
我在哪个网页上?(网页名称)
这个网站的主要栏目有哪些?(栏目清单)
在这个层上我有哪些选择?(本页导航)
我在导航系统的什么位置?(“你在这里”的指示器)
我怎么搜索?(搜索栏)
第七章:首先要承认,主页不由你控制---设计主页
主页主要完成的任务
站点的标识和使命---告诉用户这是什么网站,做什么的
站点层次---提供服务的概貌,包括内容,功能,服务是如何组织
搜索
导读---需要有内容推介,功能推介
友情链接---预留空间放置广告,交叉推广,品牌合作
快捷方式---最常访问的内容片段值得在网页上放置链接
注册
主页需要满足的抽象目标
让用户看到自己在寻找东西---让用于想要的任何东西显而易见
......还有我没有寻找的---让用户看到一些精彩的内容,就算这些内容用户没有寻找
告诉用户从哪开始
建立可信度和信任感
主页的常见约束有哪些
每个人都想占一席之地---推介内容过多
想要参与的人太多
一个尺寸要适合所有的人---普遍适用于大众
主页需要传达整体形象,让用户一眼就能清楚你的网站是说什么的
如何向用户传达网页的整体形象
口号---靠近站点ID的地方,整个网站的描述
欢迎广告---网站的简要描述,在主页的首要位置,不需要滚动屏幕就能看到
传达信息的原则
需要多大空间就使用多大空间
但也不要使用过多的空间---保持简短
不要把实名陈述当做欢迎广告
最后的是进行测试
口号的注意事项
好的口号
不好的口号
清楚、言之有物
含混不清
长度适中,易让用户领会表达思想
太笼统
表达出网站特点和显而易见的好处
把口号(传达某种价值主张)和宗旨(表达某种指导原则,某个目标或某个理想)混淆起来
有个性、生动、有时候很俏皮
由于主页独特的职责,通常不必使用持久导航,它们之间的差异
栏目描述---主页需要尽可能多的表现网页内容,其他页面不需要
不同的方向---主页和其他页面布局不同,主页通常用
用于表示的空间更多---主页上站点ID比较大,口号留有空间也较大
让栏目的名称保持不变,同样的顺序、同样的文字和同样的分组,尽可能多地保持视觉提示,同样的字体,颜色和大小写
下拉框存在的问题
用户必须将它们找出来---必须找到下拉框,才能看到下拉列表
它们难以扫描
不好控制---下拉列表收缩速度难以控制
下拉框对于组织按照字母顺序排列的项目比较有效
下拉框的优点是节约空间
任何共享的资源(共有区域)都会因为过度使用而遭到破坏---在主页上增加更多的项目所得到的的和付出的并不一致,虽然给推荐栏目巨大的访问量,但是让主页变得混乱,所遭受的损失将由所有栏目承担
三、确定你没有做错的几件事
第八章:农场主和牧羊人应该是朋友---为什么Web设计团队讨论可用性是在浪费时间,如何避免这种情况
由于各自的职位不同,Web团队成员对于好的网站设计的看法不同
通过测试将讨论对错转移到什么有效、什么无效上,测试会让我们看到用户的动机、理解和反应的不同,从而不再让我们坚持用户和我们的想法相同
第九章:一天10美分的可用性测试---让测试简单,这样你能进行充分的测试
焦点小组并不是可用行测试,焦点小组是在项目早期阶段,用来收集用户的意见和感觉
可用性测试主要是希望得到用户是否知道该网站是做什么的,并且能用它完成一项典型任务
测试的作用是什么
如果想建立一个优秀的网站,一定要测试
测试一个用户比不做测试好一倍
在项目中,在点测试一位用户好过最后测试50位用户
人们对招募用户代表的重要性评估过高
测试的关键不是要证明什么或者反驳什么,而是了解你的判断力
测试是一个迭代的过程
没有什么比现场用户的反应更重要
寻找能够反应目标群体的测试用户,但别裹足不前
寻找的测试用户可以和目标群体有差别的理由是什么
差别的原因
例外
实际上,我们都是初学者
如果你的网站几乎只由某一类用户使用,且招募并不难,那就去招募
设计出的网站只有你的目标群体能使用,这通常并不是一个好主意
如果你的目标群体分为几个明显阵营,且各阵营有着完全不同的需求,那你至少要从每个阵营选择用户进行一次测试
专家通常不会介意对初学者来说很清楚的界面
如果使用你的网站需要专业的领域知识,那么你需要在该领域中招募有专业知识的用户
进行招募,需要注意的问题是什么
提供合理的激励
邀请要简单
避免对网站(或网站背后的组织结构)进行预先讨论
别不好意思请朋友帮忙
测试中遇到的问题
用户不清楚概念
用户找不到自己想要的字眼---网站用来组织内容的分类不符合用户习惯;分类符合习惯但是没有使用他们期望的名字
内容太多---减少页面上的干扰;将需要看到的内容涉及的更加醒目
一些关于问题分类指南
问题
行为(用户/主持)说明
正确解决方式
忽略Kayak(皮划艇)问题
1.出现问题的人马上发现自己偏离了原来的主题
2.用户尽量回到原来的方向而不需要帮助
3.这种情况并没有扰乱用户的活动
可以忽略
抵制添加的冲动
增加一些内容,注释,指导说明
去除某个让人混淆的内容
不要太看重用户对新功能的要求
抓住能够的着的果子
1.恍然大悟型
2.便宜型
尽量实现变更
进行变更
只要你进行改变,就要仔细思考它将会影响哪些内容,当你把某些部分调整的更为突出时,想想是不是把其他内容的重要性降低了
四、大的方面和外界影响
第十章:可用性是基本礼貌---为什么你的网站应该让人尊敬
降低好感度的方式
隐藏我想要的信息
因为没有按照你们的方式行事而惩罚我
向我询问不必要的信息
敷衍我,欺骗我
给我设置障碍
你的网站看上去不专业
提高好感度的方式
知道用户在你的网站上想做什么,并让网站明白简易
告诉用户,他们想知道的
尽量减少步骤
花点心思
(1)保证网站准确有用
(2)产生解决我的问题所需要的信息
(3)网站用清楚的方式表达
(4)组织良好,用户可以轻松找到解决方案
知道用户有哪些疑问,并给予解答
为用户提供协助
容易从错误中恢复
如果不确定,记得道歉
总结
这本书主要讲了Web设计的一些核心的原则,以及用户在使用Web时的心理,并且基于用户的信息,来设计Web的导航和主页。并且结合实践,在项目中需要不断的进行可行性测试迭代,从而使Web可行。这样的网站才是一个成功的网站,在符合用户的习惯的基础上,让用户能够自行的解决问题,从而达到网站和用户的目的。
资源类:
大家都知道,学习本身是一个特别耗费时间和财力的事情,但是为了自身发展,却不得不学习,而且现在对于职业教育的课程特别贵,并且专业书籍也是非常贵的。虽然说是投资自己,但是对于生活来说还是较大的开销,因此算是众筹了,毕竟一个课程可能动则几千块,但是我并不贪心,所以分享的课程的价格很低,不会超过5块钱吧,毕竟大家都是为了生活,只希望弥补一点生活压力吧,各位加油吧
链接:在线教育视频课(产品设计)
https://pan..com/s/1CqvJixlcarLewUcFYCcJWwpan..com
提取码:afvs
俞军产品方法论:
链接:
https://pan..com/s/1ws7N0ZrcuiY_GRZ8710zVQ
提取码:lizk
梁宁产品思维30讲:
链接:
https://pan..com/s/1KtdGjzV_cAWN8xlrMX7ENg
提取码:tr7i
增长黑客:
链接:
https://pan..com/s/1T5lIjrpCu7oc5hYF1hpmag
提取码:dpm3
❷ JavaWeb 编程习题,求解!最好是工程包
题目太长分数又太少,谁给你做啊
❸ web程序设计asp.net实用网站开发 第2版 课后习题答案(沈士根版)
先分析原因。
你出现这个错误是因为你没有了解ASP.NET的工作原理。ASP.Net 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。
1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。
2,为什么你的写法不会转换呢?因为首先 传递给Literal1.Text 的值在asp.net中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。
解决办法:
知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?
因为你的LinkButton1_Click1 事件并没有在asp.net中被解析为可供浏览器识别的js代码。
如何解决?
在aspx页面中写一个asp:LinkButton按钮:
<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>
运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下
<a id="LinkButton2" onclick="xxxxx"></a>
将新加的linkbutton 设置不可见属性
<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>
重新修改后台代码
Literal1.Text = "<li>" + ((users)Session["users"]).Name.ToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li> </li><li>信息修改</li><li> </li>";
//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。
希望对你有帮助
❹ javaweb练习题
书上有
❺ 一道java web的练习题,javabean,jstl,只能悬赏100分做得好的追加分啊
太简单了,这到底有几个题目啊,我帮你完成3是不是就意味着完成了你所有的要求?
讲清楚了我帮你做,就当复习。
❻ 计算机二级《Web程序设计》试题及答案
计算机二级《Web程序设计》试题及答案
1在下列的HTML中,正确产生超链接的标记是()。
A.新浪网B.新浪网C.http:///WWW.sina.Corn.cnD.新浪网
参考答案:B
2下面协议中用于在Web浏览器和服务器之间传输Web文档的是()。
A.NFSB.FTPC.HTTPD.DNS
参考答案:C
3在HTTP响应的MIME消息体中,可以同时包含如下类型的数据()。
i .文本数据 ii.图片数据 iii.视频数据 iv.音频数据
A.仅iB.i和iiC.i、ii和iiiD.全都可以
参考答案:D
4HTTP协议是一种()协议。
A.文件传输协议B.邮件协议C.远程登录协议D.超文本传输协议
参考答案:D
5在HTML文档中使用的注释符号是()。
A.//…B./*……*/C.D.以上说法均错误
参考答案:C
6HTTP请求消息中可以不包含()。
i.开始行 ii.消息头iii.消息体实体数据
A.仅iB.i和iiC.ii和 iiiD.仅iii
参考答案:C
7下列技术中控制文档结构的.是()。
A.DOMB.CSSC.JavaScriptD.XMLHttpRequest
参考答案:A
8下列语言编写的代码中,在浏览器端执行的是()。
A.wt h页面中的c#代码
B.Web页面中的Java代码
C.Web页面中的PHP代码
D.Web页面中的JavaScript代码
参考答案:D
9在HTTP/1.1协议中,持久连接选项是()的。
A.默认关闭B.默认打开C.不可协商D.以上都不对
参考答案:B
10以下不是HTTP协议的特点的是()。
A.持久连接B.请求/响应模式C.只能传输文本数据D.简单、高效
参考答案:C
11下列语句中,正确打开名为“window2"的新窗口的JavaScript语句是()。
A.open.new("http://www.sina.COB.cn","window2")
B.new.window("http://www.sina.con.cn","window2")
C.new("http://www.sina.com.cn","window2")
D.window.open("http://www.sina.tom.cn","window2")
参考答案:D
12以下选项中,全部都是表格标记的是()。
参考答案:B
13下列关于ASP.NET的描述中,错误的是()。
A.ASP.NET依赖于微软的.NET框架
B.ASP.NET采用纯面向对象语言比采用脚本语言的执行效率高
C.ASP.NET采用代码分离技术有利于开发协作
D.ASP.NET和ASP都采用了JavaScript编程语言
参考答案:D
14下列函数中能够把6.25四舍五入为最接近的整数的是()。
A.round(6.25)B.rnd(6.25)C.Math.rnd(6.25)D.Math.round(6.25)
参考答案:D
15目前在Internet上应用最为广泛的服务是()。
A.FTP服务B.Web服务C.Telnet服务D.Gopher服务
参考答案:B
16下列正确地在CSS文件中插入注释的语句是()。
A.//this is a commentB.//this is a comment//C./*this is a comment*/D.'this is a comment
参考答案:C
17下列不属于动态网页格式的是()。
A.ASPB.JSPC.ASPXD.VBS
参考答案:D
18以下语句中,正确制作电子邮件链接的是()。
参考答案:C
19下列哪个样式能够显示这样一个边框:上边框10像素、下边框5像素、左边框20像素、右边框l像素?()
A.border—width:10px 5px 20px 1px
B.border—width:10px 20px 5px 1px
C.border—width:5px 20px l0px 1px
D.border—width:10px 1px 5px 20px
参考答案:D
20CSS 主要用下列哪个HTML标记构建页面布局?()
参考答案:B
21在下列选项中,正确地产生文本区(textarea)的标记是()。
参考答案:A
22在访问的URL http://Cms.bit.e.Cn:8080/login.aspx中,http表示()。
A.端口号B.文件名C.访问协议D.主机名
参考答案:C
23下列标记中不属于行内元素的是()。
参考答案:D
24在HTML文档中用于表示页面标题的标记对是()。
参考答案:D
25下列符合CSS语法的正确语句是()。
A.body:color=blackB.{body;color:black}C.body{color:black;}D.{body:color=black}
参考答案:C
更多计算机二级试题推荐:
1. 2016年9月计算机二级web考试试题及答案
2. 计算机二级《Web程序设计》试题及答案
3. 计算机二级考试WEB试题及答案
4. 2016计算机二级考试《Web程序设计》练习题模拟
5. 2016计算机二级考试高级Office试题及答案
6. 2016最新计算机二级考试试题及答案
7. 2016年计算机二级office高级应用试题【题库】
8. 2016计算机二级等级考试题型分析
9. 2016下半年计算机二级ps试题及答案
10. 计算机二级Office考试试题及答案
;❼ java web程序设计要学些什么
一、 HTML CSS Javascript
正如严老师所说:“Java Web 的基础是建立在HTML这套标签的地基之上的”。所以学习Java Web 就要学习HTML的标签,开始对HTML的理解并不是很深,本以为作为程序员对HTML的重点掌握无非就是From表单,哦,对了,还有Table,<a herf=””>,文档的格式<head><body>等等等等,而对于CSS,更觉得这对于作为程序员的我们没有什么太大的必要,那些事情完全是由美工来做的,而对于Javascript则觉得他应当是与vbscript一个时代的脚本语言,其作用无非是给页面添加一些花哨的动态效果没有什么实际意义,但是当我接触到更多的新技术如AJAX的时候便觉得我所掌握的远远不够,对于AJAX而言你学要知道每个细节从而能够设计出既美观又具有人性化的用户界面。而AJAX所以依托的基础便是Javascript、CSS、HTML、XML,其思想在于使用XMLHttpRequest实现异步调用把数据偷偷的下载到客户端从而使得用户无需刷新界面从而得到更好的上网体验,此三种技术在AJAX中发挥的淋漓尽致。这才知道那本OReilly的 “Javascript犀牛书”并不是盖的。这三个基础性的东西还是学要好好的学习,老的技术相结合也能焕发出新的光彩。
二、 TomCat
总觉的这是一个让人头疼的东西,学习的时候常需要给他进行很多项配置,首先是虚拟路径,在server.xml文件夹下加上<Context path=”/test” docBase=”F:\dwb”>,有一次给同学安装Tomcat6.0把Tomcat5.5里面老师写好的server.xml直接粘贴到了Tomcat6.0的cong文件夹下竟不能运行,这才知道版本不同随便粘贴后果是很可怕的,还是老老实实的把<Context path=”/test” docBase=”F:\dwb”>这句话粘贴上才是。东西有时命名目录里的东西已经更改了,TomCat也已经重新启动了,但网页上显示的依旧是以前的东西,还得把C:\Program Files\Apache Software Foundation\Tomcat 5.5\work\Catalina\localhost\这个目录下的虚拟路径删掉(如经典的test目录)。在做第9、10、11章的例子的时候还要把WEB-INF文件夹放到虚拟目录的根目录下否则会找不到WEB-INF文件夹,总之问题多多,问题越多,自己的经验也就越多。
三、 JSP基本语法
1、 < % %>在jsp页面中插入Java代码,<%= %>表达式输出语句
2、 JSP指令和动作:指令主要是<%@page %>、<%@include %>;动作主要是<jsp:forward>、<jsp:include>、<jsp:usebean>、<jsp:setProperty>、<jsp:getProperty>
3、 四种属性的作用域page、request、session、appliction,一个比一个大,page只对当前页面有效,request是在两个页面跳转的时候包括服务器端的跳转,seesion只要浏览器不关闭,属性一直存在。Appliction只要服务器(如Tomcat)不关闭它一直都存在
总之我感觉JSP的基本语法还是很简单的无非就是几个标签指令什么的,稍需要注意的是<jsp:forward>是服务器端的跳转URL地址不变,<%@include %>、<jsp:include>主要是包含静态和动态的区别。
四、 JSP内置对象
Request:主要作用接受表单传来的数据,
Response:主要是可以像客户端发送头部信息和重定向sendRedirect
Out:输出一些东西
Exception:一些异常信息
Config:这个对象比较厉害,它能获得web.xml中的许多信息,如<application>中的值,<servlet>中的parm值等
Session和applicition对象主要是用他们的setAttribute和getAttribute方法存取一些属性值,不同之处在于他们的作用域
五、 JDBC
与数据库进行连接,这是学习程序的重头戏,但也不是很难,主要是记住连接数据库的一些流程
1、 Class.forName(驱动程序字符串)
主要有四种驱动方式,字符串也各不相同,我们常用的是连接access的jdbc odbc bridge字符串为sun.jdbc.odbc.jdbcodbcdriver
2、 DirverManger.getConnection(DBURL)
DBURL字符串为 Jdbc:odbc:数据源名称
3、新建statement对象
4、执行exectuQuery或exectuUpdata方法
5、逆序关闭数据库
六、结语:设计模式 与开发框架
DAO模式已经过时了,现在的主流模式是MVC;其中主要用了servlet充当控制层, 还需要在web.xml中配置servlet映射,它主要是起到数据控制流向的作用,现在说有主流的框架都是使用MVC模式,如SSH,但是这些框架都没有想微软vasual Studio那样的可是控件(虽然JavaBen是一些可复用的类),2005年推出的JSF开发框架弥补了这一缺陷,相信在未来作为SUN官方标准推出的JSF开发框架可能会成为主流框架,因为ESRI的ArcGIS Server就是依托于JSF框架开发的产品,相信JSF会成为以后开发框架的主流!
❽ 第五章:Web服务器
5.1各种形状和尺寸的Web服务器
Web服务器会对HTTP请求进行处理并提供响应。术语“Web服务器”可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备或计算机。
Web服务器有着不同的风格、形状和尺寸。有普通的10行Perl脚本的Web服务器、50MB的安全商用引擎以及极小的卡上服务器。但不管功能有何差异,所有的 Web服务器都能够接收请求资源的 HTTP请求,将内容回送给客户端(参见图1-5)。
5.1.1Web服务器的实现
Web服务器实现了HTTP和相关的TCP连接处理。负责管理Web服务器提供的资源,以及对Web服务器的配置、控制及扩展方面的管理。
Web服务器逻辑实现了HTTP 协议、管理着Web资源,并负责提供Web服务器的管理功能。Web服务器逻辑和操作系统共同负责管理TCP连接。底层操作系统负责管理底层计算机系统的硬件细节,并提供了TCP/IP网络支持、负责装载Web资源的文件系统以及控制当前计算活动的进程管理功能。
5.3实际的Web服务器会做些什么
例5-1显示的 Perl服务器是一个Web服务器的小例子。最先进的商用Web服务器要比它复杂得多,但它们确实执行了几项同样的任务,如图5-3所示。
(1)建立连接一—接受一个客户端连接,或者如果不希望与这个客户端建立连接,就
将其关闭。
(2)接收请求——从网络中读取一条HTTP请求报文。(3)处理请求——对请求报文进行解释,并采取行动。(4)访问资源-———访问报文中指定的资源。
(5)构建响应——创建带有正确首部的 HTTP响应报文。(6)发送响应——将响应回送给客户端。
(7)记录事务处理过程—-将与已完成事务有关的内容记录在一个日志文件中。
5.4第一步——接受客户端连接
如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则,客户端需要打开一条新的到服务器的连接(回顾第4章,复习一下HTTP的连接管理技术)。
5.4.1处理新连接
客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来。'一旦新连接建立起来
并被接受,服务器就会将新连接添加到其现存Web服务器连接列表中,做好监视连接上数据传输的准备。
Web服务器可以随意拒绝或立即关闭任意一条连接。有些Web服务器会因为客户端IP地址或主机名是未认证的,或者因为它是已知的恶意客户端而关闭连接。Web服务器也可以使用其他识别技术。
5.4.2客户端主机名识别
可以用“反向 DNS”对大部分Web服务器进行配置,以便将客户端IP地址转换成客户端主机名。Web服务器可以将客户端主机名用于详细的访问控制和日志记录。但要注意的是,主机名查找可能会花费很长时间,这样会降低Web事务处理的速度。很多大容量Web服务器要么会禁止主机名解析,要么只允许对特定内容进行解析。
可以用配置指令HostnameLookups启用Apache的主机查找功能。比如,例5-2中的Apache配置指令就只打开了HTML和CGI资源的主机名解析功能。
例5-2配置Apache,为 HTML和CGI资源查找主机名
HostnameLookups off
<Files ~" - 《html |htmlcgi)$">
HostnameLookups on
</Files>
5.5第二步—接收请求报文
连接上有数据到达时,Web服务器会从网络连接中读取数据,并将请求报文中的内容解析出来(参见图5-5)。
解析请求报文时,Web服务器会:
·解析请求行,查找请求方法、指定的资源标识符(URI)以及版本号,3各项之
间由一个空格分隔,并以一个回车换行(CRLF)序列作为行的结束,“
·读取以CRLF结尾的报文首部;
检测到以CRLF结尾的、标识首部结束的空行(如果有的话)﹔
·如果有的话(长度由content-Length首部指定),读取请求主体。
解析请求报文时,Web服务器会不定期地从网络上接收输入数据。网络连接可能随时都会出现延迟。Web服务器需要从网络中读取数据,将部分报文数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。
5.5.1 报文的内部表示法
有些Web服务器还会用便于进行报文操作的内部数据结构来存储请求报文。比如,数据结构中可能包含有指向请求报文中各个片段的指针及其长度,这样就可以将这些首部存放在一个快速查询表中,以便快速访问特定首部的具体值了(参见图5-6)。
5.5.2连接的输入/输出处理结构
高性能的 Web服务器能够同时支持数千条连接。这些连接使得服务器可以与世界各地的客户端进行通信,每个客户端都向服务器打开了一条或多条连接。某些连接可能在快速地向Web服务器发送请求,而其他一些连接则可能在慢慢发送,或者不经常发送请求,还有一些可能是空闲的,安静地等待着将来可能出现的动作。
因为请求可能会在任意时刻到达,所以Web服务器会不停地观察有无新的Web请求。不同的Web服务器结构会以不同的方式为请求服务,如图5-7所示。
·单线程Web服务器(参见图5-7a)
单线程的Web服务器一次只处理一个请求,直到其完成为止。一个事务处理结束之后,才去处理下一条连接。这种结构易于实现,但在处理过程中,所有其他连接都会被忽略。这样会造成严重的性能问题,只适用于低负荷的服务器,以及type-o-serve这样的诊断工具。
·多进程及多线程Web服务器(参见图5-7b)
多进程和多线程Web服务器用多个进程,或更高效的线程同时对请求进行处理。3可以根据需要创建,或者预先创建一些线程/进程。°有些服务器会为每条连接分配一个线程/进程,但当服务器同时要处理成百、上千,甚至数以万计的连接时,需要的进程或线程数量可能会消耗太多的内存或系统资源。因此,很多多线程Web服务器都会对线程/进程的最大数量进行限制。
·复用I/O的服务器(参见图5-7c)
为了支持大量的连接,很多Web服务器都采用了复用结构。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时(比如,有数据可用,或出现错误时),就对那条连接进行少量的处理,处理结束之后,将连接返回到开放连接列表中,等待下一次状态变化。只有在有事情可做时才会对连接进行处理,在空闲连接上等待的时候并不会绑定线程和进程。
·复用的多线程Web服务器(参见图5-7d)
有些系统会将多线程和复用功能结合在一起,以利用计算机平台上的多个CPU.多个线程(通常是一个物理处理器)中的每一个都在观察打开的连接(或打开的连接中的一个子集),并对每条连接执行少量的任务。
5.6第三步———处理请求
一旦Web服务器收到了请求,就可以根据方法、资源、首部和可选的主体部分来对请求进行处理了。
有些方法(比如POST)要求请求报文中必须带有实体主体部分的数据。其他一些方法(比如OPTIONS)允许有请求的主体部分,也允许没有。少数方法(比如GET)禁止在请求报文中包含实体的主体数据。
这里我们并不对请求的具体处理方式进行讨论,因为本书其余大多数章节都在讨论这个问题。
5.7第四步——-对资源的映射及访问
Web 服务器是资源服务器。它们负责发送预先创建好的内容,比如HTML页面或JPEG 图片,以及运行在服务器上的资源生成程序所产生的动态内容。
5.7.1 docroot
Web服务器支持各种不同类型的资源映射,但最简单的资源映射形式就是用请求URI作为名字来访问Web服务器文件系统中的文件。通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容。这个文件夹被称为文档的根目录(document root,或docroot)。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。
在图5-8中,有一条对/specials/saw-blade.gif 的请求到达。这个例子中Web服务器的文档根目录为/us/local/httpd/files。Web服务器会返回文件/usr/local/httpd/files/specials/saw-blade.gif。
在配置文件httpd.conf中添加一个 DocumentRoot行就可以为Apache Web服务器设置文档的根目录了:
DocumentRoot /usr/ local/httpd/files
服务器要注意,不能让相对URL退到docroot之外,将文件系统的其余部分暴露出来。比如,大多数成熟的Web服务器都不允许这样的URI看到Joe的五金商店文档根目录上一级的文件:
http://www.joes-hardware.com/ ..
5.8.3重定向
Web服务器有时会返回重定向响应而不是成功的报文。Web服务器可以将浏览器重定向到其他地方来执行请求。重定向响应由返回码3XX说明。Location响应首部包含了内容的新地址或优选地址的URI。重定向可用于下列情况。
·永久删除的资源
资源可能已经被移动到了新的位置,或者被重新命名,有了一个新的URL。Web服务器可以告诉客户端资源已经被重命名了,这样客户端就可以在从新地址获取资源之前,更新书签之类的信息了。状态码301 Moved Permanently就用于此类重定向。·临时删除的资源
如果资源被临时移走或重命名了,服务器可能希望将客户端重定向到新的位置上去。但由于重命名是临时的,所以服务器希望客户端将来还可以回头去使用老的URL,不要对书签进行更新。状态码303 See Other以及状态码307 TemporaryRedirect就用于此类重定向。