(重点)Tomcat
软件的结构
Client(客户端)/Server(服务器端):C/S架构。
Browser(浏览器)/Server(服务器端):B/S架构。
资源的分类
服务器上的资源分类:
静态资源:一旦写完,运行期间不会发生变化。比如html、css、js、图片、视频等等。
动态资源:根据用户的不同,显示的内容就不同。比如:php、asp,jsp、servlet(java语言)等等。
服务器软件介绍
服务器上的资源都是存在磁盘上的,用户无法直接访问的。要想让用户能访问,必须有软件来管理这些资源,并提供对外服务器的端口。这样的软件就叫做服务器软件。课程中除非特别说明,我们所说的服务器都是指的是服务器软件。
硬件服务器:IP地址
硬件服务器上安装了很多软件:端口来区分软件。
常用的服务器软件:
*Tomcat:是apache基金会组织下的产品。非常优秀的Servlet容器(服务器)。最初由SUN公司的一个测试环境发展而来。
Weblogic AS(Application Server):收费的优秀的JavaEE容器(服务器)。Oracle的产品。
WebSphere AS(Application Server):收费的优秀的JavaEE容器(服务器)。IBM的产品。
Jbose AS:大名鼎鼎的红帽(Red Hat)公司的产品。
GlassFish:SUN公司的产品,JavaEE容器(服务器)。
(重点)Tomcat的安装与配置
Tomcat的下载
下载地址:https://tomcat.apache.org/download-80.cgi
Tomcat的版本 | Servlet版本 | JavaEE版本 |
---|---|---|
Tomcat9 | Servlet3.2 | JavaEE8 |
Tomcat8(学习此版本) | Servlet3.1 | JavaEE7 |
Tomcat7 | Servlet3.0 | JavaEE6 |
Tomcat5 | Servlet2.5 | JavaEE5 |
Tomcat的安装
window64位压缩版为例。
解压既是安装:不建议将Tomcat放在含有中文或空格的目录中。
Tomcat的配置
Tomcat的运行需要用到JDK,因此,你需要在系统的环境变量中,设置一个JAVA_HOME=JDK安装目录
Tomcat的启动与停止
启动Tomcat
方式一:
方式二:使用命令行
验证是否成功
Tomcat默认使用的是8080端口
访问:http://localhost:8080或者http://127.0.0.1:8080
关闭Tomcat
方式一:关闭黑窗口。
方式二:执行shutdown.bat命令
Tomcat启动可能遇到的问题
问题1:一闪而过。
问题所在:1、你的JAVA_HOME环境变量没有配置。
问题2:端口被占用(默认8080)
出现问题,可以查看运行日志(Tomcat\log)
方式一:解决:释放占用的端口8080。
方式二:改用其他端口。修改Tomcat\conf\server.xml配置文件(TOmcat中的核心配置文件,不懂的不要瞎搞)。把8080改为其他端口即可。
(重点)标准的JavaWeb应用结构
应用名称
资源
img:存图片
js:js文件
WEB-INF :注意大小写。固定写法。位于该文件夹中的资源,用户无法直接访问。
classes:存放你的字节码文件。固定写法
lib:存放你的应用中需要的jar包。固定写法
web.xml:当前应用的配置文件。固定写法
(重点)应用的部署
把你的应用交给服务器管理,这个过程叫做部署。
方式一:把你的应用直接拷贝到Tomcat\webapps目录下即可。
注意:webapps目录下有几个目录,就是有几个应用
方式二:配置虚拟目录(应用的虚拟路径)(不推荐)
修改Tomcat\conf\server.xml
不推荐理由:只要修改server.xml,就必须重新启动Tomcat,否则不生效。
方式三:配置虚拟目录(推荐)
在C:\apache-tomcat-8.5.27\conf\Catalina\localhost中建立一个xml配置文件,文件名就是虚拟目录名。
##(重点)使用idea部署javaweb应用
step1、建立一个javaweb应用
step2、配置服务器和虚拟目录
step3、启动Tomcat
step4、启动效果
idea做了什么?
1、把源代码进行编译,按照javaweb标准目录结构生成classes到:out\artifacts\day28_01javaweb_war_exploded
2、把刚才生成的目录,自动配置了虚拟目录(按照你的设置)
3、启动Tomcat
(重点)Servlet
Servlet是一套规范(由抽象类或接口组成),是JavaEE技术之一。
Servlet的规范在javax.servlet.*包中。
(重点)什么是Servlet
运行在服务器端的一段java服务小程序。所有的服务小程序应该实现javax.servlet.Servlet接口。
(重点)编写第一个Servlet:步骤和执行过程
编码过程
step1、编写一个类,实现Servlet接口
step2、编写完的Servlet必须给定一个访问地址,这个过程叫做Servlet映射。
修改web.xml
<?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_3_1.xsd"
version="3.1">
<servlet>
<!--servlet-name:给你的Servlet取一个名字-->
<servlet-name>servletDemo1</servlet-name>
<!--指定servlet小程序的完整类名-->
<servlet-class>com.itheima.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletDemo1</servlet-name>
<!--url-pattern:指定访问地址-->
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
step3、部署应用
step4、执行效果
###执行过程
1、用户访问http://localhost:8080/day28/demo1
http:使用的协议
localhost:主机地址
8080:端口号
/day28:应用名称(虚拟目录)
/demo1:资源地址
2、服务器会根据你的地址/demo1,找web.xml中的 ,进行比对
3、比对成功,找到
4、找到servlet-name,就能找到你的servlet小程序。
5、服务器会实例化你的小程序类,并调用其中的service方法。
使用注解映射你的Servlet
自Servlet3.0之后,web.xml已经不是必须的了。因为支持注解配置方式了。
注解配置学习建议:先学会xml配置,并且明白作用是什么?对比着xml,学会使用注解的方式进行配置。
step1、重新编写一个Servlet
step2、测试
注解如何起到作用的:给Tomcat看的。Tomcat内部会使用注解的反射。
因为Servlet小程序上使用了@WebServlet注解,Tomcat就知道你这是一个Servlet小程序。由于指定了urlPatterns的属性,Tomcat就知道当用户访问/demo2时,就执行带有该注解的Servlet中的service方法提供服务。
(重点)Servlet映射的细节
方式一:映射到一个绝对地址上。比如/demo2
方式二:使用通配符(*):/action/*
方式三:使用通配符(*):*.do
只要访问地址,以do结尾都可以访问到
注意:映射地址绝对>使用通配符的
/开头的通配符映射地址>*开头的通配符地址
如果一个地址匹配到很多Servlet,方式一>方式二>方式三
特殊映射:默认Servlet(学习Spring mvc框架有帮助)
如果一个地址被映射到了==/==上,那么这个Servlet就是成为默认的Servlet。负责处理没有对应映射的请求。
(重点)Servlet的生命周期
出生:Servlet小程序默认第一次被访问时由服务器将其实例化并初始化。
实例化之后,服务器会紧接着调用它的初始化方法(执行一次)
活着:是单例的,只要初始化后就驻留内存了。
死亡:应用被卸载(从Tomcat中移除了)或者Tomcat停止了。
可以执行销毁方法完成一些清理工作。
(很重要)小技巧(Spring mvc)
Servlet小程序,第一次被访问时才会完成实例化和初始化。造成第一个用户感觉比较慢。
希望应用被加载时(Tomcat启动时)就完成Servlet的实例化并初始化。
xml:
注解:
结果:启动时就完成了以上2个Servlet的实例化。
(很重要)为什么配置的顺序从2开始(Spring mvc)
在Tomcat\conf\web.xml中,存在全局的默认Servlet和JSP引擎的映射。
(重点)Servlet的继承体系结构
GenericServlet
他是Servlet接口的一个实现类,且是一个抽象类
我们可以编写一个类继承这个抽象类编写我们的Servlet程序。
(重点)HttpServlet
我们编写JavaWeb基本上都是基于HTTP协议的。
在HttpServlet中增加专门与HTTP协议有关的方法,是GenericServlet的子类。
(重点)ServletConfig接口
ServletConfig的实例由Tomcat服务器创建。代表当前Servlet的参数配置。
会在Servlet初始化时,就传递给你。
作用:可以给Servlet配置一些参数,避免硬编码。(spring mvc中用到)
step1、web.xml配置映射,并指定参数
step2、获取参数
step3、注解方式(了解)