一文详解Servlet 看这篇就够了

简介: 首先,对我们编程者来说,Servlet就是我们写出来的Java类,只是我们需要按照Servlet规定的规范写。

Servlet是什么?是做什么的?


  😮 首先,对我们编程者来说,Servlet就是我们写出来的Java类,只是我们需要按照Servlet规定的规范写。


  😁 其次,Servlet也是运行在Web服务器端的Java应用程序


我们可以简化一下运行在Web服务器端的Java应用程序的理解:

我们平常写的Java类,都是需要关键字new来实例化的。

而正是由于Servlet是运行在服务器端,并不需要我们new,不需要导入jar包,只需要在WEB-INF目录里面的web.xml文件里面配置一下就可以运行起来了。


  😄 Servlet是用来处理客户端发来的请求的。


 Servlet是一种Java编程语言的特殊类,用于处理Web应用程序中的HTTP请求和响应。它是Java Servlet技术的一部分,这是Java EE(Java Platform, Enterprise Edition)规范的一部分,用于构建强大的、可扩展的Web应用程序。Servlet的名字可能会让人觉得有点陌生,但它在Web开发中起着至关重要的作用,为开发者提供了一种有效、灵活和可靠的方式来处理网络请求和生成动态内容。


 Web应用程序的基础是HTTP协议,它用于在Web浏览器和Web服务器之间传输数据。当您在浏览器中输入一个URL并按下回车键时,浏览器会向Web服务器发送一个HTTP请求,请求特定的资源,如网页、图像或其他文件。这个请求包含了一些信息,例如请求的URL、HTTP方法(通常是GET或POST)以及一些HTTP头部信息。服务器需要根据这些信息来确定如何响应请求,这就是Servlet发挥作用的地方。


 Servlet是一个Java类,它可以接收这个HTTP请求,处理它,并生成一个HTTP响应返回给浏览器。Servlet通常运行在支持Servlet规范的Web服务器上,例如Apache Tomcat或Jetty。当Web服务器接收到HTTP请求时,它会根据请求的URL将请求路由到适当的Servlet。


 此外,Servlet还具有可扩展性和平台无关性的优势。因为它们是基于Java编写的,所以可以在不同的操作系统和Web服务器上运行,而无需修改源代码。这为跨平台开发提供了便利,使得开发者能够构建一次,并在不同环境中部署和运行。


 Servlet通常与JavaServer Pages(JSP)一起使用,以便将动态生成的内容嵌入到HTML页面中。这种组合使得开发者可以更轻松地创建可维护的Web应用程序,将业务逻辑和用户界面分离开来,提高了代码的可读性和可维护性。


Servlet的运行示例


  😁 主要有2步:(代码就不粘了,网上特别多)


  • 先写个servlet类


  • 然后在web.xml文件里面配置一下


  😮 主要介绍一下web.xml文件里面的配置代码:


<servlet>
  <servlet-name>起个名称</servlet-name>
  <servlet-class>xxx.xxx.xxx.xxx(这是你的Servlet文件路径)</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>起个名称</servlet-name>      
  <url-pattern>/xxx/xxx(这是你回头在浏览器里面访问Servlet文件的路径)</url-pattern>   
</servlet-mapping>


  :这是Servlet配置的开始标签。


  :这是Servlet的名称,您可以为Servlet指定一个唯一的名称,以便在其他地方引用它。


  :这是指定Servlet类的完全限定类名(包括包路径)。它告诉Web容器在需要时实例化哪个Java类来处理HTTP请求。


  :这是Servlet映射配置的开始标签。


  :与上面的 匹配,这告诉Web容器将哪个Servlet与URL模式关联起来。


  :这是URL模式,它指定了客户端浏览器将如何访问Servlet。在浏览器中输入这个URL模式将触发与之关联的Servlet的处理。


Servlet的的生命周期


image.png

  🙋问题:如何让servlet在服务器加载时就执行?


  – 在WEB-INF里,添加标签:(里面数字越低,优先级越高)


<load-on-startUp>2</load-on-startUp>

Servlet 的三种创建方式


  • 实现javax.servlet.Servlet接口


  • 继承javax.servlet.GenericServlet(适配器模式)


   –  需要重写service()函数


  • ⭐继承HttpServlet(模板方法设计模式)

    – 一般只需要重写doGet()、doPost()函数


👨‍🎓解释:第三种方法继承了很多类,使用起来非常方便,是平常使用最多的方法


Servlet 进阶知识


Servlet线程安全:不写全局变量,写局部变量


ServletContext对象,类似于application的概念:

1、域对象,整个应用只有一个ServletContext对象,可以使多个servlet共享数据(数据存储为map集合)

2、获取全局配置信息

3、获取资源路径(根据资源的名称获取其路径)



Servlet请求的转发。可以实现把servlet请求转发给另外一个servlet线程。

相关文章
|
存储 算法 NoSQL
还分不清 Cookie、Session、Token、JWT?看这一篇就够了
Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点,接下来就让我们一起看看吧,本文转载至http://juejin.im/post/5e055d9ef265da33997a42cc
47320 13
|
XML 缓存 前端开发
Thymeleaf一篇就够了
Thymeleaf是Springboot官方支持的模板引擎,有着动静分离等独有特点,通过本文简单学习下吧!
62395 24
Thymeleaf一篇就够了
|
存储 前端开发 安全
GET 和 POST 请求:理解它们之间的区别和适用场景
GET 和 POST 请求:理解它们之间的区别和适用场景
|
Java Spring 容器
一文带你深入理解SpringBean生命周期之Aware详解
一文带你深入理解SpringBean生命周期之Aware详解
2138 2
一文带你深入理解SpringBean生命周期之Aware详解
|
Java 数据库连接 数据库
|
XML Java 数据库
探索 Spring Boot 中的 @Configuration 注解:核心概念与应用
【4月更文挑战第20天】在 Spring Boot 项目中,@Configuration 注解扮演了一个关键角色,它标识一个类作为配置源,这些配置用于定义和管理 Spring 应用程序中的 Bean
2408 7
|
缓存 监控 安全
Spring AOP 详细深入讲解+代码示例
Spring AOP(Aspect-Oriented Programming)是Spring框架提供的一种面向切面编程的技术。它通过将横切关注点(例如日志记录、事务管理、安全性检查等)从主业务逻辑代码中分离出来,以模块化的方式实现对这些关注点的管理和重用。 在Spring AOP中,切面(Aspect)是一个模块化的关注点,它可以跨越多个对象,例如日志记录、事务管理等。切面通过定义切点(Pointcut)和增强(Advice)来介入目标对象的方法执行过程。 切点是一个表达式,用于匹配目标对象的一组方法,在这些方法执行时切面会被触发。增强则定义了切面在目标对象方法执行前、执行后或抛出异常时所
16442 4
|
9月前
|
XML JSON Java
SpringMVC详解(全网最全)
### SpringMVC 简介 SpringMVC 是 Spring 框架中的一个模块,用于构建 Web 应用的 MVC 架构。它提供了简洁、优雅的方式来处理 HTTP 请求和响应,支持前后端分离,优化用户体验。 #### 起源与发展 1. **三层架构**:早期的 Servlet 只能处理单一请求,耦合度高,复用性差,整页刷新影响用户体验。 2. **MVC 模式**:部分解耦业务逻辑与视图层,但后端仍负责 View 层,难以应对高并发。 3. **前后端分离**:通过异步调用实现解耦,增强复用性和交互体验。
1485 5
|
存储 Java 数据安全/隐私保护
Spring Boot中实现邮箱登录/注册接口
Spring Boot中实现邮箱登录/注册接口
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
15095 5