Servlet快速入门笔记

    科技2022-07-15  129

    文章目录

    一、基本概念二、servlet的生命周期三、servlet3.0基于注解配置四、servlet体系结构

    一、基本概念

    概念Servlet(server applet):运行在服务器端的小程序,简单说就是实现让用户通过浏览器可以访问到java类方法,让服务器(比如TomCat)识别运行java类的一种技术 快速入门https://blog.csdn.net/grd_java/article/details/104939956如果你没有接触过servlet,请先访问上面的链接,跟着流程走一遍,本文章主要记录重点,以下会讲快速入门为什么要内样做,而不会手把手走流程创建一个java EE项目定义一个类,实现Servlet接口实现接口中的抽象方法配置Servlet部署到TomCat,浏览器请求url运行

    1、首先创建一个web项目,不会的请参考上面快速入门链接 2、使用maven引入相关依赖 3、创建一个类,继承Servlet接口 4、配置web.xml文件,配置servlet

    <?xml version="1.0" encoding="UTF-8"?><!-- 这是xml文档的文档声明 --> <!-- - 这是XML Schema格式约束文件,此文件将约束用户编写xml文档的规则 --> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <!-- - 映射一个servlet,简单的说,就是 - 如果我们把每一个servlet当成一个小程序,那么这一系列功能的实现代码(类)就抽象成一个小程序 - 我们需要在这里配置,让某些使用者(服务器,浏览器)知道,哪些是servlet,哪些是普通的用户访问不到的类,而 - servlet类(并且要配置到这里),就可以被用户通过url路径访问到 - 那么一个完整的程序,servlet一定不止一个,那么就需要先区分不同的servlet,所有下面<servlet>标签主要用于 - 指定一个servlet类,配置到当前的配置文件里,让使用者能够知道这个类是一个servlet。下面<servlet-class>com.yzpnb.servlet.Dome1</servlet-class>完成此功能 - 为这个servlet起一个唯一名字,用于区分不同servlet。下面<servlet-name>demo1</servlet-name>完成此功能,起名为demo1 --> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>com.yzpnb.servlet.Dome1</servlet-class> </servlet> <!-- - 上面已经指定了一个类为servlet类,并为它起了一个唯一姓名 - 那么现在我们就可以通过这个唯一的姓名来对它进行额外配置 - 我们说过,servlet是通过浏览器访问url路径访问得到的,那么我们就需要给servlet指定一个url映射 - 指定映射后,当用户按规则访问指定路径后,即可请求到相应servlet中执行功能 - 首先<servlet-mapping>用来配置servlet映射 - 其后,指定为哪个servlet(通过唯一名字来指定)配置映射<servlet-name>demo1</servlet-name> - 最后,为其配置url映射路径<url-pattern>/demo1</url-pattern> --> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping> </web-app>

    5、创建一个jsp页面当做入口 6、配置TomCat访问项目(和快速入门中一样,参考快速入门标题"将web项目发布到tomcat服务器")

    执行原理这里我说最后直接执行service方法,其实并不是这么回事,你暂时可以理解是执行service方法

    二、servlet的生命周期

    生命周期方法下面阐述的都是默认情况下,生命周期的执行时机可以通过配置更改

    package com.yzpnb.servlet; import javax.servlet.*; import java.io.IOException; /** * servlet快速入门 */ public class Dome1 implements Servlet { /** * 初始化方法,在servlet被创建的时候执行。只会执行一次 * @param servletConfig * @throws ServletException */ public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init............."); } /** * 获取servlet的配置对象(与生命周期无关) * @return */ public ServletConfig getServletConfig() { return null; } /** * 提供服务的方法 * 每一次servlet被访问时执行 */ public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service.........."); } /** * 获取servlet的信息(与生命周期无关) * @return */ public String getServletInfo() { return null; } /** * 销毁方法 * 在servlet被销毁时执行(服务器正常关闭时) */ public void destroy() { System.out.println("destroy.............."); } }

    servlet生命周期相关配置

    修改servlet创建时机,在< servlet >标签下配置即可

    <servlet> <servlet-name>demo1</servlet-name> <servlet-class>com.yzpnb.servlet.Dome1</servlet-class> <!-- - <load-on-startup>标签用于指定servlet创建时机(默认是-1) - 如果标签内容是负数,会在servlet第一次访问时创建 - 如果标签内容是0或正整数,会在服务器启动时创建 --> <load-on-startup>5</load-on-startup> </servlet>

    三、servlet3.0基于注解配置

    为什么使用注解配置如果我们有成百上千个servlet,全部配置到web.xml中,会十分混乱,所以官方在3.0标准中支持了注解配置有了注解配置,就可以不需要web.xml了 简单使用注解实现servlet映射

    小细节注解写法的简化

    四、servlet体系结构

    servlet接口有两个实现类GenericServlet:抽象类,除了service外的方法都进行空实现,也就是我们继承此类,只需要重写service方法(因为此实现类只抽象了service方法),其它方法选择性重写即可HttpServlet:抽象类,对HTTP协议的一个封装和描述,将service封装成doGet和doPost方法,我们继承此类后只需要在需要的地方重写doGet和doPost方法即可

    HttpServlet源码分析

    Processed: 0.015, SQL: 8