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,即通知客户端资源没有改变,你可以使用自己的缓存。
Javaweb学习笔记——(八)——————常见系统体系结构,Tomcat,以及web的内部外部应用,http协议概述的更多相关文章
- JavaWeb学习笔记二 Http协议和Tomcat服务器
Http协议 HTTP,超文本传输协议(HyperText Transfer Protocol),是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的是为 ...
- JAVA WEB学习笔记(三):简单的基于Tomcat的Web页面
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- JavaWeb学习笔记八 监听器
监听器Listener jservlet规范包括三个技术点:servlet :listener :filter:监听器就是监听某个对象的的状态变化的组件.监听器的相关概念事件源: 被监听的对象(三个域 ...
- Spring Boot学习笔记(八)使用jar和war方式打包并在外部Tomcat中部署运行
使用war包的方式发布到外部Tomcat中去 首先修改pom.xml中的配置,使打包方式设置为war包的形式 然后 maven update project 更新下项目 Application入口文件 ...
- JavaWeb学习笔记总结 目录篇
JavaWeb学习笔记一: XML解析 JavaWeb学习笔记二 Http协议和Tomcat服务器 JavaWeb学习笔记三 Servlet JavaWeb学习笔记四 request&resp ...
- javaweb学习笔记整理补课
javaweb学习笔记整理补课 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端 ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Go语言学习笔记八: 数组
Go语言学习笔记八: 数组 数组地球人都知道.所以只说说Go语言的特殊(奇葩)写法. 我一直在想一个人参与了两种语言的设计,但是最后两种语言的语法差异这么大.这是自己否定自己么,为什么不与之前统一一下 ...
随机推荐
- js簡介
js是腳本語言: js適用於服務器.pc.平板電腦.智能手機: js是最流行的編程語言,使用與html和前段: js是一種輕量級編程語言: js能被所有的現代瀏覽器執行: js和java是完全不同的編 ...
- Luogu4238 【模板】多项式求逆(NTT)
http://blog.miskcoo.com/2015/05/polynomial-inverse 好神啊! B(x)=B'(x)·(2-A(x)B'(x)) 注意ntt的时候防止项数溢出,即将多项 ...
- ajax 调用 java webapi 多个参数(二)
第一种方法:http://blog.csdn.net/hanjun0612/article/details/74436273 附上另一种解决方法. 这个方法主要针对 嵌套模型(模型中含有模型)的ap ...
- hdu 6406 Taotao Picks Apples (2018 Multi-University Training Contest 8 1010)(二分,前缀和)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=6406 思路: 暴力,预处理三个前缀和:[1,n]桃子会被摘掉,1到当前点的最大值,1到当前点被摘掉的桃子的 ...
- MT【240】6*6放黑白子
$6*6$的方格中放三个完全相同的黑子和三个完全相同的白子,要求每行每列都有一个棋子,且每一格只有一个棋子.问有多少不同放法? 解:$\dfrac{36*25*16*9*4*1}{3!*3!}=144 ...
- 【AtCoder010】A - Addition(奇偶)
AtCoder Grand Contest 010 A题 题目链接 题意 n个数,每次取两个奇偶性相同的数用他们的和代替他们,问最后能否只剩下一个数. 题解 因为奇偶相同的两个数之和一定是偶数,所以Y ...
- 修改 wordpress 后台管理员登录地址
拷贝根目录下的 wp-login.php文件命名为wp-login.php.backup,把原文件重命名为managewp.phpsed -i "s/wp-login.php/managew ...
- 【Luogu4630】【APIO2018】 Duathlon 铁人两项 (圆方树)
Description 给你一张\(~n~\)个点\(~m~\)条边的无向图,求有多少个三元组\(~(x, ~y, ~z)~\)满足存在一条从\(~x~\)到\(~z~\)并且经过\(~y~\)的 ...
- LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...
- 【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划)
[BZOJ2246][SDOI2011]迷宫探险(搜索,动态规划) 题面 BZOJ 洛谷 题解 乍一看似乎是可以求出每个东西是陷阱的概率,然而会发现前面走过的陷阱是不是陷阱实际上是会对当前状态产生影响 ...