JavaWeb 服务器
介绍
为什么需要?
- Web服务器是一个应用程序(软件),对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是"提供网上信息浏览服务"。
- Web服务器是安装在服务器端的一款软件,将来我们把自己写的Web项目部署到Web服务器软件中,当Web服务器软件启动后,部署在Web服务器软件中的页面就可以直接通过浏览器来访问。
- JavaWeb:指用java技术来解决相关web互联网领域的技术的总称。即使用java语言实现浏览器可以访问的程序内容,称之为Java Web。
- 学习 JavaWeb 开发,需要先安装 JavaWeb 服务软件,然后在 web 服务器中开发相应的 web 资源;
常用的web服务器
- 1)Tomcat
- 官网:Apache Tomcat 8 (8.0.53) - Documentation Index
- 由 Apache 组织提供的一种 Web 服务器,支持Servlet/JSP少量JavaEE规范。
- 它是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器(免费)。
- Tomcat实际是一个Java程序,可以处理来自浏览器的HTTP请求。
- 2)Jboss
- 是一个遵从 JavaEE 规范的、它支持所有的 JavaEE 规范(免费)。
- 3)GlassFish
- 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款商业服务器,达到产品级质量**(应用很少)。**
- 4)Resin
- CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持, 性能也比较优良(收费)。
- 5)WebLogic【很猛】
- 是 Oracle 公司的产品,支持 JavaEE 规范, 而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
使用步骤:
- 准备静态资源
- 下载安装Web服务器软件
- 将静态资源部署到Web服务器上
- 启动Web服务器使用浏览器访问对应的资源。
浏览器访问web服务器文件UML时序图
web 工程发布目录结构
Servlet 规范规定,JavaWeb 应用必须采用固定的目录结构。
- 即每种组件在 JavaWeb 应用中都有固定的存放目录,方便Servlet 容器顺利地找到 JavaWeb 应用的各个组件
以Tomcat为例:
|-- webapps
|-- webapp # 站点根目录
|-- META-INF # META-INF 目录
| `-- MANIFEST.MF # 配置清单文件
|-- WEB-INF # 一个受服务器保护的目录,浏览器无法直接访问到该目录的内容
| |-- classes # class文件目录
| | |-- *.class # 程序需要的 class 文件
| | `-- *.xml # 程序需要的 xml 文件
| |-- lib # 库文件夹
| | `-- *.jar # 程序需要的 jar 包
| `-- web.xml # Web应用程序的部署描述文件。
#比如Servlet程序、Filter程序、Listener监听器、Session超时等
|-- <userdir> # 自定义的目录
|-- <userfiles> # 自定义的资源文件
webapps:
在 webapps 下,每一个子目录都是一个独立的 Web 应用,子目录的名字(webapp)就是 Web 应用的名字,也被称为 Web 应用的上下文根,用户可以通过这个上下文根来访问 JavaWeb 应用中的资源。webapp:
工程发布文件夹(web应用的根目录
)。属于该web应用的所有资源都存放在该目录下。
每个 war 包都可以视为 webapp 的压缩包。META-INF
:META-INF 目录用于存放工程自身相关的一些信息,元文件信息,通常由开发工具,环境自动生成。WEB-INF
:Java web应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录。/WEB-INF/classes
:存放程序所需要的所有.class 文件。/WEB-INF/lib
:存放程序所需要的所有 jar 文件。/WEB-INF/web.xml
:web 应用的部署配置文件。它是工程中最重要的配置文件,它描述了 servlet 和组成应用的其它组件,以及应用初始化参数、安全管理约束等。
Tomcat
介绍
开源小型web服务器 ,完全免费,主要用于中小型web项目。
Tomcat 是由 Apache 开发的一个 Servlet 容器(又称web容器),支持Servlet/JSP少量JavaEE规范,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。
由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
JavaEE:
- (Java Enterprise Edition,Java企业版)指Java企业级开发的技术规范总和。
- 包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
安装
Tomcat 安装程序包
- tar.gz文件是Linux操作系统下的安装版本;
- zip文件是Windows系统下的压缩版本;找到Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可
- Tomcat仍然是支持jsp 和 el;Apache Tomcat® - Which Version Do I Want?
- Tomcat 最好的小伙伴是 JSP+EL;
安装__软件版本
- 下载后得到一个 exe 安装包(一般给客户使用)
- 在安装过程中会自动进行相关配置。比如找到 JDK 的位置、读取环境变量 JAVA_HOME 等。
- 启动后以服务的方式运行,并且带有 GUI 管理工具(图形界面化的管理工具),用户可以很方便地通过界面进行管理和操作,非常友好。
注意:安装版需要配置的环境变量。
l JAVA_HOME:必须先配置JAVA_HOME,因为Tomcat启动需要使用JDK;
l CATALANA_HOME:如果是安装版,那么还需要配置这个变量,这个变量用来指定Tomcat的安装路径,例如:F:\apache-tomcat-7.0.42。
l 启动:进入%CATALANA_HOME%\bin目录,找到startup.bat,双击即可;
l 关闭:进入%CATALANA_HOME%\bin目录,找到shutdown.bat,双击即可;
startup.bat会调用catalina.bat,而catalina.bat会调用setclasspath.bat,setclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前把JAVA_HOME配置正确。
解压__软件版本
- 一个 zip 压缩包,是免安装的,使用 WinRAR 等软件解压到任意目录后就可以直接使用
- 当不再使用时,直接删除文件夹即可卸载
- 没有 GUI 界面,只能通过使用各种配置文件和命令来操作和管理
注意,Tomcat解压或安装到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败。
目录结构
说明:
-
1)bin
- 该目录下存放的是二进制可执行文件.
- 如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗口启动Tomcat;
- 如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,shutdawn.bat用来停止Tomcat; 其中以.sh结尾的 Linux 命令; 以.bat结尾的 Windows 命令
- 常用的 Tomcat 命令:
- startup.sh/startup.bat:用来启动 Tomcat;
- shutdown.sh/shutdown.bat:用来关闭 Tomcat;
- catalina.bat/ catalina.bat:用来设置 Tomcat 的内存
-
2)conf
- server.xml:配置整个服务器(tomcat)信息。例如设置域名、IP、端口号、默认加载的项目、请求编码等等。
- tomcatusers.xml:用来配置和管理 Tomcat 的用户与权限,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面;
- web.xml:部署描述符文件,这个文件中注册很多MIME类型,即文档类型。
- 这些MIME类型是客户端与服务器之间说明文档类型的。MIME就是用来说明文档的内容是什么类型的!
- 如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它。当然是在浏览器中显示这个html文件。
- 如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。
-
3)lib
- Tomcat 运行时需要的 jar 包所在的目录【该Tomcat下所有项目都可以共享】
-
4)logs
- 注意:清空该目录中的文件不会对 Tomcat 的运行带来影响
- 在 Linux 系统中,控制台的输出日志在 catalina.out 文件中
- 在 Windows 系统中,控制台的输出日志在 catalina.xxxx-xx-xx.log 文件中
- 用来存放 Tomcat 在运行过程中产生的日志文件
-
5)temp : 存储临时产生的文件,即缓存。【可以在停止Tomcat后删除】
-
6)webapps
- Tomcat 允许以文件夹、war 包、jar 包的形式发布应用
- 当 Tomcat 启动时会去加载 webapps 目录下的应用程序;存放项目的文件,web 应用放置到此目录下浏览器可以直接访问
- web应用所在目录,即供外界访问的web资源的存放目录
- 用来存放web程序(也就是通常所说的网站)
-
7)work
- 用来存放 Tomcat 在运行时的编译文件(也即 class 字节码文件)。例如 JSP 编译后的文件。
- 清空 work 目录,然后重启 Tomcat,可以达到清除缓存的作用
-
8)LICENSE:许可证。
-
9)NOTICE:说明文件
启动
双击 bin 目录下的 startup.bat 文件
启动后,通过浏览器访问 http://localhost:8080
能看到Apache Tomcat的内容就说明Tomcat已经启动成功。
注意:
启动的过程中,控制台有中文乱码,需要修改conf/logging.prooperties
java.util.logging.ConsoleHandler.encoding = UTF-8
注意,不要关闭黑窗口,关闭了,tomcat 服务就停止。
catalina 启动 Tomcat
- 进入到 Tomcat 的 bin 目录下
- 输入cmd ->回车
- 执行命令: catalina run
关闭
关闭有三种方式
- 直接x掉运行窗口:强制关闭[不建议]
- bin\shutdown.bat:正常关闭【有日志显示,推荐方式】
- ctrl+c: 正常关闭
配置
修改端口
Tomcat默认的端口是8080,要想修改Tomcat启动的端口号,需要修改 conf/server.xml
注: HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号。
部署
**方式1__常用:**将 web 工程的目录拷贝到 Tomcat 的 webapps 目录下
部署步骤:
- news Web工程(目前都是静态资源:html, 图片)
- 将该news目录/文件夹 拷贝到 Tomcat 的webapps目录下
- 浏览器输入: http://ip[域名]:port/news/子目录../文件名。例如
http://localhost/news/hello.html
,能看到内容就说明项目已经部署成功。
注意如果项目的文件夹里有index.html的文件,那么不需要详细的路径,直接到文件夹名即可。
方式2__推荐:通过配置文件来部署
部署步骤:
- 1.在Tomcat 下的 conf 目录\Catalina\localhost\ 下配置文件
- 比如hsp.xml,作为web应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。
- 2.访问web工程: http://ip[域名]:port/hsp/index.html 就表示访问 D:\album 目录下的index.html
说明:每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的 xml 文件的文件名作为 web 应用的上下文路径,而不再理会 <Context>中配置的 path 路径,因此在配置的时候,可以不写 path。
方式3:
一般JavaWeb项目会被打包称war包,然后直接将war包放到Webapps目录下,Tomcat会自动解压缩war文件。
- 将 目录拷贝到Tomcat的webapps目录下,然后在 bin 目录下执行
startup.bat
或startup.sh
- Tomcat 会自动解压
webapps
目录下的 war 包,在webapps目录下就会多一个xxx目录 - 通过浏览器访问http://localhost/xxx(xxx 是 war 包文件名),能看到内容就说明项目已经部署成功。
方式4:
①、打开tomcat下conf/server.xml,在<Host> </Host>标签之间输入项目配置信息
|---|----------------------------------------------------------------------------------------|
| 1 | <Context path=``"/WebProject"
docBase=``"D:/WebProject"
reloadable=``"true"
/>
|
path:浏览器访问时的路径名
docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。其实也就是编译后的项目
* reloadble:设定项目有改动时,tomcat是否重新加载该项目*
②、双击 startup.bat,启动 tomcat 服务器,然后在浏览器输入访问的项目名称路径
注意:如果你配置的 path="/xx",那么访问的时候就是这样:
注意:但是从 tomcat5.0版本开始后,server.xml 文件作为 tomcat 启动的主要配置文件,一旦 tomcat 启动后,便不会再读取这个文件,因此无法再 tomcat 服务启动后发布 web 项目。