JavaWeb①Tomcat 服务器
1、概述
学习 Java Web 之前,最好先学习 HTTP协议 的相关知识。
1.1、软件架构
C/S | B/S | |
---|---|---|
含义 | 客户端/服务器 | 浏览器/服务器 |
特点 | 客户端安装特定软件 | 无需安装特定软件。 基于 HTTP协议 访问 |
优点 | 图形显式效果好 | 只需升级服务器端功能 |
缺点 | 服务器软件和功能升级时,客户端也需要升级 | 图形效果不如 C/S |
1.2、Web 资源
Java Web:开发动态 Web 资源的技术
- 静态资源:Web 页面中的数据始终是不变的(HTML 、CSS)
- 动态资源:Web 页面中的数据是由程序产生,动态改变的(Servlet/JSP)
1.3、Web 服务器
Web 服务器:发布、运行 Web 应用的容器
只有将开发的 Web 项目放置到该容器中,用户才能通过浏览器访问。
1.3.1、常见服务器
开源
- 三者的用法,从代码角度完全相同
- 在开启、关闭服务器软件时对应的命令稍有区别。
- Tomcat:主流 Web 服务器之一,适合初学者
- Jetty:淘宝使用,运行效率比 Tomcat 高
- resin :新浪使用,开源服务器中效率最高
收费
提供相应的服务与支持,软件大,耗资源
- Weblogic(Oracle)
- WebSphere(IBM)
2、Tomcat 服务器
- Apache 软件基金会的 Jakarta 项目中的一个核心项目。
- 开源,支持 Servlet 和 JSP 规范。
- 技术先进、性能稳定,目前比较流行。
2.1、安装
从 官网 下载解压缩版本,解压到纯英文目录,配置环境变量。
2.2、目录结构
含义 | 说明 | |
---|---|---|
bin | 二进制可执行文件 | 如 startup.bat、shutdown.bat |
conf | 配置文件 | server.xml :服务器信息。如端口号, 编码格式等web.xml :项目部署描述文件,注册了很多 MIME 类型,即文档类型 |
lib | 类库 | Tomcat 运行所需的 jar 文件 |
logs | 日志 | Tomcat 启动、关闭、异常信息 |
temp | 临时文件 | Tomcat 停止后被删除 |
webapps | web 项目 | 每个文件夹都是—个项目; 没有指定项目 URL 时访问 ROOT 项目 |
work | 运行时生成的文件 | Tomcat 通过 JSP 生成Java 文件,编译生成 class 文件, 生成的文件存放到 work 目录 |
2.3、使用
2.3.1、启动
注:闪退说明 Java 环境变量有问题(JAVA_HOME 和 Path)
JAVA_HOME
:系统变量,变量值为 JDK 安装目录。Path
:变量值为 JDK 的 bin 目录(%JAVA_HOME%\bin
)
- 进入 Tomcat 的 bin 目录,双击 startup.bat 启动服务。
- 访问
http://localhost:8080/
,出现 Tomcat 界面。
2.3.2、停止
关闭 startup.bat
界面,或 双击 shutup.bat
停止服务。
2.3.3、修改端口号
-
进入 Tomcat 目录的 conf/server.xml。
-
重启生效。
<!-- 修改端口号 --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
2.3、项目部署
以原生方式,演示项目的创建和部署
(稍后再以 IDE 集成 Tomcat 部署)
示例:部署项目 myweb
2.3.1、项目结构
在 webapps 中建立文件夹(代表项目),名为 myweb。
-
创建 WEB-INF 文件夹(项目核心内容)
classes
:存放 class 文件lib
:存放 jar 文件web.xml
:项目配置文件(到 ROOT/WEB-INF 复制即可)
-
创建 index.html:默认页面
2.3.2、编写 Servlet
HelloServlet.java
- 将
tomcat/lib
目录的servlet-api
复制到WEB-INF/lib
- 编写 Servlet,使用 javac 编译为 class 文件
- 将 class 文件复制到
WEB-INF/classes
- 在 web.xml 中配置 Servlet
- 将 class 文件复制到
- 重启 Tomcat,访问 Servlet。
配置信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<!-- Servlet节点 -->
<servlet>
<servlet-name>HelloServlet</ servlet-name>
<servlet- class>indi.jaywee.HelloServlet</servlet- class>
</ servlet>
<!-- 映射节点 -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
</servlet-mapping>
</web-app>