第5章第6章 Servlet技术
《Java Web程序设计》-T5&T6(Servlet技术)
一、Servlet概述
1、Servlet概念
Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术,是以Java为基础的、运行于服务器端的应用程序组件。
Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。
2、使用Servlet的意义
在进行JavaWeb开发时,如果将前端代码和后端代码均写在jsp文件中,不方便维护,所以就需要进行前后端分离:
- 前端页面设计:HTML + CSS + JavaScript 【写在jsp文件中】
- 后端逻辑判断:Java
要实现最终效果,需要将后端开发的数据在前端页面进行呈现,所以需要一门技术可以将后端数据传到前端页面,这门技术就可以使用:Servlet(中间商)
3、Servlet快速入门
- 定义一个类,实现Servlet接口,并重写接口中的方法
- 使用注解@WebServlet配置访问路径
- 启动Tomcat服务器,输入地址进行访问
package com.ynnz.servlet;import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;@WebServlet("/test1")
public class Test1 implements Servlet {@Overridepublic void destroy() {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {System.out.println("Hello Servlet");}}
访问地址:http://localhost:8080/ServletTest/test1,在控制台输出:Hello Servlet
二、Servlet执行流程
问题思考:在快速入门的案例中,我们并没有调用service()方法,为什么可以执行service()中的内容?
Web服务器会自动创建Servlet对象,并通过Servlet对象调用Servlet类中的方法。
Servlet执行流程如下:
- 根据
localhost:8080
可以找到要访问的Tomcat Web服务器- 根据
ServletTest
可以找到部署在Tomcat服务器上的ServletTest项目- 根据
test1
可以找到要访问的是项目中的哪个Servlet类,根据@WebServlet后面的值进行匹配- 找到Test1这个类后,Tomcat服务器就会为Test1这个Servlet类创建一个对象,然后调用对象中的方法
三、Servlet生命周期
问题思考:通过Servlet执行流程我们知道Servlet对象是由Tomcat服务器创建的,那是什么时候被创建的呢?
如果要回答这个问题,就需要学习Servlet的生命周期(即Servlet对象从创建到销毁的整个过程)
Servlet运行在Tomcat Web服务器中,其生命周期由Tomcat来管理,分为如下4个阶段:
加载和实例化
:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象默认情况,Servlet会在第一次访问被容器创建,但是如果创建Servlet比较耗时的话,那么第一个访问的人等待的时间就比较长,用户的体验就比较差。因此我们可以在服务器启动的时候创建Servlet对象:
loadOnstartup的取值有两类情况:
(1)负整数:第一次访问时创建Servlet对象
(2)0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高