Javaweb学习笔记——(八)——————常见系统体系结构,Tomcat,以及web的内部外部应用,http协议概述



·软件系统体系结构:
1.常见软件系统体系结构B/S、C/S
C/S
1.C/S结构即客户端/服务器(Client/Server),列如QQ;
2.需要编写服务器端程序,以及客户端程序,列如我们安装的就是QQ的客户端程序;
3.缺点:软件更新时需要同时更新客户端和服务端两端,比较麻烦
4.优点:安全性比较好。


B/S
1.B/S结构即浏览器/服务器(Browser/Server)
2.优点:只需要编写服务器端程序;
3.缺点:安全性较差


2.WEB资源
2.1html:静态资源(浏览器可以看的懂,可以有变量)
2.2jsp/Servlet:动态资源(需要先转换成html,在给浏览器看)
当然除了Javaweb程序,还有其他web程序,列如:ASP,PHP等。
2.3访问web资源:
打开浏览器,输入URL:
协议名://域名/路径,列如:http://www.baidu.com/index.html


3.web服务器:
web服务器的左右是接受客户端的请求,给客户端作出相应。
对于javaweb程序而已,还需要有JSP/Servlet容器,JSP/Servlet容器的基本功能是把动态资源转成静态资源,当然JSP/Servlet容器不只这些功能,在后期会一点点接触,
我们需要使用的是web服务器和JSP/Servlet容器,通常这两者会集于一身。
列出对Javaweb服务器:(2014年数据)


1.Tomcat(Apache):当前应用最广的javaweb服务器;
2.JBoss(Redhat 红帽):支持JavaEE,应用比较广;EJB容器
3.GlassFish(Orcle):oracle开发Javaweb服务器,应用不是很广;
4.Resin(Caucho):支持JavaEE,应用越来越广;
5.Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
6.websphere(IBM):要钱的!支持JavaEE,适合大型项目;



1.Tomcat概述:
Tomcat服务器有Apache提供,开源免费。由于sun和其他公司参与到了Tomcat的开发中,所以最新的JSP/Servlet规范总是能在Tomcat中体现出来。在其中:Tomcat7支持Servlet3.0,而Tomcat6只支持Servlet2.0。
2.安装、启动、配置Tomcat
略,(过分简单)


2.1Tomcat目录结构:
安装版tomcat的安装过程(so easy)
把解压版Tomcat解压到一个没有中文,没有空格的路径中即可,建议路径不要太深,因为我们需要经常进入Tomcat安装目录。列如:d:\java\apache-tomcat-xxxx


2.2启动和关闭tomcat1.
在启动tomcat2.之前,我们必须要配置环境变量
1.JAVA_HOME:必须先配置JAVA_HOME,因为tomcat启动需要使用jdk
2.CATALANA_HOME:如果是安装版,d:\java\apache-tomcat-xxxx。
那么还需要配置这个变量,这个变量用来指定tomcat的安装路径,列入:d:\java\apache-tomcat-xxxx。
3.启动:进入%CATALANA_HOME%\bin目录,找到startup.bat,双击即可。
4.关闭:进入%CATALANA_HOME%\bin目录,找到shutdown.bat,双击即可:
注意:对于利用集成环境来编写javaweb的代码的话,通常都需要配置tomcat,配置之后的集成环境,通常可以一键启动,一键关闭。


start.bat会地哦啊用catalina.bat,而setclasspath.bat,setclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前,吧JAVA_HOME配置正确;


启动问题:
点击startup.bat后窗口一闪即消失:检查JAVA_HOME环境配置是否正确:


2.3访问服务器:http://localhsot:8080/index.jsp
因为服务器在本机上,所以主机名为localhost,表示本机tomcat的默认端口为8080
index.jsp为主页


2.4tomcat目录结构:
1.bin:二进制可执行文件,列如startup.bat和shutdown.bat
2.conf:配置文件,列如:server.xml、context.xml、web.xml、tomcatusers.xml
3.lib:tomcat所需jar包
4.logs:日志文件
5.temp:存放费tomcat运行时产生的临时文件,当tomcat关闭后,这个目录中的文件可以删除
6.webapps:这个目录下的每一个文件夹对应一个javaweb应用程序
7.work:webapps下的应用程序在运行时会自动生成文件,就在work目录下。work目录删除了也没问题,但是再次运行应用程序还要再生成work目录和文件。




web应用:
创建Javaweb目录:hello
*在webapps目录下创建一个hell目录,这样hello目录就是项目目录了;
*在hello目录创建WEB-INF
*在WEB-INF下创建web.xml
*在WEB-INF下创建classes目录
*在WEB-INF下创建lib目录
*在hello目录下创建index.html


在web.xml文件中添加如下内容:(web.xml文件中内容可以去其他项目中借)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
  在index.html中添加如下内容:
<html>
  <head><title>index.html</title></head>
  <body>
    <h1>hello主页</h1>
  </body>
</html>


  启动tomcat,打开客户端访问http://localhost:8080/hello/index.html




配置外部应用:
外部应用就是把应用程序不放到Tomcat服务器的webapps目录下,而是放到工程目录下。


1.在conf/server.xml下配置指定外部应用的路径:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="DemoPerject" docBase="D:/workperject"/>
</Host>


*在<Host>元素下添加<Context>元素,path为URL访问路径,docBase为外部应用的目录
*在浏览器地址栏中访问: http://localhost:8080/DemoPerject/index.html

2.在conf/catalana/localhost下添加配置文件,指定外部应用路径
*在conf/catalaa/localhost目录下创建DemoPerject.xml文件,其中DemoPerject就是URL访问路径
*在DemoPerject.xml文件中添加:<Context docBase="D:/workperject" />,docBase指定外部应用的目录。


3.缺省web应用
*在webapps目录下有一个ROOT目录,他是缺省web应用,访问这个应用的路径:http://localhost:8080/index.jsp
*如果把web应用的内部放到webapps/ROOT下,访问URL路径中不用给出应用名称。


4.配置虚拟主机:
希望通过:http://www.changeyd.com来访问web应用。
*这需要把域名http://www.changeyd.com映射成IP地址:127.0.01
*需要把tomcat端口号修改成80
*需要把server.xml中配置主机,并指定主机的应用目录
*在应用目录中添加名为ROOT的web应用。


(1)找到C:\WINDOWS\system32\drrvers\etc\hosts文件,添加127.0.0.1  http://www.changeyd.com
(2)在conf/server.xml中修改端口为80
(3)在conf/server.xml中添加<Host>元素
<Host name="wwww.changeyd.com" appBase="D:/myapps" unpackWARs="true" autoDeploy="true">
</Host>
*name:指定该主机域名为www.changeyd.com
*appBase:指定该主机的应用目录为F:/myapps
(4)在D:/myapps下创建名为ROOT的web应用


访问:http://www.changeyd.com/index.html
其中wwww.changeyd.com会在本机中会被解析为127.0.0.1,但是在其他的电脑访问无效




使用Myeclipse创建web项目
1.MyEclipse指定Tomcat
2.MyEclipse创建web项目
3.MyEclipse发布web项目到Tomcat下
4.MyEclipse启动关闭Tomcat
5.MyEclipse对已经发布的项目的修改会对Tomcat下项目的进行修改


MyEclipse是javaweb应用的开发环境,而不是运行环境,运行还是在Tomcat下运行
使用MyEclipse大war包,把war包发布到Tomcat下。




Tomcat管理页面:





HTTP协议:
1.安装HttpWatch
2.http协议:
*即超文本传输协议。它规定了浏览器与服务器之间的通讯规则。
*http是基于请求/响应模式的,所以分为请求协议和响应协议


请求
:请求内容就是客户端发送给服务器的数据:
1.请求格式:
*请求首行
*请求头
*空行
*请求体(或称为请求正文)


2.请求方法:
*常见请求方法有GET和POST
*在浏览器地址栏中发送请求,以及点击超链接都是GET请求
*提交表单可以发送GET请求,以及POST请求
GET请求没有请求体,但是空行是存在的
POST请求是存在请求体的


3.使用HttpWatch获取请求信息
*请求行:请求方法 请求路径 请求协议及版本,列如:GET /hello/index.jsp HTTP/1.1
*请求头:请求头就是一些键值,格式为:头:值,列如:Host:localhost
*空行:就是一个空行,用来与请求体分隔
*请求体:GET方法没有请求体,POST才有请求体,请求体内容为:参数名=参数值&参数名=参数值,其中参数值为中文,会使用URL编码。


4.常见的请求头:
*Host:请求的服务器的主机名
*User-Agent:客户端浏览器与操作系统相关信息
*Accept-Encoding:客户端支持的数据压缩格式
*Connection:客户端支持的连接方式
*Cookie:客户端发送给服务器的“小甜点”,它服务器寄存在客户端的。如果当前访问的服务器没有在客户端寄存东西,那么就不会存在它。
*Content-Length:请求体长度
*Referer:当前发出请求的地址,列如在浏览器地址栏直接访问服务器,那么没有这个请求头。如果是在www.baidu.com页面上点击链接访问的服务器,那么这个头的值就是www.baidu.com
>作用1:统计来源
>作用2:防盗链
*Content-type:如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码。




响应
:响应就是服务器发送给客户端的数据:


1.响应格式:
*响应首行
*响应头
*空行
*响应体(或者称为响应正文)


2.状态码:
响应首行的结构:协议及版本 状态码 状态码说明,列如:HTTP/1.1 200 OK


*200:请求成功
*302:请求重定向
*304:请求资源没有改变
*404:请求资源不存在,属性客户端错误
*500:服务器内部错误


3.响应头:
*Content-Type:响应正文的MIME类型,列如image/jpeg表示响应正文为jpg图片,列如text/html;charset=utf-8表示响应正文为html,并且编码为utf-8编码。浏览器会通过这一个信息来显示响应数据
*Content-Lenth:响应正文的长度
*Set-Cookie:服务器寄存在客户端的“小甜点”,当客户端再次访问服务器时会把这个“小甜点”还给服务器
*Date:响应时间,可能会有8小时的误差,因为中国的时区问题


通知客户端浏览器不要缓存页面的响应头:
*Expires:-1
*Cache-Control:no-cache
*Pragme:no-cache


自动刷新响应头,浏览器会在3秒钟后自动重定向到百度的主页
*Refresh:3;url=http://www.baidu.com


4.状态码304
相关头信息
*Last-Modified:响应头,表示当前资源的最后修改时间;
*If-Modified-Since:请求头,表示缓存的资源最后修改时间;


状态码304:表示访问的资源没有改变


1.客户端首次访问服务器的静态资源index.html,服务器会把index.html响应给客户端,而且还会添加一个名为Last-Modified的响应头,它说明了当前index.html的最后修改时间
2.客户端收到响应后,会把index.html缓存到客户端上,而且还会把Last-Modified缓存起来。
3.客户端第二次请求index.html时,会添加名为If-Modified-Since的请求头,它的值是上次服务器响应头Last-Modified,服务器获取客户端保存的最后修改时间,以及当前资源的最后修改时间进行比较,如果相同,说明index.html没有改动过,那么服务器不会发送index.html,而是响应状态码304,即通知客户端资源没有改变,你可以使用自己的缓存。






猜你喜欢

转载自blog.csdn.net/qq_40223688/article/details/79885243