当前位置:首页 » 网页前端 » web例子
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

web例子

发布时间: 2022-12-31 12:50:36

① 简述一下Java中的web容器,举几个例子也行

目前市场上常用的开源Java Web容器有Tomcat、Resin和Jetty。其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的。可以分别从他们的网站上下载最新的二进制包和源代码。
作为Web容器,需要承受较高的访问量,能够同时响应不同用户的请求,能够在恶劣环境下保持较高的稳定性和健壮性。在HTTP服务器领域,Apache HTTPD的效率是最高的,也是最为稳定的,但它只能处理静态页面的请求,如果需要支持动态页面请求,则必须安装相应的插件,比如mod_perl可以处理Perl脚本,mod_python可以处理Python脚本。

上面介绍的三中Web容器,都是使用Java编写的HTTP服务器,当然他们都可以嵌到Apache中使用,也可以独立使用。分析它们处理客户请求的方法有助于了解Java多线程和线程池的实现方法,为设计强大的多线程服务器打好基础。

Tomcat是使用最广的Java Web容器,功能强大,可扩展性强。最新版本的Tomcat(5.5.17)为了提高响应速度和效率,使用了Apache Portable Runtime(APR)作为最底层,使用了APR中包含Socket、缓冲池等多种技术,性能也提高了。APR也是Apache HTTPD的最底层。可想而知,同属于ASF(Apache Software Foundation)中的成员,互补互用的情况还是很多的,虽然使用了不同的开发语言。

Tomcat 的线程池位于tomcat-util.jar文件中,包含了两种线程池方案。方案一:使用APR的Pool技术,使用了JNI;方案二:使用Java实现的ThreadPool。这里介绍的是第二种。如果想了解APR的Pool技术,可以查看APR的源代码。

ThreadPool默认创建了5个线程,保存在一个200维的线程数组中,创建时就启动了这些线程,当然在没有请求时,它们都处理“等待”状态(其实就是一个while循环,不停的等待notify)。如果有请求时,空闲线程会被唤醒执行用户的请求。

具体的请求过程是: 服务启动时,创建一个一维线程数组(maxThread=200个),并创建空闲线程(minSpareThreads=5个)随时等待用户请求。 当有用户请求时,调用 threadpool.runIt(ThreadPoolRunnable)方法,将一个需要执行的实例传给ThreadPool中。其中用户需要执行的实例必须实现ThreadPoolRunnable接口。 ThreadPool首先查找空闲的线程,如果有则用它运行要执行ThreadPoolRunnable;如果没有空闲线程并且没有超过maxThreads,就一次性创建minSpareThreads个空闲线程;如果已经超过了maxThreads了,就等待空闲线程了。总之,要找到空闲的线程,以便用它执行实例。找到后,将该线程从线程数组中移走。 接着唤醒已经找到的空闲线程,用它运行执行实例(ThreadPoolRunnable)。 运行完ThreadPoolRunnable后,就将该线程重新放到线程数组中,作为空闲线程供后续使用。

由此可以看出,Tomcat的线程池实现是比较简单的,ThreadPool.java也只有840行代码。用一个一维数组保存空闲的线程,每次以一个较小步伐(5个)创建空闲线程并放到线程池中。使用时从数组中移走空闲的线程,用完后,再“归还”给线程池。

② Web 有哪些 Erlang 语言应用的例子

Mochiweb
一句话介绍: MochiWeb is an Erlang library for building lightweight HTTP servers.
Mochiweb在Erlang项目中被当做一个Web组件被广泛使用(比如RabbitMQ的plug-in),它的设计相当收敛,除了基础的Web请求处理没有提供特别复杂的功能集(后面会提到其它Web Server).目前我已经在两个项目中使用了Mochiweb,得心应手.
Mochiweb项目代码有很多值得学习的地方,比如 mochiglobal [ 链接 ],Parameterized mole [链接]今年夏天我把Mochiweb代码打印了一份,看得很是过瘾.这里有一篇实战风格的入门文章:A practical introction to MochiWeb - Alex Marandon[链接]
使用Rebar很容易编译运行,里面自带一个简单的Echo demo,你可以使用Rebar快速建立起来自己的站点框架,动手试试吧
项目地址:mochi/mochiweb · GitHub

Cowboy
一句话介绍: Cowboy is a small, fast and molar HTTP server written in Erlang.
使用Cowboy需要通过编写Handler来定制如何处理Web请求.这是它设计上的一大特色.项目源码自带了N种版本的hello_world,也是可以非常快上手.编译运行依然是rebar搞定,这个项目现在保持更新,每天都能收到github推送的代码变更邮件.
项目地址:extend/cowboy 路 GitHub

YAWS
一句话介绍:Yaws is a HTTP high perfomance 1.1 webserver particularly well suited for dynamic-content web applications.
这个略显怪异的名字是Yet another Webserver的缩写.其提供的已经不是简单的脚手架了,而是支持动态内容输出,REST,文件上传SOAP等等.在其官网上有丰富的文档和样例代码.O'Reilly在2012年6月出版的 Building Web Applications with Erlang 一书中使用的就是YAWS.这本不足150页的小册子是很好的YAWS入门教程.估计国内出版社不会引进这样一本冷冷的书,自己找电子版读吧,很容易找到.
项目地址:Yaws

Misultin [停止更新]
一句话介绍: Misultin development has been discontinued.
是的,这个项目已经不再继续更新了;停止更新的原因是作者认为各个Web server项目有"too much plication of efforts".作者在项目介绍中倒是简单评价了Mochiweb和Cowboy:

Mochiweb has been around the block for a while and it's proven solid in proction, I can only recommend it for all basic webserver needs you might have. Cowboy has a very interesting approach since it allows to use multiple TCP and UDP protocols on top of a common acceptor pool. It is a very modern approach, is very actively maintained and many projects are starting to be built around it.
项目地址:ostinelli/misultin ¡ GitHub
看过Misultin作者的一番评论,其实可以回答不少人关于"用Mochiweb做Web项目很痛苦"的问题:如果你要做一个丰富多彩的Web站点,在Mochiweb提供的脚手架上,你要完成很多工作,显然你需要其它选择,呃,或许你需要选择一个Web Framework了.对于大多数框架来说,其设计的总要目标就是开发效率和常见应用场景的支持.我们看看有哪些Erlang Web Framework可用吧!
Elrang Web Frameworks
除了http://Asp.net MVC,RoR之外,其实还有很多Web Framework可用,看看Erlang世界里面的解决方案吧:

ChicagoBoss
一句话介绍:Chicago Boss is a server framework inspired by Rails and written in Erlang.
ChicagoBoss是现在非常活跃的Erlang Web Framework,在各种细节上都为新手准备的相当周到比如60秒快速上手教程什么的.甚至它说自己区别于其它Erlang Web Framework的就是" it is easy to set up and use."它之间Web Server是选择的Misultin现在已经迁移到Cowboy.前端MVC架构,内置消息队列BOSSMQ,数据存储方面选择性也比较多:Mnesia MongoDB Mysql PostgreSQL Riak ,Tokyo Tyrant;模板方案依然是使用ErlyDTL.
另外,我觉得ChicagoBoss的文案是这些项目里面写的最棒的,直接命中你最想知道的两个问题:
"Chicago Boss is a server framework inspired by Rails and written in Erlang. It offers all the conveniences of modern web development, including Comet. What sets Chicago Boss apart from other non-Erlang frameworks is that it can handle large amounts of traffic without any drop in performance. What sets Chicago Boss apart from other Erlang frameworks is that it is easy to set up and use."
项目地址:ChicagoBoss/ChicagoBoss 路 GitHub
入门PDF: http://www.evanmiller.org/chicago-boss-tutorial.pdf

Nitrogen

一句话介绍:Nitrogen Web Framework is the fastest way to develop interactive web applications in full-stack Erlang.
看群里面讨论,采用Nitrogen的项目也不在少数,这个项目动态模板方案不是采用ErlyDTL,而是自己有一套解决方案Nitrogen records [链接].网站上的例程和Step by Step教程足够详细,入门应该比较快.
项目地址:Nitrogen - Nitrogen Web Framework for Erlang

Zotontic
一句话介绍:Zotonic is the open source, high speed, real-time web framework and content management system, built with Erlang.
应该说Zotontic和其它框架的差异更多是在业务定位上了,提供了很多CMS直接可用的功能,查看其features列表能够看到详细介绍,注意:"Typically 10 times (and much more) faster than PHP content management systems." [链接]
Zotontic构建在Mochiweb和PostgreSQL之上.
项目地址:http://zotonic.com/

BeepBeep
一句话介绍: BeepBeep is a simple web application framework for Mochiweb inspired by Rails and Merb
BeepBeep 构建在 MochiWeb 和 ErlyDTL (后面会介绍) 基础之上. 沿袭了mochiweb的优良传统一键建站,基于ErlyDTL提供Django 模板的视图展现.
这个项目已经09年之后就没有实质性的更新,最近一次更新是2010年更新了一下README,慎重选择吧.
还有一个项目ErlyWeb同样是

③ web应用程序的上下文路径指的是什么路径举出web配置例子,谢谢

1.在%CATALINA_HOME%\conf\context.xml这个文件中,编辑Context元素属性 例: <Context path="/MyPro" docBase="F:\MyProject\MyPro" reloadable="true"> </Context> path属性代表web应用程序的上下文根路径 docBase属性指定了web应用程序的文档基目录 reloadable属性,如果指定为true,Tomcat服务器在运行时,会监视WEB-INF/classes和WEB-INF/lib目录下的类的改变,如果发现有类被更新,Tomcat服务器将自动重新加载该web应用程序。 2..%CATALINA_HOME%\conf\[enginename]\[hostname]xxx.xml,enginename是在server.xml文件中设置的<Engine>元素的name属性的值,[hostname]是在server.xml文件中设置的<Host>元素的name属性的值 这个xxx.xml文件的文件名“xxx”被作为web应用程序的上下文根路径,而不管你在xxx.xml文件中的<Context>元素的path属性是什么

④ web应用程序的上下文路径指的是什么路径举出web配置例子,谢谢

比如说一个web工程目录为:D:\app\website,在tomcat中配置的contextpath为/sun,则一般在浏览器中输入地址http://localhost:8080/sun就可以访问该站点,那么在java中使用 request.getContextPath() 将会得到contextPath即:/sun

⑤ 什么是web啊

WEB

名词:

  • 蜘蛛网;蛛网状东西,网状组织;【纺织;印染】棉[毛]网;〔the W-〕

  • 【计算机】万维网(= World Wide Web)。

  • (一匹)布,织物。

  • 编织品,捏造的东西;做成的圈套。

  • (水鸟的)蹼,掌皮;羽瓣。

  • 一大卷[筒]印刷用纸。

  • 【机械工程】连结板;金属薄片[薄条];【建筑】工字梁腹(部);圆拱;【解剖学】膜。

短语和例子

  • a web of railroads 铁路网。

  • a web of lies 一大片编造的谎话。

  • a web of life [destiny] 命运。

  • the web of a saw 锯身。

  • the web of a sword 刀身。

  • a twist web 【机械工程】麻花钻心。

近年最用的,多指为:

全球资讯网(英语:World Wide Web),亦作“WWW”、“Web”,是一个由许多互相连结的超文字组成的系统,通过网际网路存取。英国科学家提姆·柏内兹-李于1989年发明了全球资讯网。1990年他在瑞士CERN的工作期间撰写了第一个网页浏览器。网页浏览器于1991年在CERN对外发表,1991年1月最先发展到其他研究机构并且在1991年8月在网际网路上向公众公布。

全球资讯网并不等同网际网路,全球资讯网只是网际网路所能提供的服务其中之一,是靠着网际网路运行的一项服务。

⑥ 什么是web服务器,举个例子

用来储存网页文件的服务器,举例那就只能说,你看到的网页都是由网页服务器支援的

⑦ Web探索之旅 | 第一部分:什么是Web

什么是 Web 呢? 这个问题不容易回答。

Web 这个英语单词有好几个意思:“网,蜘蛛网,网状物;万维网;织物;圈套”。

我们也经常用到它的合成词,例如 Webpage(网页。是 Web 和 page(page 表示“页面”)的合成),Website(网站。是 Web 和 site(site 表示“站点”)的合成)。

一般在 IT (Information Technology 的缩写,表示“信息技术”)领域,Web 被翻译成“网络”,或者很多时候我们不翻译,就直接用 Web 这个词。因为 network(或简称 net)这个单词也有“网络”的意思。但是 Web 和 network 是有区别的。

那么到底什么是 Web 呢?

在 IT 领域, Web 是 World Wide Web(万维网,一般简写为 WWW)的简称。World 表示“世界”,Wide 表示“广阔的”,Web就是“网”。

WWW 可以让 Web 客户端(例如我们常用的浏览器,如 Chrome,Firefox,等等)访问 Web 服务器上的页面。 是一个由许多互相链接的超文本组成的系统,通过互联网访问。

在这个系统中,每个有用的事物,称为一样“资源”,并且由一个 URI (Uniform Resource Identifier 的缩写,表示“统一资源标识符”)标识。

这些资源通过 HTTP (HyperText Transfer Protocol 的缩写,表示“超文本传输协议”。我们之后的课程会介绍 HTTP 协议并实践)协议传送给用户,用户通过点击链接来获得资源。

Web 是比较偏应用层的概念。可以说 network 是我们最宽泛的“网络”概念的底层基础,而 Web 则是指顶层的应用,甚至包含了人与人利用 Web 进行的交互。

用什么来形容 Web 比较好呢?

有的人可能会想到 surfing(“冲浪”),或者说 Surfing the Internet / Web(互联网 / 网际冲浪)。因为我们在网站上浏览网页时就有点像冲浪一般“一页页”地翻过。

不禁想起了腾格尔演唱的电视剧《康熙王朝》的片尾曲《大男人》:“一生有一种大海的气魄,岁月一页页无情翻过”。我们也经常“无情”地快速翻过我们的网页,甚至我们的人生。

但是说到 Web,我们还是用另一个意象来表示吧。

我选择用“蜘蛛网”来形象地表现 Web:

为什么用蜘蛛网(希望对蜘蛛恐惧的朋友见谅)来形象地表示呢?

因为 Web 在英语中有“蜘蛛网”的意思,而且蜘蛛网的每个连接的结点,正好可以表示全球这个大 Web 中的每一台电脑。只要上了网,这些电脑都在 Web 上互联。

这一节中,我们首先要来区分一下 Internet 和 Web 这两个时常容易被混淆的概念。

我们必须对你说:“Internet 不等于 Web !”

Web 是 Internet 的一部分,虽然 Web 是 Internet 中最被人熟知的那一部分服务。

如上图所见,我们可以看到,Internet 是由 Web 和其他服务(service)所组成。

Internet 表示“互联网”,又称网际网路,或音译因特网、英特网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

这种将计算机网络互相联接在一起的方法可称作“网络互联”,在这基础上发展出覆盖全世界的全球性互联网络,称为互联网,就是互相连接在一起的网络结构。

除了 Web,Internet 还包含其他服务:

今天,人们有时候比较容易混淆 Internet 和 Web 的概念,是因为现在越来越多的 Internet 的服务(e-mail,FTP,newsgroups,等)都通过 Web 这个接口来呈现给用户,这些服务中的很多都已经整合到 Web 中。

举一些例子:

其他还有,就不一一列举了。

说了 Internet 和 Web 之间的区别,也介绍了一些常见的 Internet 服务。我们再来看一个很流行的概念:Cloud(“云”),相信你或多或少听说过“云计算”,“大数据”之类名词。

说到 Cloud 的定义,至今没有太统一的说法。各方解释都不太一样。

我们可以简单地把 Cloud 定义为:通过 Web 这个“接口”获取到一些 Internet 服务(service),或者把这些服务本身定义为“云”。

可以用下图来形象地表示:

上图中,用云朵来表示的那些各式各样的 service(服务),就是我们用户要通过 Web 这个接口来获取到的。这些服务有:

当然了,我们一般所说的云或云计算则更复杂,有几种类型。例如:

如果你有兴趣,可以进一步去了解。

下面我们来聊聊 Web 的历史吧,看看这么有意思的 Web 是如何诞生及发展的。

我们简单来介绍一下:

上图为美国当时全国范围的 ARPAnet。

那么谁发明了 Web 呢?

Tim Berbers Lee(蒂姆·伯纳斯·李),就是下面这位大牛,看上去蛮和蔼的。他在 1991 年(也有说是 1989 年...)提出了 Web(World Wide Web 的缩写,或 WWW)。

这张照片其实摄于 1994 年的欧洲核子研究组织(CERN)。

在他之前,没有浏览器,没有 WWW,网络世界一片空白。如果当初为谋取个人利益,蒂姆将自己的 WWW 设想乃至后来的万维网申请知识产权和专利,如今的互联网世界是不可能发展得这么快的。

蒂姆假想说:“那样的话,世界上至少会有 16 种不同的 Web,有 CERN 网,有微软网,有苹果网,等等”。

1994 年,Tim Berners Lee 创立了着名的 W3C(World Wide Web Consortium 的缩写,表示“万维网联盟”)组织,因为他觉得 Web 发展迅猛,需要有一个类似基金会或委员会的机构来规范,以达成全球统一标准。

W3C 后来发明了一系列的语言和规范:HTML,CSS,XML 等。现在的 HTML5 也是他们规定的。

W3C 最重要的工作是发展 Web 规范(被称为 recommendations,表示“推荐”),这些规范描述了 Web 的通信协议(比如 HTML 和 XHTML)和其他的构建模块。

W3C 的官方网站是 http://www.w3.org 。

你如果想学各种技术(HTML,CSS,XML,Javascript,PHP,等等),可以去 W3C 学院: http://www.w3schools.com 。

对应中文网站是: http://www.w3school.com.cn 。

今天的课就到这里,一起加油吧!

下一课: Web探索之旅 | 第二部分第一课:客户端语言

热爱生活,喜欢游泳,略懂烹饪。
人生格言:“向着标杆直跑”

⑧ 第五章: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就用于此类重定向。

⑨ c#webservice的简单示例

是webservice 就概念上来说 可能比较复杂 不过我们可以有个宏观的了解 webservice就是个对外的接口 里面有 函数可供外部客户调用(注意 里面同样有客户不可调用的函数) 假若我们是服务端 我们写好了个webservice 然后把它给了客户(同时我们给了他们调用规则) 客户就可以在从服务端获取信息时处于一个相对透明的状态 即使客户不了解(也不需要)其过程 他们只获取数据

webservice传递的数据只能是序列化的数据 典型的就是xml数据

下面以一个简单例子为例

(一)新建——-项目 -Visual C# web ASP NET Web 服务应用程序 命名为TestWebService

此时的目录结构如图所示

我们修改Service a *** x的名字为 MyService a *** x

同时修改文件中的class名

public class MyService: System Web Services WebService

{

[WebMethod]

public string HelloWorld()

{

return Hello World ;

}

}

同时修改文件MyService a *** x(右击 查看标记 如果在vs环境下双击打开的是 cs文件)

<%@ WebService Language= C# CodeBehind= MyService a *** x cs Class= TestWebService Service %>改为

<%@ WebService Language= C# CodeBehind= MyService a *** x cs Class= TestWebService MyService %>

(二)重新生成项目 右击MyService a *** x 选择 在浏览器中查看 即可检查本项目是否有语法错误

(三)在MyService a *** x添加指定方法

using System;

using System Data;

using System Web;

using System Collections;

using System Web Services;

using System Web Services Protocols;

using System ComponentModel;

namespace TestWebService

{

/// <summary>

/// Service 的摘要说明

/// </summary>

[WebService(Namespace = )]

[WebServiceBinding(ConformsTo = WsiProfiles BasicProfile _ )]

[ToolboxItem(false)]

public class MyService: System Web Services WebService

{

[WebMethod]//必须要有的 为了说明 其下是一个方法 每一个方法前面都需要有

public string getName()

{

return Hope ;

}

[WebMethod]

public string getAge()

{

return ;

}

}

}

重新生成项目 右击MyService a *** x 选择 在浏览器中查看 效果如下

(四)发布在外网上

这里我是在本机上测试的 所以没有必要发布 如果要发布到外网上 我们可以通过

把bin文件下的文件以及与bin(包括 dll和 pdb文件)同级目录的a *** x文件上传到外网即可

(五)使用web service接口

新建一个普通的windows应用程序 右击 添加web引用

如图

改一下web引用名为 HopeWebService如图

此时 我们可以使用webservice中的方法了 通过HopeWebService我们可以访问其中的两个方法

(六)使用方法

HopeWebService MyService obj = new HopeWebService MyService()

MessageBox Show( name is: + obj getName()+ ;age is: + obj getAge())

lishixin/Article/program/net/201311/11171

⑩ Web主要指的什么举点例子看看

Web 非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能。在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。同时,Web是非常易于导航的,只需要从一个连接跳到另一个连接,就可以在各页各站点之间进行浏览了。