900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【博学谷学习记录】超强总结 用心分享|【Java Web】Servlet

【博学谷学习记录】超强总结 用心分享|【Java Web】Servlet

时间:2023-09-11 13:26:55

相关推荐

【博学谷学习记录】超强总结 用心分享|【Java Web】Servlet

目录

什么是Servlet?

Servlet快速入门

Servlet的执行过程

Servlet的生命周期

ServletConfig

ServletContext

什么是Servlet?

Servlet是一个运行于Web服务器的Java程序,用于接受和响应客户端的http请求。

主要是配合动态资源使用,当然静态资源也需要使用servlet访问,只不过Tomcat里面已经定义好了一个DefaultServlet。

Servlet快速入门

1.创建Servlet

创建一个普通类,实现Servlet接口

2.配置Servlet

在web.xml中配置Servlet

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!-- 名称需要和项目名一致 --><display-name>servlet_practice</display-name><!-- 向Tomcat注册Servlet servlet-name:Servlet的名称, servlet-class:具体的路径 --><servlet><servlet-name>TestServlet</servlet-name><servlet-class>cn.liuwei.servlet.TestServlet</servlet-class></servlet><!-- 注册servlet的映射。 servlet-name:找到上面注册的servlet, url-pattern:地址栏的路径 --><servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/testServlet</url-pattern></servlet-mapping></web-app>

3.运行web项目

Servlet的执行过程

当使用url进行对Tomcat请求时,访问流程如下所示

先找到Tomcat根据url中的名称找到具体的项目找到项目下的web.xml,然后寻找url-pattern,看有没有哪个pattern对应url中的值找到servlet-mapping中的servlet-name找到前面注册的servlet-name根据servlet-class中的值找到对应的Servlet类并创建实例执行Servlet中的方法

Servlet的生命周期

生命周期

Servlet从创建到销毁的一段时间:

初始化:一个Servlet只会初始化一次

生命周期方法

Servlet从创建到销毁期间调用的方法:

init:初始化方法,在创建servlet的实例时调用该方法。默认情况下,初次访问servlet才会创建实例service:当有请求到servlet时调用该方法。该方法可以被执行多次destroy:servlet销毁时调用该方法

Servlet提前执行init方法

默认情况地下,只有在初次访问Servlet时才会执行init方法。有的时候,我们可能需要在这个方法里面执行一些初始化工作,甚至是做一些比较耗时的逻辑。这个时候就需要让init方法提前执行,免得影响初次访问的体验。

想要让init方法提前执行,需要在web.xml文件中对需要提前执行的Servlet进行设置

<!-- 向Tomcat注册Servlet servlet-name:Servlet的名称, servlet-class:具体的路径 --><servlet><servlet-name>TestServlet</servlet-name><servlet-class>cn.liuwei.servlet.TestServlet</servlet-class><!-- 设置Servlet的init方法提前执行 --><load-on-startup>2</load-on-startup></servlet>

load-on-startup的值越小,提前执行的优先级越高。并且一般不设置为1,因为1是Tomcat的的Servlet的优先级

ServletConfig

ServletConfig用于获取Servlet的配置信息

//1.获取ServletConfig对象, 获取的是用于配置的信息ServletConfig config = this.getServletConfig();

ServletConfig类中有4个方法:

getServletName:获取Servlet的配置名称getInitParameter("name"):获取Servlet配置时的某个参数的值

String initName = config.getInitParameter("name");

参数在web.xml文件中配置

<servlet><servlet-name>HelloServletConfig</servlet-name><servlet-class>cn.liuwei.servlet.HelloServletConfig</servlet-class><init-param><param-name>name</param-name><param-value>Andrew</param-value></init-param></servlet>

getInitParameterNames:获取Servlet配置时的所有参数的值

Enumeration<String> names = config.getInitParameterNames();

为什么需要ServletConfig?

当jar包的编写者需要一个由jar包的使用者定义的变量时,可以提前在Servlet代码中用ServletConfig获取变量,然后让使用者在web.xml文件中定义这个变量的值

ServletContext

每个Web应用只有一个ServletContext对象,即不管在哪个Servlet中,他们获取到的ServletContext对象都是同一个

通过getServletContext()方法获取ServletContext对象

ServletContext context = getServletContext();

ServletContext的作用

1.可以获取全局配置参数

在web.xml中配置全局参数

<context-param><param-name>address</param-name><param-value>上海杨浦</param-value></context-param>

通过getInitParameter方法获取全局参数

2.获取web应用中的资源

通过getRealPath方法获取给定文件的绝对路径

String path = context.getRealPath("");

通过getResourceAsStream方法获取Web工程下的资源,并转换成流对象

//使用context的getResourceAsStream方法时的根路径是Tomcat中的项目文件的路径InputSream is = context.getResourceAsStream("");

3.使用ClassLoader获取资源文件

//获取该Java文件的class类,然后获取到加载这个class到虚拟机中的那个类加载器对象//通过这个方法的根路径是项目文件下的WEB-INF/classesInputStream is = this.getClass().getClassLoader().getResourceAsStream("");

4.使用ServletContext存取数据

5.ServletContext的生命周期

服务器启动时,会为托管的每一个web应用程序创建一个ServletContext对象

从服务器移除托管,或者关闭服务器是会销毁ServletContext对象

6.ServletContext的作用范围

同一个项目的ServletContext对象是一致的

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。