今天开始接触Web开发的一些基础,对于客户端、服务端等有了一些了解,或许在这里首先就要提及B/S和C/S之间的区别:
1.C/S与B/S之间的区别:
***B/S(Browser/Server,浏览器/服务器模式):
由于浏览器是现在最常用的软件,这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用,浏览器通过Web Server同数据库进行数据交互。
***C/S(Client/Server,客户机/服务器):
C/S(Client/Server,客户机/服务器) ,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
2.常见的WEB服务器
WebLogic——支持J2EE规范,收费
apache Tomcat,支持全部的JSP以及Servlet规范
现在一般情况下都使用apache Tomcat,以下是apache Tomcat的体系结构:
3.常见协议端口
http—80
sntp—25(邮件发送协议)
pop3—110(政局协议,用于电子邮件的接收)
ftp —23(文件传输协议,是TCP/IP组中协议之一)
https—443(在很多银行网站或电子邮箱等等安全级别较高的服务中使用得协议,由HTTP + SSL / TLS构成,在HTTP的基础上,服务端和客户端的信息传输都会通过TLS进行加密。)
4.WEB应用(程序)
***WEB应用(程序):供浏览器访问的程序,由多个静态Web资源和动态资源组成
***虚拟目录的映射:WEb开发之后,如果供外界访问,需要把外界应用所在服务交给Web服务器看管处理,整个过程称为~
***WEB资源访问过程原理UML图如下:
如何在服务器配置Context?
**在server.xml中的中配置(虚拟目录的映射)Web应用配置Context(推荐)方式:方法有五种,具体见tomcat的文档Context(适应于不需要多次启动服务器),在Catalina/conf/[enhinename]/[hostname]/目录下任意建一个.xml文件,可以在其中配置Context(例如:),这个可以被认为是Context虚拟目录,可以不用写Path,如果是访问多级目录下的.html,那么访问时可以将.html文件名写成a#b#c(表示a目录下的b下的c的html文件)。
*在6.0版本后不需要配置Context,只需要将文档直接放置在webapp文件夹中。
5.Web应用的组成结构
具体参见如下图:
6.web.xml文件作用
- 为某个资源配置为首页
- 将servlet程序映射到某个url地址上
- 为web应用配置监听器和过滤器
7.如何配置虚拟主机
配置虚拟主机即是在Tomcat中配置一个网站。
- 首先进入server.xml文件中,添加(例如使用Host元素建立一个网站:)”);
- 想要使外部访问,需要添加:;
- (PS:因为自己新建的网站sina如果一下子就能被访问,那么sina新浪官方网站岂不垮啦!因此需要绕过DSN!!)如果想要绕过DNS来访问新浪sina,可以在host文件中配置一个ip地址给ww.sina.com,如:198.168.1.228 www.sina.com ,就可以直接在本地host访问所创建的网站服务器(还可以在多个网站);
- 如果想要直接按enter就可以直接访问,就需要配置为缺省文件,方法如下:
- 接着在mail文件夹中创建一个WEB-INF文件夹,然后新建一个web.xml,头部和尾部内容按照最初的格式,里面添加一个页面的url就完成主页面的设置。
7.在web中常出现的几个问题
*Web资源的访问原理过程(以先建一个sina网站为例)
*如何将Web应用进行打包war
进入cmd命令中——>cd\——>进入所需要打包的目录下(如sina)——>jar查看相关详细信息——>jar -cvf news.war news(sina目录下的news文件—需要打包为war包),最后需要将文件和其war文件包放到服务器上,也就是放在Tomcat的webapp目录下这样也可以通过通过远程软件进行开发。
*如何配置context元素的reloadable元素,让tomcat自动加载更新后的web应用?(推荐不用)
直接在web.xml中的host配置自定义的网站中的Context中添加reloadable=”true”;
///例如:在web.xml中
<Host name="www.google.com" appBase="c:/google">
<Context path="" docBase="c:\google\mail" reloadable="true"/>
</Host>
好处:在WEB—INF中会写很多java程序,如果这些程序会发生改变,那么就会自动加载;
弊端:如果Web应用程序很大,就会造成每次修改就会自动加载,造成服务器总是加载,这样会造成内存溢出或其他严重问题。
8.HTTP协议——超文本传输协议
**HTTP请求行——请求方式
***GET方式:传输的过程中在请求的URL地址后以?形式带上交给服务器的数据,多个数据以&进行分隔,但是在URL后附带的参数是有限制的,其数据容量通常不能超过1K;
***POST方式:可以在实体内容中向服务器发送请求数据,不会将数据参数等内容明文显示出来,并且传输容量无限制。
**HTTP请求头——消息头
Accept:text/html,images/*等;//表示这个接受HTML文件或图片或者所有都支持
Accept-Charset:ISO-8859-1;//用于告诉服务器,客户机支持的数据类型
Accept-Encoding:gzip/compress;//用于告诉服务器,客户机支持的数据压缩格式;
Accept-Language:zh-en//客户机的语言环境
Host:www.sina.com;//客户机想访问的主机名
Id-Modified-Since:Tue,11 jul 2000 9:00:00 GMT;//资源的缓存时间
Referer:http://www.it315.org.index.jsp;//客户机告知服务器从哪个资源访问服务器(防盗链——防止资源被其他服务给占据)。
User-Agent:Mozilia/4.0(compatible;MSIE(版本浏览器) #####5.5;Windows NT(Window系统的内核) 5.0) ;//软件环境
cookie:客户机通过cookie附上数据;//软件环境
Connection:close/Keep-Alive;//客户机关闭或者处于持续连接状态
Date:Tue,11 jul 2000 9:00:00 GMT;//请求日期
**HTTP响应(包括状态行,若干消息头,以及实体内容)
状态行——用于描述服务器对请求的处理结果
格式:HTTP版本号 状态码 原因描述
eg:HTTP/1.1 200 0K(200代表一切所有,200 OK代表一切OK)
**状态码:
100-199:表示成功接收成功,要求客户机继续提交下一次请求才能完成处理过程;
200-299:表示成功接收请求并已完成整个处理过程,常用200;
300-399:表示为完成请求,客户需要进一步细化请求,常见的有302、307、304;
400-499:客户端的请求有错误,客户机所在的资源中没有,常见的错误就是自己url地址写错或者出现其他错误,常用404;
500-599:服务器端出现错误,常用500。
**多个响应头——用于描述服务器的基本信息以及数据的描述(通过头来控制浏览器的行为,例如有些浏览器以下载的形式打开,有的是直接打开)
//eg:
Server:Microsoft-IIS/5.0
Date:Thu,13 Jul 2000 05:46:53 GMT
Content-Length:2291
Content-type:text-html
Cache-control:private
**HTTP请求中常用的响应头
Location://如:http://www.it315.org/index.jsp—配合302状态码使用,用于告知客户找谁;
server:apache Tomcat//告知浏览器服务器的类型;
Content-Encoding://如gzipo(数据压缩格式)
Content-Length://回送的数据长度
Content-type://如text/html或者image/bmp或者image/jpeg—回送数据的类型(具体文件类型请看tomcat的web.xml文件)
Content-Language:zh-un
Last-Modified://当前资源缓存时间
Refresh://如20s—每隔多久刷新一次,还可以在时间后面添加具体网站url,表示每隔多久进入该网站(一般用在需要定时刷新的场景,例如聊天网站、股票网站等)
Content-Disposition://如:attachment;filename,表示浏览器以下载形式打开数。
Transfer-Encoding:如chunked,//表示以块状形式传送—服务器告知它的传送格式
//三个拒绝缓存的语句
ETag://和缓存相关
Expires://服务器告知浏览器回送的资源回送多久时间,其中Expires:0或-1就表示不缓存
Cache-Control:no-cache&&Pragma:no-cache,//控制浏览器不要缓存;
//(那么在网站中对于实时性很高的资源不需要缓存)
**断点下载
***HTTP请求头字段Range:可以实现断点下载,有以下三种格式:
***Range:bytes=1000-2000;//表示传输范围在1000-2000;
***Range:byte=1000-;//表示传输Web资源中第1000个字节以后所有的内容;
***Range byte=1000;//传输最后的1000个字节;
***HTTP响应头字段:
Accept-Ranges:说明web服务器是否支持Range格式,如果支持,则返回Accept-Ranges:bytes,如果不支持,则返回Accept-Ranges:none;
Content-Range:指定了返回的web资源的字节范围。
对于以上的知识还只是刚开始接触,如果以上有哪里错误请指正!