Javaweb之Servlet介绍

Servlet

域对象

修改配置文件(web.xml)后需要重启

servlet介绍:

(151条消息) JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)_刘扬俊的博客-CSDN博客_servlet

配置servlet:

(151条消息) web.xml中servlet配置及其含义_丑八怪28的博客-CSDN博客_web.xml中servlet配置及其含义

一、Servlet的生命周期

 init( ),service( ),destroy( )是Servlet生命周期的方法。

1.init( ), 当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来,但是这个方法在后续请求中不会在被Servlet容器调用,就像人只能“出生”一次一样。我们可以利用init( )方法来执行相应的初始化工作。调用这个方法时,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。

2.service( )方法,每当请求Servlet时,Servlet容器就会调用这个方法。就像人一样,需要不停的接受老板的指令并且“工作”。第一次请求时,Servlet容器会先调用init( )方法初始化一个Servlet对象出来,然后会调用它的service( )方法进行工作,若在后续有多次请求,Servlet容器会不停调用service方法。

3.destory, 当要销毁Servlet时,Servlet容器就会调用这个方法,就如人一样,到时期了就得死亡。在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码。
 


下面使用一个程序进行对servlet生命周期的验证,其中需要进行servlet类的定义和对应xml文件中的配置,在service方法中设置一个计数器i,从而进行对servlet服务调用的计数工作。

 1. servlet类的定义

package com.edu;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class Servlet03 implements Servlet{
	int i=1;

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("Servlet03 is being destroyed.");
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("Servlet03 is inited.");
	}

	@Override	
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("Servlet03 is serving at."+ (i++) +"times");
		
	}
	
}

2. 对应的web.xml配置

在配置Servlet时,需要配置以下两点:

  • <servlet>,配置Servlet
  • <servlet-Mapping>,配置其映射信息

(1)<servlet>

<servlet-name>可以随意指定,但要有一定的意义,一般取为类的名称,我的类名为Servlet03,这里取名为Servlet03

<servlet-class>是类的全路径,package+calssname,一般是包名+类名,因为我的servlet类所在的包名是com.edu,所以是com.edu.Servlet03,一定要是全路径


(2)<servlet-Mapping>:映射信息

<servlet-name>,里面的名字是对应的Servlet名,即上面配置的Servlet名字Servlet03。

<url-patten>是映射路径,也就是访问Servlet的名称,是在访问Servlet在浏览器地址栏后面输入的信息,例如我的映射路径命名为/Servlet03,在地址栏中输入http://localhost/myweb01/Servlet03

注意:这里的映射路径一定要写成/servlet,不能是servlet,一定要带斜杠 / 表明映射的地址!

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>myweb01</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <servlet>
  	<servlet-name>Servlet03</servlet-name> 
  	<servlet-class>com.edu.Servlet03</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>Servlet03</servlet-name>
  	<url-pattern>/Servlet03</url-pattern>
  </servlet-mapping>
  
</web-app>

 配置结束后启动servlet,可以发现控制台中servlet被初始化了,多刷新几次后可以发现servlet不断的在进行服务。

在servers窗口手动关闭Tomcat服务器后,可以发现调用了destroy方法,servlet被销毁。至此一个生命周期结束。

servlet有两种创建方式,一种是创建dynamic web project时版本号选2.5,此时需要在web.xml文件中进行配置,其次,在创建项目时选择4.0的版本号,则可以通过注解直接引入servlet,而无需再进入配置文件中进行配置。

猜你喜欢

转载自blog.csdn.net/weixin_45662399/article/details/126536663