软件体系结构
-
C/S:Client/Servlet,例如QQ就是CS结构
需要编写服务器端程序和客户端程序。
缺点:更新需要两端,总要求客户下载新的客户端程序
优点:安全性比较好
(通俗点说,就是为一些功能量身定制) -
B/S:Browser/Server
缺点:安全性较差
优点:只需要编写服务器端程序
2、 Web资源
- 静态资源:html、css、javascript、图片等;
(浏览器直接能看懂)- 动态资源:javaweb动态资源有jsp/servlet,其他web程序动态资源有asp、php等。动态资源有变量。
(需要先转换成静态资源,再让浏览器看)
静态资源和静态资源区别
- 客户端访问服务器静态资源,服务器直接响应;
- 客户端访问服务器动态资源,服务器需要先把动态资源转换成静态资源,再响应。
3、客户端通过浏览器访问服务器
http://主机名:端口号/路径,例如:http://www.itcast.cn:80/index.html
4、Web服务器
http://www.baidu.com
域名:www.baidu.com会被解析成IP地址,解析成的IP地址就是服务器
服务器是什么?就是接受请求,帮助解决请求
那么Web服务器有哪些
- Tomcat(Apache):当前应用最广的JavaWeb服务器,支持servlet规则,不支持JavaEE规范;
- JBoss(Redhat红帽):支持JavaEE规则;
- GlassFish(Orcale):支持servlet规则,应用不是很广;
- Resin(Caucho):支持JavaEE规则,应用越来越广;
- Weblogic(Orcale):要钱的!支持JavaEE规则,适合大型项目;
- Websphere(IBM):要钱的!支持JavaEE规则,适合大型项目;
5、tomcat目录结构
- bin:二进制可执行文件,例如startup.bat和shutdown.bat
- conf:配置文件,例如:server.xml(配置端口号)、context.xml、web.xml、tomcatusers.xml
- lib:tomcat所需jar包
- logs:日志文件
- temp:存放tomcat运行时产生的临时文件,当tomcat关闭后,这个目录中的文件可以删除
- webapps:这个目录下的每个文件夹对应一个JavaWeb应用程序
- work:webapps下的应用程序在运行时会自动生成文件,就在work目录下。work目录删除了也没问题,但再次运行应用程序还要再生成work目录和文件。
6、创建JavaWeb应用
静态网站
- 在webapps目录下创建一个目录,命名不包含中文和空格,这个目录称之为项目目录
- 在项目目录下创建一个html文件
动态网站
- 在webpass目录下创建一个项目目录;
- 在项目目录下创建如下内容:
*在WEB-INF目录下创建web.xml文件
*创建静态或动态页面- 客户端通过浏览器访问服务器
web.xml文件的内容,我们可以去其他项目中借!
(在ROOT下的WEB-INF文件夹下的web.xml中借用)
7、WEB-INF目录下不能被客户端直接访问
8、Eclipse创建JavaWeb项目
eclipse只是写代码的地方,并不是运行代码的地方,运行代码还是tomcat
链接:如何利用eclipse创建一个java web项目?
链接:eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
链接:导入新的javaweb工程出现The superclass “javax.servlet.http.HttpServlet” was not found
这样很不方便,那么如何让tomcat自动将上述文件复制过去,并自动更改为我们自己命名的阅读性更好的文件名(即项目名称)呢?
9、HTTP协议
协议:协议的甲乙双方,就是客户端(浏览器)和服务器!
理解成双方通信的格式!
请求协议(客户端)
响应协议(服务器)
查看查看HTTP请求和响应内容
1、ctrl+shift+I打开开发人员工具
2、查看http请求响应内容
请求协议的格式如下:
请求首行
多个请求头信息;头名称:头值
空行(必须有)
请求体(可以没有)
多个响应头信息;头名称:头值
空格
响应体
响应头对浏览器来说很重要,它说明了响应的真正含义
200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览.器中;
404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
405:
500:请求资源找到了,但服务器内部出现了错误;
302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;(意思就是说,访问的那个地址给服务器一个新的地址,服务器响应新的地址的请求)(两个请求)
304:
当用户第一次请求index.html时,服务器会添加一个名为Last-Modified响应头,这个头说明了index.html的最后修改时间,浏览器会把index.html内容,以及最后响应时间缓存下来。
当用户第二次请求index.html时,在请求中包含一个名为If-Modified-Since请求头,它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,If-Modified-Since请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,我会把缓存的内容直接显示出来。而服务器端会获取If-Modified-Since值,与index.html的当前最后修改时间比对,如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送,浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修改,服务器会响应200。
其他响应头
告诉浏览器不要缓存的响应头:
- Expires: -1
- Cache-Control: no-cache;
- Pragma: no-cache;
自动刷新响应头,浏览器会在3秒之后请求http://www.itcast.cn:
- Refresh: 3;url=http://www.itcast.cn
10、HTML中指定响应头
在HTMl页面中可以使用来指定响应头,
例如在index.html页面中给出:
<meta http-equiv="Refresh" content="3;url=http://www.itcast.cn">
,表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.itcast.cn。