媒介
- 在上一节博客中,我们具体讲解了如何设置 HTML - servlet环境。
- 然而,在设置过程中,我们利用到的一些代码,尤其是 web.xml 文件里的代码,大家可能还不太理解。例如:
- <servlet>
- <servlet-name>login</servlet-name>
- <servlet-class>com.niit.LoginServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>login</servlet-name>
- <url-pattern>/login</url-pattern>
- </servlet-mapping>
复制代码 在这一节中,我们将深入剖析 web.xml 中的这些代码,具体讲解此中各个标签的含义和用法。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Java-servlet文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12907265.html?spm=1001.2014.3001.5482
一、servlet标签
标签概念
<servlet> 标签是 web.xml 中非常紧张的一个标签,它的主要作用是对 Servlet 举行注册和描述,就像是给 Servlet 办理了一张“身份证”,让服务器能够识别和找到这个 Servlet。
标签结构及示例
- <servlet>
- <servlet-name>login</servlet-name>
- <servlet-class>com.niit.LoginServlet</servlet-class>
- </servlet>
复制代码 子标签含义
- <servlet-name>:为 Servlet 起一个简短、易记的名称,类似于人的小名。这个名称在整个 web.xml 文件中必须是唯一的,它主要用于在其他标签中引用该 Servlet。例如,在上面的代码中,我们给 Servlet 起名为 login。
- <servlet-class>:指定 Servlet 类的完备包名和类名,告诉服务器这个 Servlet 在项目中的具体位置。服务器会根据这个信息来加载和实例化 Servlet。比如 com.niit.LoginServlet 表示 LoginServlet 类位于 com.niit 包下。
更多用法示例
- <servlet>
- <servlet-name>register</servlet-name>
- <servlet-class>com.example.RegisterServlet</servlet-class>
- </servlet>
复制代码 在这个例子中,我们注册了一个名为 register 的 Servlet,它对应的类是 com.example.RegisterServlet。
二、servlet-mapping标签
标签概念
<servlet-mapping> 标签用于建立 URL 与 Servlet 之间的映射关系,就像是给 URL 和 Servlet 之间设置了一个“暗号”,当用户在浏览器中输入特定的 URL 时,服务器能够根据这个映射关系找到对应的 Servlet 并实行。
URL(Uniform Resource Locator)是同一资源定位符的英文缩写,它是一种用于标识互联网上资源位置的尺度化字符串。简朴来说,URL就是用来告诉盘算机网络中的设备(如浏览器、服务器等)如何找到某个资源(如网页、图片、文件等)的地址。
标签结构及示例
- <servlet-mapping>
- <servlet-name>login</servlet-name>
- <url-pattern>/login</url-pattern>
- </servlet-mapping>
复制代码 子标签含义
- <servlet-name>:这个子标签的值必须与前面 <servlet> 标签中 <servlet-name> 的值相对应,用于指定该映射关系所对应的 Servlet。例如,这里的 login 就对应了前面注册的 login Servlet。
- <url-pattern>:指定用户在浏览器中输入的 URL 模式。当用户访问的 URL 与这个模式匹配时,服务器就会将请求转发给对应的 Servlet 举行处理。例如,/login 表示当用户访问 http://localhost:8080/login 时,服务器会将请求交给 login Servlet 处理。
更多用法示例
- <servlet-mapping>
- <servlet-name>register</servlet-name>
- <url-pattern>/register</url-pattern>
- </servlet-mapping>
复制代码 在这个例子中,当用户访问 http://localhost:8080/register 时,服务器会将请求转发给 register Servlet 举行处理。
URL 模式匹配规则
- 精确匹配:如 /login,只有当用户输入的 URL 完全与之匹配时,才会转发请求。
- 路径匹配:以 / 开头,以 /* 结尾,例如 /user/*,表示所有以 /user/ 开头的 URL 都会匹配该映射。
- 扩展名匹配:以 *. 开头,例如 *.do,表示所有以 .do 结尾的 URL 都会匹配该映射。
三、init-param标签
标签概念
<init-param> 标签用于为 Servlet 提供初始化参数,这些参数可以在 Servlet 初始化时被读取和利用,方便我们对 Servlet 举行设置。
标签结构及示例
- <servlet>
- <servlet-name>configServlet</servlet-name>
- <servlet-class>com.example.ConfigServlet</servlet-class>
- <init-param>
- <param-name>databaseURL</param-name>
- <param-value>jdbc:mysql://localhost:3306/mydb</param-value>
- </init-param>
- <init-param>
- <param-name>username</param-name>
- <param-value>root</param-value>
- </init-param>
- </servlet>
复制代码 子标签含义
- <param-name>:指定参数的名称,用于在 Servlet 中引用该参数。
- <param-value>:指定参数的值。
在 Servlet 中获取初始化参数
在 ConfigServlet 中,我们可以通过以下代码获取初始化参数:
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- public class ConfigServlet extends HttpServlet {
- @Override
- public void init() throws ServletException {
- String databaseURL = getInitParameter("databaseURL");
- String username = getInitParameter("username");
- System.out.println("Database URL: " + databaseURL);
- System.out.println("Username: " + username);
- }
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- // 处理 GET 请求
- }
- }
复制代码 四、load-on-startup标签
标签概念
<load-on-startup> 标签用于指定 Servlet 在服务器启动时是否立即加载和初始化。该标签的值是一个整数,服务器会根据这个整数的大小来决定 Servlet 的加载顺序,数值越小,加载越早。
标签结构及示例
- <servlet>
- <servlet-name>preloadServlet</servlet-name>
- <servlet-class>com.example.PreloadServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
复制代码 标签含义
在这个例子中,preloadServlet 会在服务器启动时立即加载和初始化,由于 <load-on-startup> 的值为 1。如果有多个 Servlet 都设置了 <load-on-startup> 标签,服务器会按照数值从小到大的顺序依次加载这些 Servlet。
总结(核心概念速记):
核心概念速记
Servlet 设置 = 理解 web.xml 标签体系,把握 Servlet 注册、映射、参数与生命周期控制
- 核心标签及作用:
- <servlet>:注册 Servlet,定义名称和类路径,如同 Servlet 的“身份证”。
- <servlet-mapping>:建立 URL 与 Servlet 的映射关系,通过“暗号”实现请求转发。
- <init-param>:为 Servlet 提供初始化参数,支持动态设置。
- <load-on-startup>:控制 Servlet 的加载时机与顺序,优化服务器启动性能。
- 各标签关键特点对比
标署名称主要作用关键子标签示例场景<servlet>注册 Servlet<servlet-name>、<servlet-class>定义 login Servlet 的类路径<servlet-mapping>URL 与 Servlet 绑定<servlet-name>、<url-pattern>将 /login 请求映射到 login Servlet<init-param>初始化参数设置<param-name>、<param-value>设置数据库连接参数<load-on-startup>控制加载顺序与时机<load-on-startup>服务器启动时加载关键 Servlet
- 发展脉络总结
- 基础设置:通过 <servlet> 和 <servlet-mapping> 实现 Servlet 的基本注册与 URL 映射。
- 增强功能:利用 <init-param> 实现参数化设置,通过 <load-on-startup> 优化 Servlet 生命周期。
- 应用场景:从简朴的 Web 应用到复杂的企业级系统,web.xml 标签体系提供了灵活的设置方案。
知识图谱
- Java Servlet(六) Web.xml 标签体系
- ├─ <servlet> 标签
- │ ├─ 注册 Servlet
- │ ├─ 子标签:<servlet-name>、<servlet-class>
- │ └─ 示例:注册 `login` Servlet
- ├─ <servlet-mapping> 标签
- │ ├─ URL 映射关系
- │ ├─ 子标签:<servlet-name>、<url-pattern>
- │ ├─ 匹配规则:精确、路径、扩展名
- │ └─ 示例:映射 `/login` 到 `login` Servlet
- ├─ <init-param> 标签
- │ ├─ 初始化参数
- │ ├─ 子标签:<param-name>、<param-value>
- │ └─ 示例:配置数据库连接参数
- └─ <load-on-startup> 标签
- ├─ 控制加载顺序
- ├─ 数值越小优先级越高
- └─ 示例:服务器启动时加载核心 Servlet
复制代码 关键知识点对比
标签作用维度典范利用场景设置效果<servlet>注册与定位定义 Servlet 类路径服务器识别 Servlet 类<servlet-mapping>请求路由定义 URL 到 Servlet 的映射用户访问 /login 触发对应 Servlet<init-param>参数化设置数据库连接、系统参数Servlet 初始化时读取设置<load-on-startup>生命周期管理预加载关键 Servlet减少首次请求耽误,优化性能 以上就是这篇博客的全部内容,下一篇我们将继续探索 Java-servlet 的更多出色内容。
我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Java-servlet文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_12907265.html?spm=1001.2014.3001.5482
[table][/table]
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |