1、javaWeb的概念
JavaWeb 是指,所有通过 Java 语言编写可以通过浏览器访问的程序的总称。JavaWeb 是基于请求和响应来开发的。
-
请求:请求是指客户端给服务器发送数据,叫请求 Request。
-
响应:响应是指服务器给客户端回传数据,叫响应 Response。
-
请求和响应的关系:请求和响应是成对出现的,有请求就有响应。
------
2、Web资源分类
2.1 静态web资源
- 指web页面中供人们浏览的数据始终是不变。在这个过程中用户发送请求,然后服务器接受并找到页面,并将找到的页面返回给用户。
2.2 动态web资源
- 指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。在这个过程中用户发送请求,然后服务器接受并查找数据,最后将数据返回。
3、服务器
- 从物理上来说,服务器就是一台PC机器。通常配置比较高。一般CPU 4核,内存8G以上,硬盘较大(T)
3.1分类
- web服务器:在PC机器上,安装了web服务软件,提供web服务。
- 数据库服务器:在PC机器上,安装了数据库软件(mysql/oracle/sql server),提供了数据存储的服>服务软件。
- 邮件服务器:在PC机器上,安装了收发邮件服务软件,提供了收发邮件的功能d
3.2 web服务器原理
- web服务软件作用:把本地的资源公开给外部访问。
/**
* socket服务器端程序
* 1)把本地资源读取
* 2)发送给不同的客户端
* @author APPle
*
*/
public class SocketServer {
public static void main(String[] args) throws Exception{
//1.创建ServerSocket
ServerSocket server = new ServerSocket(8888);
System.out.println("服务器已经启动....");
while(true){
//2.接收客户端的请求
Socket socket = server.accept();
//3.读取本地的文件
File file = new File("e:/myweb/test.html");
FileInputStream fis = new FileInputStream(file);
//4.构建数据发送通道
OutputStream out = socket.getOutputStream();
//5.开始发送数据
byte[] buf = new byte[1024];
int len = 0;
while( (len=fis.read(buf))!=-1 ){
out.write(buf, 0, len);
}
//6.关闭资源
fis.close();
out.close();
}
}
}
-
图示:
3.3 常用的市面上web服务软件
Tomcat
- 由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器(免费)。开源免费的tomcat用在中小应用。
WebLogic
- 是BEA公司的产品。支持JavaEE规范。收费的。
- 符合javaSE规范:支持 IO流,集合,网络编程,线程技术
- javaEE规范: 支持13种技术。servlet、jsp、ejb、jdbc
WebSphere
- 是IBM公司的产品。支持JavaEE规范。收费的。解决方案
- 一条龙服务:WebSphere -> IBM操作系统(aix)- IBM服务器PC - IBM数据库(DB2)
JBos
- 是Redhat公司的产品。纯 Java 的 EJB 服务器,支持JavaEE规范。linux。软件免费开源的。服务收费的。
GlassFis
- 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款强健的商业服务器,达到产品级质量(应用很少)
Resin
- 是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持,性能也比较优良,resin 自身采用 JAVA 语言开发(收费,应用比较多)。
3.4 Tomcat服务器
1、配置
-
Tomcat官方站点:http://jakarta.apache.org
-
获取Tomcat安装程序包
- tar.gz文件是Linux操作系统下的安装版本
- exe文件是Windows系统下的安装版本
- zip文件是Windows系统下的压缩版本
-
启动
-
图示
-
-
找到%tomcat%/bin/startup.bat,双击,弹出一个窗口停止不动。
-
确认窗口上显示没有任何错误,然后打开浏览器输入:http://localhost:8080 看到一只猫,证明tomcat服务器启动成功
-
另一种:
- 1、打开命令行
- 2、cd 到 你的 Tomcat 的 bin 目录下
- 3、敲入启动命令: catalina run
-
关闭
- 找到%tomcat%/bin/shutdown.bat,双击。
2、tomcat服务器作用
-
tomcat服务器作用:把本地资源公开给外部访问
-
webapps: 把需要公开访问的文件放到该目录部
-
URL
-
URL: 统一资源定位符。用于定位基于http协议的资源。
-
http:// : 协议,http协议执行流程: 在本地找hosts文件,如果找不到,联网找网络运营商的DNS服务器
-
localhost 域名。localhost: 本地域名 ;www.baidu.com: 外地域名
-
8080 定位具体的一个软件。
- tomcat: 8080
- mysql:3306
- oracle: 1521
-
myweb : web应用的根目录。
-
test.html: web资源
-
图示
3、tomcat服务器常见问题
-
闪退
- 原因: 在tomcat服务器启动时(运行startup命令),在本地环境变量中查找一个叫JAVA_HOME的环境变量。(tomcat用java开发,需要用jvm运行)
- 解决办法: 在本地环境变量中添加一个JAVA_HOME
-
端口占用问题
-
原因: tomcat服务器启动所需端口被其他软件所占用
-
解决办法:
- 把占用端口的软件停止掉(进程杀死)
- 改变tomcat服务器启动端口
- 找到%tomcat%/conf/server.xml
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-
-
CATALINA_HOME环境变量
- 原因: tomcat在启动后会通过CATALINA_HOME环境变量加装tomcat的根目录下的文件(例如conf、webapps)
- 解决办法:建议不要设置CATALINA_HOME环境变量
- 注意:安装版的tomcat会自动设置CATALINA_HOME环境变量
-
jdk版本较高,和Tomcat不匹配
-
安装jdk 10 以下的版本
-
Tomcat 服务器和 Servlet 的相关版本
4、Tomcat的站点配置
-
-
站点的配置属性:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host>
- name: 表示站点的名称。访问站点就使用站点名称
- appBase: 表示站点的根目录。用于存放所有web应用。一个站点下可以包括多个web应用。
-
如何在tomcat下配置一个站点:
-
修改%tomcat%/conf/server.xml>
<!--- 配置一个新的站点: www.baidu.com name: 站点的名称 appBase:站点的根目录 --> <Host name="www.baidu.com" appBase="C:\baidu" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host>
-
修改本地域名和ip的映射文件hosts文件,加上 本地IP www.baidu.com
-
启动tomcat,访问测试,在浏览器访问:新站点:http://www.baidu.com:8080/news/index.html,(默认站点: http://localhost:8080)
-
5、目录介绍
目录 | 存放文件 |
---|---|
bin | 专门用来存放 Tomcat 服务器的可执行程序 |
conf | 专门用来存放 Tocmat 服务器的配置文件 |
lib | 专门用来存放 Tomcat 服务器的 jar 包 |
logs | 专门用来存放 Tomcat 服务器运行时输出的日记信息 |
temp | 专门用来存放 Tomcdat 运行时产生的临时数据 |
webapps | 专门用来存放部署的 Web 工程。 |
work | 是 Tomcat 工作时的目录,用来存放 Tomcat 运行时 jsp 翻译为 Servlet 的源码,和 Session 钝化的目录。 |
6、Tomcat体系架构
4、web开发
4.1 软件开发的两种架构
- b/s架构
- (浏览器/服务器架构)就是指数据和程序都在服务器端,客户端通过浏览器访问程序并获取数据。
- 优点:服务器端程序一旦修改,所有客户端访问的都最新的程序,开发人员只管维护服务器就行了,不用管客户端维护的事。
- 缺点:由于客户端都是使用浏览器来访问服务器程序的,数据最终显示在浏览器中,浏览器有多强,数据就能显示成什么样式,数据的显示样式最终由浏览器决定。由于这种特性,所以b/s架构很少用来开发一些对显示有特殊要求的程序,例如游戏。
- (浏览器/服务器架构)就是指数据和程序都在服务器端,客户端通过浏览器访问程序并获取数据。
- c/s架构
- 就是指程序运行在客户机上,数据在服务器上。
- 缺点:程序一旦修改,需要更新所有的客户机程序,客户机多,维护的工作量相当恐怖。
- 优点:由于数据的计算在客户机上,服务器的压力小,并且由于数据的显示也由程序员自己编写gui程序完成,显示不受限制。所以c/s架构适合用于开发像游戏这样的程序。
- 就是指程序运行在客户机上,数据在服务器上。
- 但是,随着网络带宽的不断提升,云计算概念的提出,浏览器只要足够强大,c/s架构立马就会被淘汰,不仅c/s架构会被淘汰,软件最终都会消失、操作系统都可以没有,最终将会是b/s架构的天下,也就是浏览器+搜索引擎的天下。所有现在桌面软件提供的功能,最后都由网站提供,也就是说,将来打开电脑就是一个浏览器,想要什么服务,通过搜索引擎一找,就可以在网上找到相应的服务,用就是了。所以web开发人员是现在最流行的岗位。
4.2 web应用目录结构(规范)
web.xml 文件
- 通过web.xml文件,可以将web应用中的:
- 某个web资源配置为网站首页
- 将servlet程序映射到某个url地址上
- 但凡涉及到对web资源进行配置,都需要通过web.xml文件
- 注意:Web.xml文件必须放在web应用\WEB-INF目录下。
4.3 web应用部署三种方法
1、直接把web应用拷贝到webapps目录下
-
默认web应用:ROOT是默认应用。访问默认应用,不需要web应用名称。
-
默认资源:访问默认资源,不需要web资源名称。在web.xml文件中配置
<!-- 默认资源--> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>test.html</welcome-file> <welcome-file>abc.html</welcome-file> </welcome-file-list>
-
问题
- tomcat软件和web应用绑定在一起。
- 解决办法: 把tomcat软件和web应用分离!!!使用到虚拟web应用(虚拟网站)
2、虚拟网站配置
-
在%tomcat%/conf/server.xml文件中修改:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!--配置虚拟网站 docBase: web应用所在的绝对路径位置。 path: 访问web应用使用的名称。名称可以自定义 --> <Context docBase="C:\projects\myweb" path="/itcast"/> <!-- 如果path为空字符串,那么也不需要名称访问该web应用,而且优先于ROOT应用。--> </Host>
-
问题
- 修改了server.xml核心配置文件,风险比较高。
- 解决办法: 添加配置文件方法配置虚拟网站。
3、添加配置文件方法配置虚拟网站(推荐使用)
-
在%tomcat%/conf/Catalina/localhost目录下,添加abc.xml文件
<?xml version="1.0" encoding="utf-8"?> <!-- 配置虚拟网站 访问web应用名称就是xml的文件名abc --> <Context docBase="C:\projects\myweb"/>
-
context元素常用属性