Web编程---Servlet技术

文章目录

一、目的

  • Servlet接口及其实现类的使用

  • Servlet虚拟路径映射的配置

  • 使用Eclipse工具开发Servlet

  • Servlet的生命周期

二、原理

Servlet由Servlet容器提供,所谓的Servlet容器是指提供了Servlet 功能的服务器(本书中指Tomcat),Servlet容器将Servlet动态的加载到服务器上。

Servlet的生命周期

Servlet的生命周期是指Servlet从被Servlet容器加载、初始化,到处理客户端请求,直至销毁的整个过程。以下是Servlet生命周期的详细介绍:

三、过程

1. TestServlet02文件演示效果

(1) 通过getServletConfig()函数获取初始化参数里面内容。

(2) 通过get()展示获取到的参数内容

2. TestServlet03文件演示效果

(1) 通过getServletContext()函数获取参数内容

(3) 通过get()展示获取到的参数内容

3. TestServlet04与TestServlet05文件演示效果

(1) 文件4设置参数,文件5获取参数

(2) 通过get()展示获取到的参数内容

4. 控制台展示生命周期过程

代码段

四、代码

web.xml文件

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0">
  <!-- <display-name>chapter03</display-name> -->

  <!-- 3.4.1 小结配置信息 -->
	<servlet>
		<servlet-name>TestServlet02</servlet-name>
		<servlet-class>cn.itcast.servlet.TestServlet02</servlet-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>TestServlet02</servlet-name>
		<url-pattern>/TestServlet02</url-pattern>
	</servlet-mapping>
  
  <!-- 3.4.2 配置信息 -->
	<context-param>
		<param-name>companyName</param-name>
		<param-value>itcast</param-value>
	</context-param>
	<context-param>
		<param-name>address</param-name>
		<param-value>beijing</param-value>
	</context-param>
	<servlet>
		<servlet-name>TestServlet03</servlet-name>
		<servlet-class>cn.itcast.servlet.TestServlet03</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>TestServlet03</servlet-name>
		<url-pattern>/TestServlet03</url-pattern>
	</servlet-mapping>
	
	<servlet>
		<description></description>
		<display-name>TestServlet04</display-name>
		<servlet-name>TestServlet04</servlet-name>
		<servlet-class>cn.itcast.servlet.TestServlet04</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>TestServlet04</servlet-name>
		<url-pattern>/TestServlet04</url-pattern>
	</servlet-mapping>

	<servlet>
		<description></description>
		<display-name>TestServlet05</display-name>
		<servlet-name>TestServlet05</servlet-name>
		<servlet-class>cn.itcast.servlet.TestServlet05</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>TestServlet05</servlet-name>
		<url-pattern>/TestServlet05</url-pattern>
	</servlet-mapping>
	
	
	

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
   <!--  <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.jsp</welcome-file>
    <welcome-file>default.htm</welcome-file> -->
    
  </welcome-file-list>
</web-app>  

TestServlet02.java文件

java 复制代码
package cn.itcast.servlet;
import java.io.*;

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

public class TestServlet02 extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		super.doGet(req, resp);
		PrintWriter out = resp.getWriter();
		// 获得ServletConfig对象
		ServletConfig config = this.getServletConfig();
		// 获得参数名为encoding对应的参数值
		String param = config.getInitParameter("encoding");
		out.println("encoding=" + param);
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
}

TestServlet03.java文件

java 复制代码
package cn.itcast.servlet;
import java.io.*;
import java.util.*;

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

public class TestServlet03 extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		PrintWriter out = resp.getWriter();
        // 得到ServletContext对象
		 ServletContext context = this.getServletContext();
		 // 得到包含所有初始化参数名的Enumeration对象
		Enumeration<String> paramNames = context.getInitParameterNames();
		  // 遍历所有的初始化参数名,得到相应的参数值,打印到控制台
		 out.println("all the paramName and paramValue are following:");
		  // 遍历所有的初始化参数名,得到相应的参数值并打印
		 while (paramNames.hasMoreElements()) {
			String name = paramNames.nextElement();
			String value = context.getInitParameter(name);
			out.println(name + ": " + value);
            out.println("<br>");
		 }
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
}

TestServlet04.java文件

java 复制代码
package cn.itcast.servlet;
import java.io.*;

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

public class TestServlet04 extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		super.doGet(req, resp);
		ServletContext context = this.getServletContext();
		// 通过setAttribute()方法设置属性值
		context.setAttribute("data", "this servlet save data");
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
}

TestServlet05.java文件

java 复制代码
package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;

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

public class TestServlet05 extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		super.doGet(req, resp);
		ServletContext context = this.getServletContext();
		Object object = context.getAttribute("data");
		PrintWriter out = resp.getWriter();
		out.println(object.toString());
		
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPost(req, resp);
	}
}

SomeServlet.java文件

java 复制代码
package com.powernode.servlets;

import java.io.IOException;

import jakarta.servlet.Servlet;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;


public class SomeServlet implements Servlet {
	private ServletConfig config;
	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		this.config = config;
		System.out.println("init");
	}

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

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		获取servlet名称
		String servletName = config.getServletName();
		System.out.println("获取servlet名称:" + servletName);
		
//		获取servletContext对象
		ServletContext servletContext = config.getServletContext();
		System.out.println("获取servletContext对象" + servletContext);
//		获取初始化参数
		String initParameter1 = config.getInitParameter("name");
		System.out.println("name:" + initParameter1);
		
		System.out.println("service");
	}

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

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

}
相关推荐
伍哥的传说37 分钟前
鸿蒙系统(HarmonyOS)应用开发之手势锁屏密码锁(PatternLock)
前端·华为·前端框架·harmonyos·鸿蒙
yugi98783838 分钟前
前端跨域问题解决Access to XMLHttpRequest at xxx from has been blocked by CORS policy
前端
浪裡遊1 小时前
Sass详解:功能特性、常用方法与最佳实践
开发语言·前端·javascript·css·vue.js·rust·sass
天天爱吃肉82181 小时前
ZigBee通信技术全解析:从协议栈到底层实现,全方位解读物联网核心无线技术
python·嵌入式硬件·物联网·servlet
旧曲重听12 小时前
最快实现的前端灰度方案
前端·程序人生·状态模式
默默coding的程序猿2 小时前
3.前端和后端参数不一致,后端接不到数据的解决方案
java·前端·spring·ssm·springboot·idea·springcloud
夏梦春蝉2 小时前
ES6从入门到精通:常用知识点
前端·javascript·es6
归于尽2 小时前
useEffect玩转React Hooks生命周期
前端·react.js
G等你下课2 小时前
React useEffect 详解与运用
前端·react.js
我想说一句2 小时前
当饼干遇上代码:一场HTTP与Cookie的奇幻漂流 🍪🌊
前端·javascript