我交了个新朋友——TA叫Servlet(二)

Servlet应用——HttpServlet类

由于大多数Web应用都是通过HTTP协议和客户端进行交互,因此,在Servlet 接口中,提供了一个抽象类javax.servlet.http.HttpServlet,它是GenericServlet的子类,专门用于创建应用于HTTP协议的Servlet。

通过分析HttpServlet的源代码片段,发现HttpServlet主要有两大功能,第一是根据用户请求方式的不同,定义相应的doXxx()方法处理用户请求。例如,与GET请求方式对应的doGet()方法,与POST方式对应的doPost()方法,如图
在这里插入图片描述
(Ctrl + Shift + T可以查找相应的类,如查找httpservlet)
在这里插入图片描述
第二是通过service()方法将HTTP请求和响应分别强转为HttpServletRequest和HttpServletResponse类型的对象,如图
在这里插入图片描述
需要注意的是,由于HttpServlet类在重写的service()方法中,为每一种HTTP请求方式都定义了对应的doXxx()方法,因此,当定义的类继承HttpServlet后,只需根据请求方式,重写对应的doXxx()方法即可,而不需要重写service()方法。
在这里插入图片描述

Servlet doGet()、doPost()小案例

form.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://localhost:8080/Review3/MyHttpServlet" method="get">
		<table>
			<tr>
				<td>用户名:</td>
				<td><input type="text" name="username" /></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="pwd" /></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
				<input type="submit" name="submit" value="get提交" />
				</td>
			</tr>
		</table>
	</form>
	
	<hr size="2" color="red" />
	
	<form action="http://localhost:8080/Review3/MyHttpServlet" method="post">
		<table>
			<tr>
				<td>用户名:</td>
				<td><input type="text" name="username" /></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="pwd" /></td>
			</tr>
			<tr>
				<td colspan="2" align="center">
				<input type="submit" name="submit" value="post提交" />
				</td>
			</tr>
		</table>
	</form>
	
</body>
</html>

MyHttpServlet.java

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyHttpServlet extends HttpServlet {
	@Override // 重写doGet()和doPost()一定要改为public
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		String methodString = req.getMethod();
//		System.out.println(methodString);
//		System.out.println("这是发送的get请求");
		PrintWriter outPrintWriter = resp.getWriter();
		outPrintWriter.write("This is doGet Method");
	}

	@Override
	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter outPrintWriter = resp.getWriter();
		outPrintWriter.write("This is doPost Method");
	}
}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3</display-name>
  
  <servlet>
  	<servlet-name>MyHttpServlet</servlet-name>
  	<servlet-class>MyHttpServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>MyHttpServlet</servlet-name>
  	<url-pattern>/MyHttpServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>Dude</servlet-name>
  	<servlet-class>HelloWorldServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>Dude</servlet-name>
  	<url-pattern>/yummy</url-pattern>
  </servlet-mapping>
  
  <servlet>
  	<servlet-name>Life</servlet-name>
  	<servlet-class>LifeServlet</servlet-class>
  	<!-- 设置Servlet在Web应用启动时初始化 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>Life</servlet-name>
  	<url-pattern>/holy</url-pattern>
  </servlet-mapping>
  
  
  
  
  <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>
</web-app>

全局配置:
在这里插入图片描述
部分运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Servlet虚拟路径映射过程

在这里插入图片描述

实现Servlet的虚拟路径多重映射

一个Servlet对应多个访问路径,如以下案例
testServlet.java


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet
 */
public class testServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter outPrintWriter = response.getWriter();
		outPrintWriter.print("this servlet is created by eclipse");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doGet(request, response);
	}

}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3_2</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>
    <description></description>
    <display-name>testServlet</display-name>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>
  <servlet>
  	<servlet-name>testServlet2</servlet-name>
  	<servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>testServlet2</servlet-name>
  	<url-pattern>/testServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
  	<servlet-name>testServlet3</servlet-name>
  	<servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>testServlet3</servlet-name>
  	<url-pattern>/testServlet3</url-pattern>
  </servlet-mapping>
</web-app>

全局配置:
在这里插入图片描述
部分运行结果如下:
在这里插入图片描述

缺省Servlet(用于处理输入地址错误问题)案例

当web.xml文件中找不到匹配的< servlet-mapping >元素的URL,就将访问请求交给缺省Servlet处理

Quesheng.java
在这里插入图片描述


import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Quesheng
 */
public class Quesheng extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public Quesheng() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().print("缺省的Servlet处理请求资源找不到问题,在浏览器地址输入的路径写错了------------");
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3_2</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>
    <description></description>
    <display-name>testServlet</display-name>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet2</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet2</servlet-name>
    <url-pattern>/testServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet3</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet3</servlet-name>
    <url-pattern>/testServlet3</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Quesheng</display-name>
    <servlet-name>Quesheng</servlet-name>
    <servlet-class>Quesheng</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Quesheng</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

全局配置:
在这里插入图片描述
运行结果:
在这里插入图片描述

ServletConfig接口

在Servlet运行期间,经常需要一些辅助信息,例如,文件使用的编码、使用Servlet程序的共享等,这些信息可以在web.xml文件中使用一个或多个< init-param >元素进行配置。当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到一个ServletConfig对象中,通过调用init(ServletConfig config)方法将ServletConfig对象传递给Servlet。ServletConfig定义了一系列获取配置信息的方法,接下来通过一张表来描述ServletConfig接口的常用方法,如表所示
在这里插入图片描述
在这里插入图片描述

ServletConfig小案例

tesServlet2.java


import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class tesServlet2
 */
public class tesServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		// 1.得到servletConfig对象
		ServletConfig config = this.getServletConfig();
		// 2.获取servlet的名称
		String servletNameString = config.getServletName();
		System.out.println("servlet的名称:" + servletNameString);
		// 3.获取servlet的初始化参数:
		String valueString = config.getInitParameter("encoding");
		System.out.println("初始化参数的值:" + valueString);
		// 4.获取servlet的初始化参数名称
		Enumeration<String> enumeration = config.getInitParameterNames();
		while (enumeration.hasMoreElements()) {
			// 获取初始化参数名称
			String nameString = enumeration.nextElement();
			String value1 = config.getInitParameter(nameString);
			System.out.println("初始化参数的名称:" + nameString);
			System.out.println("该名称对应的值:" + value1);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3_2</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>
    <description></description>
    <display-name>testServlet</display-name>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet2</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet2</servlet-name>
    <url-pattern>/testServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet3</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet3</servlet-name>
    <url-pattern>/testServlet3</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Quesheng</display-name>
    <servlet-name>Quesheng</servlet-name>
    <servlet-class>Quesheng</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Quesheng</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>tesServlet2</display-name>
    <servlet-name>tesServlet2</servlet-name>
    <servlet-class>tesServlet2</servlet-class>
    <!-- 初始化参数 -->
    <init-param>
    	<param-name>encoding</param-name>
    	<param-value>utf-8</param-value>
    </init-param>
    <init-param>
    	<param-name>username</param-name>
    	<param-value>Rihood</param-value>
    </init-param>
    
  </servlet>
  <servlet-mapping>
    <servlet-name>tesServlet2</servlet-name>
    <url-pattern>/tesServlet2</url-pattern>
  </servlet-mapping>
</web-app>

全局配置:
在这里插入图片描述
运行结果如下:
在这里插入图片描述

ServletContext接口

当Servlet容器启动时,会为每个Web应用创建一个唯一的ServletContext对象代表当前Web应用,该对象不仅封装了当前Web应用的所有信息,而且实现了多个Servlet之间数据的共享。

得到ServletContext对象途径:

方法一、通过ServletConfig对象
在这里插入图片描述
方法二、直接得到
在这里插入图片描述

实例1.获取Web应用程序的初始化参数

testServlet03.java


import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet03
 */
public class testServlet03 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// 1.得到ServletContext对象
		ServletContext context = this.getServletContext();
		// 2.获取全局的初始化参数
		Enumeration<String> enumeration = context.getInitParameterNames();
		while (enumeration.hasMoreElements()) {
			String nameString = enumeration.nextElement();
			String valueString = context.getInitParameter(nameString);
			System.out.println("初始化参数的名称:" + nameString);
			System.out.println("名称对应的值:" + valueString);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3_2</display-name>
  <context-param>
  	<param-name>AAA</param-name>
  	<param-value>aaa</param-value>
  </context-param>
  <context-param>
  	<param-name>BBB</param-name>
  	<param-value>bbb</param-value>
  </context-param>
   
  
  
  <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>
    <description></description>
    <display-name>testServlet</display-name>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet2</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet2</servlet-name>
    <url-pattern>/testServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet3</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet3</servlet-name>
    <url-pattern>/testServlet3</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Quesheng</display-name>
    <servlet-name>Quesheng</servlet-name>
    <servlet-class>Quesheng</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Quesheng</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>tesServlet2</display-name>
    <servlet-name>tesServlet2</servlet-name>
    <servlet-class>tesServlet2</servlet-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <param-name>username</param-name>
      <param-value>Rihood</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>tesServlet2</servlet-name>
    <url-pattern>/tesServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>testServlet03</display-name>
    <servlet-name>testServlet03</servlet-name>
    <servlet-class>testServlet03</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet03</servlet-name>
    <url-pattern>/ts3</url-pattern>
  </servlet-mapping>
</web-app>

全局配置:
在这里插入图片描述
运行结果:
在这里插入图片描述

实例2.实现多个Servlet对象共享数据

由于一个Web应用中的所有Servlet共享同一个ServletContext对象,因此ServletContext对象的域属性可以被该Web应用中的所有Servlet访问。在ServletContext接口中定义了分别用于增加、删除、设置ServletContext域属性的四个方法,如表所示
在这里插入图片描述
testServlet04.java


import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet04
 */
public class testServlet04 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 1.得到ServletContext对象
		ServletContext context = this.getServletContext();
		// 2.存值
		context.setAttribute("key", "Servlet04存的值");
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

testServlet05.java


import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class testServlet05
 */
public class testServlet05 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// 1.得到ServletContext对象
		ServletContext context = this.getServletContext();
		// 2.从ServletContext取值
		Object object = context.getAttribute("key");
		String valueString = object.toString();
		response.setContentType("text/html; charset=utf-8");
		response.getWriter().print(valueString);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

web.xml

<?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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Review3_2</display-name>
  <context-param>
    <param-name>AAA</param-name>
    <param-value>aaa</param-value>
  </context-param>
  <context-param>
    <param-name>BBB</param-name>
    <param-value>bbb</param-value>
  </context-param>
  <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>
    <description></description>
    <display-name>testServlet</display-name>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/testServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet2</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet2</servlet-name>
    <url-pattern>/testServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>testServlet3</servlet-name>
    <servlet-class>testServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet3</servlet-name>
    <url-pattern>/testServlet3</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>Quesheng</display-name>
    <servlet-name>Quesheng</servlet-name>
    <servlet-class>Quesheng</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Quesheng</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>tesServlet2</display-name>
    <servlet-name>tesServlet2</servlet-name>
    <servlet-class>tesServlet2</servlet-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <param-name>username</param-name>
      <param-value>Rihood</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>tesServlet2</servlet-name>
    <url-pattern>/tesServlet2</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>testServlet03</display-name>
    <servlet-name>testServlet03</servlet-name>
    <servlet-class>testServlet03</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet03</servlet-name>
    <url-pattern>/ts3</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>testServlet04</display-name>
    <servlet-name>testServlet04</servlet-name>
    <servlet-class>testServlet04</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet04</servlet-name>
    <url-pattern>/ts4</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>testServlet05</display-name>
    <servlet-name>testServlet05</servlet-name>
    <servlet-class>testServlet05</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>testServlet05</servlet-name>
    <url-pattern>/ts5</url-pattern>
  </servlet-mapping>
</web-app>

全局配置:
在这里插入图片描述
先访问/ts4存值,再访问/ts5取值,运行结果如下:
在这里插入图片描述
在这里插入图片描述

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值