Web 概念:
表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
-
静态web资源(Static Web):
-
指web页面中供人们浏览的数据始终是不变。
-
静态技术有:HTML;
-
静态资源有:** .html、.htm**。
-
动态web资源(Dynamic Web):
-
指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
-
动态技术有:JSP/Servlet、ASP、PHP等;
-
动态资源有:** .jsp、.asp/.aspx、.php**。
#在Java中,动态web资源开发技术统称为Java Web。 -
Client:客户端
-
Server:服务端
WEB应用程序(Web Application)
WEB应用程序指供浏览器访问的程序,通常也简称为web应用。
- 例如有a.html 、b.html……多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)
一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。
Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。
Static WEB (静态 WEB)
*htm、*html,这些是网页的后缀,如果现在在一个服务器上直接读取这些内容,那么意味着是把这些网页的内容通过网络服务器展现给用户。整个静态WEB操作的过程图如下:
在静态WEB程序中,客户端使用WEB浏览器(IE、FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服务器我现在需要得到哪个页面,所有的请求交给Web Server,之后Web Server根据用户的需要,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过Web Server返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。
静态WEB中存在以下几个缺点:
- 1、Web页面中的内容无法动态更新,所有的用户每时每刻看见的内容和最终效果都是一样的。为了可以让静态的WEB的显示更加好看,可以加入了JavaScript以完成一些页面上的显示特效,但是这些特效都是在客户端上借助于浏览器展现给用户的,所以在服务器上本身并没有任何的变化。
#实现静态WEB客户端动态效果的手段:
-
JavaScript(实际上使用更多)
-
VBScript
-
2、**静态WEB无法连接数据库,无法实现和用户的交互。**使用数据库保存数据是现在大多数系统的选择,因为数据库中可以方便地管理数据,增删改查操作可以使用标准的SQL语句完成。
Dynamic WEB (动态 WEB)
所谓的动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。整个动态WEB操作的过程图如下:
动态WEB中,程序依然使用Client端和Server端,Client端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(WEB伺服器插件)来处理,此插件用于判断是请求的是静态资源(.htm或者是.htm)还是动态资源。
如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.htm),则将请求直接转交给WEB Server ,之后WEB Server从文件系统中取出内容,发送回客户端浏览器进行解析执行。
如果WEB Server Plugin发现客户端请求的是动态资源(.jsp、.asp/.aspx、.php),则先将请求转交给WEB Container(Web 容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。
动态WEB的实现手段现时非常多,较为常见的有以下几种:
- Microsoft ASP、ASP.NET
- PHP
- JAVA Servlet/JSP
Servlet/JSP介绍
- 这是SUN公司(SUN现在已经被Oracle公司收购)主推的B/S架构的实现语言,是基于JAVA语言发展起来的,因为JAVA语言足够简单,而且很干净。
- Servlet/JSP技术的性能也是非常高的,不受平台的限制,各个平台基本上都可以使用。而且在运行中是使用多线程的处理方式,所以性能非常高。
- SUN公司最早推出的WEB技术推出的是Servlet程序,Servlet程序本身使用的时候有一些问题,所有的程序是采用JAVA代码+HTML的方式编写的,即,要使用JAVA输出语句,一行一行地输出所有的HTML代码,之后,SUN公司受到了ASP的启发,发展出了JSP(Java Server Page),JSP某些代码的编写效果与ASP是非常相似的。这样可以很方便地使一些ASP程序员转向JSP的学习,加大市场的竞争力度。
B/S架构 (B/S Architecture) 是什么?
- 随着Internet和WWW的流行,以往的主机/终端和C/S都无法满足当前的全球网络开放、互连、信息随处可见和信息共享的新要求,于是就出现了B/S型模式,即Broser/Server结构。
- 它是C/S架构的一种改进,可以说属于三层C/S架构。主要是利用了不断成熟的WWW浏览器技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。
- 更详细介绍:https://blog.csdn.net/zhengqijun_/article/details/53056624
Web Server (Web 伺服器)
- 是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。
- 服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。
- Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
- Web服务器可以解析HTTP协议。
- 常见WEB Server如下:WebLogic/WebSphere/Tomcat/IIS
疑问:学习web开发,为什么必须要先装一个WEB Server?
在本地计算机上随便创建一个web页面,用户是无法访问到的,但是如果启动tomcat服务器,把web页面放在tomcat服务器中,用户就可以访问了。这说明什么问题?
- 1、不管什么web资源,想被远程计算机访问,都必须有一个与之对应的网络通信程序,当用户来访问时,这个网络通信程序读取web资源数据,并把数据发送给来访者。
- 2、WEB服务器就是这样一个程序,它用于完成底层网络通迅。使用这些服务器,We应用的开发者只需要关注web资源怎么编写,而不需要关心资源如何发送到客户端手中,从而极大的减轻了开发者的开发工作量。
Web Container (Web 容器)
- 是可以部署多个WEB应用程序的环境。
- 是一种服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以有多个容器。
- Servlet没有main()方法。Servlet受控于另一个Java应用,这个Java应用称为容器。Tomcat就是这样一个容器。如果web服务器应用得到一个指向servlet的请求(而不是其他请求,如请求一个普通的静态HTML),此时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器,要由容器调用servlet的方法,如doPost()或doGet()。
如:
- TOMCAT(小项目、个人用、本地开发)(tomcat严格上说是servlet和jsp容器,但也有人叫它服务器,这没什么不行)
- jetty/apache hpptd(Linux用)
- JBOSS/weblogic(大型项目)
容器能提供什么?
- 通信支持:利用容器提供的方法,你能轻松地让servle与Web服务器对话;
- 生命周期管理:容器控制着servlet的生与死。它会负责加载类、实例和初始化servlet、调用servlet方法,并使servlet实例能够被垃圾回收。
- 多线程支持:容器会自动地为它接收的每个servlet请求创建一个新的java线程。针对客户机的请求,如果servlet已经运行完相应的HTTP服务方法,这个线程就会结束(也就是会死掉)。
- 声明方式实现安全:利用容器,可以使用XML部署描述文件配置(和修改)安全性,而不必将其硬编码写到servlet(或其他)类代码中。
- JSP支持:负责把JSP代码翻译成真正的java。
web应用程序需要部署到web容器中才能运行,两者都必须符合javaEE规范。
Java Web(动态Web资源开发技术)概念:
Java Web,是用Java技术来解决相关web互联网领域的技术总和。
- web包括:web服务器和web客户端两部分。
- Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。
- Java技术对Web领域的发展注入了强大的动力。
Jar包和War包的介绍与区别:
其实jar包和war包都可以看成压缩文件,用解压软件都可以打开。
jar包和war包所存在的原因是:为了项目的部署和发布,通常把项目打包,通常在打包部署的时候,会在里面加上部署的相关信息。这个打包实际上就是把代码和依赖的东西压缩在一起,变成后缀名为.jar和.war的文件,就是我们说的jar包和war包。
但是这个“压缩包”可以被编译器直接使用,把war包放在/tomcat/webapp
下,tomcat服务器在启动的时候可以直接使用这个war包。
通常tomcat的做法是解压、编译里面的代码,所以当文件很多的时候,tomcat的启动会很慢。
区别:
通俗来说,jar包是java打的包,war包可以理解为javaweb打的包。
jar包是用java来写的项目打包来的,里面只有编译后的class和一些部署文件。
而war包里面的东西就更复杂,包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。
什么时候使用jar包或war包?
当项目在没有完全完成的时候,不适合用war文件,因为你的类会由于调试之类的经常改,这样来回删除、创建war文件很不方便,来回修改,来回打包。
最好是你的项目已经完成了,不做修改的时候,就打个war包。这个时候一个war文件就相当于一个web应用程序;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。
打包Java Web应用 (via .War):
在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,执行完之后,就可以得到一个JavaWebDemoProject.war
文件,平时开发完JavaWeb应用后,一般都会将JavaWeb应用打包成一个war包,然后将这个war包放到Tomcat服务器的webapps
目录下,当Tomcat服务器启动时,就会自动将webapps目录下的war包解压。
比如现在将放到放到Tomcat服务器的webapps
目录下,Tomcat服务器启动后会自动Deploying web application
,将这个war文件解压缩,生成一个同名directory:JavaWebDemoProject
参考博客:
http://www.cnblogs.com/xdp-gacl/p/3729033.html
https://blog.csdn.net/zhengqijun_/article/details/53056624
https://www.cnblogs.com/xdp-gacl/p/3744053.html
https://blog.csdn.net/qq_38663729/article/details/78275209