动态 WEB 开发核心-Servlet详细分析

简介: 动态 WEB 开发核心-Servlet详细分析

动态 WEB 开发核心-Servlet

官方文档

1 地址: https://tomcat.apache.org/tomcat-8.0-doc/servletapi/index.html

2 离线文档: JAVA_EE_api_中英文对照版.chm

3 Servlet 和 Tomcat 的关系: 一句话, Tomcat 支持 Servlet

对Java Web 技术体系的流程图改造说明(细化).[整体的概念]

什么是 Servlet

Servlet 在开发动态 WEB 工程中,得到广泛的应用,掌握好 Servlet 非常重要了, Servlet(基石)是 SpringMVC 的基础

Servlet(java 服务器小程序),它的特点:

1. 他是由服务器端调用和执行的(一句话:是Tomcat解析和执行)

2. 他是用java语言编写的, 本质就是Java类

3. 他是按照Servlet规范开发的(除了tomcat->Servlet weblogic->Servlet)

4. 功能强大,可以完成几乎所有的网站功能(在以前,老程员,使用Servlet开发网站) 技术栈要求高

Servlet 在 JavaWeb 项目位置

Servlet 基本使用

Servlet 开发方式说明

1. servlet3.0 前使用 web.xml , servlet3.0 版本以后(包括 3.0)支持注解,同时支持 web.xml配置

2. 如何查看 servlet 版本[如

编写类HelloServlet去实现 Servlet 接口

1. import javax.servlet.*;
2. import javax.servlet.http.HttpServletRequest;
3. import java.io.IOException;
4. public class HelloServlet implements Servlet {
5. @Override
6. public void init(ServletConfig servletConfig) throws ServletException {
7. //System.out.println("init...~~~");
8.     }
9. 
10. @Override
11. public ServletConfig getServletConfig() {
12. return null;
13.     }
14. 
15. /**
16.      * service 方法是专门用来处理请求和响应的
17.      *
18.      * @param servletRequest
19.      * @param servletResponse
20.      * @throws ServletException
21.      * @throws IOException
22.      */
23. @Override
24. public void service(ServletRequest servletRequest, ServletResponse servletResponse)
25. throws ServletException, IOException {
26. //System.out.println("HelloServlet 被访问" + servletRequest.getClass());
27. // 类型转换(因为它有 getMethod()方法)
28. HttpServletRequest httpServletRequest = (HttpServletRequest)
29.                 servletRequest;
30. // 获取请求的方式
31. String method = httpServletRequest.getMethod();
32. if ("GET".equals(method)) {
33.             doGet();
34.         } else if ("POST".equals(method)) {
35.             doPost();
36.         }
37.     }
38. 
39. /**
40.      * 处理浏览器 get 请求
41.      */
42. public void doGet() {
43.         System.out.println("处理 get 请求");
44.     }
45. 
46. /**
47.      * 处理浏览器 post 请求
48.      */
49. public void doPost() {
50.         System.out.println("处理 post 请求");
51.     }
52. 
53. @Override
54. public String getServletInfo() {
55. return null;
56.     }
57. 
58. @Override
59. public void destroy() {
60.         System.out.println("destroy 被调用...");
61.     }
62. }

在web.xml配置HelloServlet,

即:给HelloServlet 提供对外访问地址

通过浏览器访问HelloServlet ,看是否正确(记住要redeploy[快] 或者 restar[慢])

浏览器调用 Servlet 流程分析

通过继承 HttpServlet 开发 Servlet

● HttpServlet 介绍

在实际项目中,都是使用继承 HttpServlet 类开发 Servlet 程序,更加方便

代码演示

1. import javax.servlet.ServletException;
2. import javax.servlet.http.HttpServlet;
3. import javax.servlet.http.HttpServletRequest;
4. import javax.servlet.http.HttpServletResponse;
5. import java.io.IOException;
6. 
7. public class HiServlet extends HttpServlet {
8. //重写 HttpServlet 的 doGet 和 doPost
9. //alt +insert
10. /**
11.      * 处理 doGet 请求
12.      * @param req
13.      * @param resp
14.      * @throws ServletException
15.      * @throws IOException
16.      */
17.     @Override
18.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
19.             throws ServletException, IOException {
20. System.out.println("HiServlet doGet()...");
21.     }
22. /**
23.      * 处理 doPost
24.      * @param req
25.      * @param resp
26.      * @throws ServletException
27.      * @throws IOException
28.      */
29.     @Override
30.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
31.             throws ServletException, IOException {
32. System.out.println("HiServlet doPost()...");
33.     }
34. }

配置 web.xml

1. <servlet>
2. <servlet-name>HiServlet</servlet-name>
3. <servlet-class>com.servlet.HiServlet</servlet-class>
4. </servlet>
5. <servlet-mapping>
6. <servlet-name>HiServlet</servlet-name>
7. <url-pattern>/hiServlet</url-pattern>
8. </servlet-mapping>

Servlet 注意事项和细节

1. Servlet 是一个供其他 Java 程序(Servlet 引擎)调用的 Java 类,不能独立运行

2. 针对浏览器的多次 Servlet 请求,通常情况下,服务器只会创建一个 Servlet 实例对象,也就是说 Servlet 实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web 容器退出/或者 redeploy 该 web 应用,servlet 实例对象才会销毁 【示意图】

3. 在 Servlet 的整个生命周期内,init方法只被调用一次。而对每次请求都导致 Servlet 引擎调用一次 servlet 的 service 方法

4. 对于每次访问请求,Servlet 引擎都会创建一个新的 HttpServletRequest 请求对象和一个新的 HttpServletResponse 响应对象,然后将这两个对象作为参数传递给它调用的 Servlet的 service()方法,service 方法再根据请求方式分别调用 doXXX 方法

5. 如果在<servlet>元素中配置了一个<load-on-startup>元素,那么 WEB 应用程序在启动时,就会装载并创建 Servlet 的实例对象、以及调用 Servlet 实例对象的 init()方法


目录
相关文章
|
18天前
|
开发框架 缓存 前端开发
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
基于SqlSugar的开发框架循序渐进介绍(23)-- Winform端管理系统中平滑增加对Web API对接的需求
|
20天前
|
安全 IDE 编译器
深入理解PHP 7的新特性及其对现代Web开发的影响
【7月更文挑战第30天】本文将深入探索PHP 7版本中引入的关键新特性,并分析这些改进如何优化现代Web开发实践。通过对比PHP 5和PHP 7的性能差异,我们将揭示PHP 7如何提升应用响应速度和资源利用效率。此外,本文还将讨论PHP 7对开发者工作流程的影响,包括新的语言特性、错误处理机制以及内置函数的增强,旨在为读者提供全面了解PHP 7所带来的变革性影响。
|
2天前
|
人工智能 自然语言处理 搜索推荐
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
人工智能(AI)、Web 3.0和元宇宙作为当前科技领域的热门话题,它们之间存在着紧密的联系,并在各自领域内展现出广泛的应用和未来的发展趋势。以下是对这三者联系、应用及未来发展趋势的详细分析
10 2
【人工智能】人工智能(AI)、Web 3.0和元宇宙三者联系、应用及未来发展趋势的详细分析
|
1天前
|
缓存 前端开发 JavaScript
高效开发现代 Web 应用:从前端到后端的最佳实践
在开发现代 Web 应用时,前端和后端技术的选择对项目的性能、可维护性和用户体验至关重要。本文将探讨如何通过现代工具和框架来优化前端和后端开发流程。我们将分析前端技术(如 React 和 Vue.js)与后端技术(如 Node.js 和 Django)的集成,并提供实际案例来展示如何实现高效开发。无论是对新手还是经验丰富的开发者,本指南都提供了宝贵的洞见和实用的技巧,以帮助提高开发效率并构建出色的 Web 应用。
|
5天前
|
开发框架 前端开发 JavaScript
C/S、B/S、Web的介绍(Web应用开发)
这篇文章介绍了C/S(客户端/服务器)和B/S(浏览器/服务器)两种架构,以及Web应用开发的基本原理、客户端和服务器端的应用技术。
C/S、B/S、Web的介绍(Web应用开发)
|
14天前
|
安全 前端开发 JavaScript
PHP在现代Web开发中的角色和挑战
【8月更文挑战第5天】随着技术的不断进步,PHP作为一门经典的服务器端脚本语言,在现代Web开发中扮演着重要角色。本文将探讨PHP的发展历程、它在当前Web开发环境中的地位、面临的主要挑战以及未来可能的发展方向。
|
18天前
|
移动开发 开发框架 小程序
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
|
4天前
|
移动开发 小程序 前端开发
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
跨端技术演进问题之Web容器方案在跨端开发中的优势和不足如何解决
|
10天前
|
存储 数据可视化 前端开发
Web Audio API 第5章 音频的分析与可视化
Web Audio API 第5章 音频的分析与可视化

热门文章

最新文章