·软件系统体系结构:
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,即通知客户端资源没有改变,你可以使用自己的缓存。

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

  1. JavaWeb学习笔记二 Http协议和Tomcat服务器

    Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...

  2. JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  3. JavaWeb学习笔记八 监听器

    监听器Listener jservlet规范包括三个技术点:servlet :listener :filter:监听器就是监听某个对象的的状态变化的组件.监听器的相关概念事件源: 被监听的对象(三个域 ...

  4. Spring Boot学习笔记(八)使用jar和war方式打包并在外部Tomcat中部署运行

    使用war包的方式发布到外部Tomcat中去 首先修改pom.xml中的配置,使打包方式设置为war包的形式 然后 maven update project 更新下项目 Application入口文件 ...

  5. JavaWeb学习笔记总结 目录篇

    JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...

  6. javaweb学习笔记整理补课

    javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...

  7. java之jvm学习笔记二(类装载器的体系结构)

    java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...

  8. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  9. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  10. Go语言学习笔记八: 数组

    Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...

随机推荐

  1. Python学习总结3:元组、列表的操作汇总

    参考博客:http://www.cnblogs.com/QG-whz/p/4782809.html 1. 是否可变 元组:用()或tuple函数定义,不可变(元素的值以及整个元组): 列表:用 [] ...

  2. 清理无用的CSS样式的几个工具(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  3. NodeJs菜鸟初始

    我们先来了解下什么是nodejs 一.nodejs具有事件驱动.异步编程的特点. 事件驱动这个词并不陌生,在某些传统语言的网络编程中,我们会用到回调函数,比如当socket资源达到某种状态时,注册的回 ...

  4. For和While在C和MATLAB中的区别——MATLAB的大坑

    For和while是常见的循环关键字,在许多语言中都是通用的.但是想必不是所有人,都被其中的区别困扰过,尤其是MATLAB“程序员”. x=[,,,,,,]; i=; while i<=leng ...

  5. windows2003 64位 iis6.0 运行32位web应用程序

    适用于已安装.NET4.0的windows 2003 64位机器. 系统要求: windows 2003 sp1 步骤: 1. 打开命令行,转到目录: %systemdrive%\Inetpub\Ad ...

  6. 修改weblogic11g的JDK版本

    1:进入Weblogic域文件夹下面 [wzh@localhost bin]$ pwd/app/wzh/oracle/middleware/user_projects/domains/base_dom ...

  7. SQL判断一个数是整数还是小数

    DECLARE @number1 AS numeric(10,2),@number2 AS numeric(10,2) SELECT @number1=10.00,@number2=10.2 SELE ...

  8. sqlbulkcopy 批量插入数据

    批量插入 Datetable数据  通过sqlbulkcopy 插入1百万条数据 用时 10秒钟 (有兴趣的小伙伴可以去测试) /// <summary> /// /// </sum ...

  9. 使用kubebapps 管理helm 仓库已经应用使用Monocular专门提供helm 仓库查找

    Monocular 从1.0 开始专注于helm 的UI展示,对于部署以及维护已经去掉了,官方也提供了相关的说明以及 推荐了几个可选的部署工具,从使用以及架构上来说kubeapps 就是Monocul ...

  10. Netty入门(五)ChanneHandler

    本节主要讨论了 Netty 的数据处理组件 ChannelHandler. 一.Channel 生命周期 Channel 有个简单但强大的状态模型,下面是 Channel 的四个状态: Channel ...