【Javaweb——servlet】配置与生命周期

什么是servlet?

servlet是是JAVAEE规范之一,也就是一个接口。
Servlet(Server Applet)是Java Servlet的简称,而Servlet的英文意为:
在这里插入图片描述
本质上servlet是一个运行再服务器端的Java小程序。
servlet可以接收客户端发来的信息,并响应数据给客户端。

它也是Javaweb三大组件之一(还有filter过滤器,listener监听器)

配置servlet的两种方法:

1.自己在JAVA resource/src的包里面创建一个java文件,然后在web.xml中配置相应信息。(servlet和servlet-mapping)
servlet-mapping的作用
如果url-pattern定义的是路径,那么以后所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理;
如果url-pattern定义的是资源格式例如*.do等,那么对于所有符合这种格式的资源的请求都由指定的servlet处理。
(首先 web.xml 是java web 项目的一个重要的配置文件,但是web.xml文件并不是Java web工程必须的。web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。)
url地址如何定位到servlet访问
在这里插入图片描述
当在浏览器中输入访问地址:http://localhost:8080/06_servlet/hello来访问servlet时

8080是端口号:定位tomcat
从/hello,定位到url-pattern(浏览器访问地址,最好取得规范点),请求都会由servlet-name中定义的servlet处理;然后检查mapping中的name和servlet的name是否相同,如果相同,就执行servlet中的类全名中的文件

什么是url映射?
在这里插入图片描述
2.(比较简单方便)直接在java文件中写注解,urlpatterns就是一个映射,你可以通过映射里面的值访问servlet。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>hello-demo</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标签是给tomcat配置servlet程序 -->
	<servlet>
	<!-- servlet-name是给servlet程序取的别名(一般是类名) -->
		<servlet-name>ServletByhand</servlet-name>
	<!-- servlet-class是程序的全类名 -->
		<servlet-class>com.guigu.servlet.ServletByhand</servlet-class>
	</servlet>
	<servlet-mapping>
		<!--servlet-name的作用是告诉服务器,配置的程序是给那个servlet程序用-->
		<servlet-name>ServletByhand</servlet-name>
		<!-- url-parrern是配置访问地址 -->
		<!--/’代表地址‘http://ip:port/工程路径’  </br>
		/hello代表http://ip:port/工程路径 /hello  </br>
		-->
		
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>

</web-app>

注意:

  1. 两个servlet-name一般都是类名
  2. 约定大于规则:不要乱取名,容易让人看的迷惑.
  3. url-pattern的取名要和程序的名称有关联,让人可以看出其中有联系

GenericServlet类:
是个抽象类,实现了servlet接口和ServletConfig接口,提供了servlet接口中除了service()外的所有方法的实现。所以如果我们用其子类时,需要重写service

javax.servlet.http是对servlet的HTTP扩展,
HttpServlet类:对servlet的扩展,使其适合HTTP协议
HttpServletRequest接口:继承ServletRequest接口,提供了针对HTTP请求的操作方法
HttpServletResponse接口:继承ServletResponse接口,提供了针对HTTP响应的方法

Servlet生命周期:

init():出生、
service():工作、
destroy():销毁
加载和实例化Servlet类,调用init(), 一旦初始化完成,容器从客户收到请求时就将调用它的service()方法,最后容器在servlet实例上调用destroy()方法销毁。

加载和实例化servlet:
对于每个servlet,web容器使用Class.forname()加载和实例化servlet。如果没定义任何构造方法,则编译器将添加默认构造方法,bing实例化成功之后,就进入生命周期。
初始化Servlet
创建Servlet实例后,将只调用init(ServletConfig)一次,ServletConfig包含了在Web应用程序中的初始化参数。我们也可以在web容器启动时或者在第一次被访问时将servlet加载到容器中,并初始化,这就是预初始化,可以在@WebServlet注解的loadOnStartup属性或者在web.xml中的<load-on-startup>中指定。
如果第一次被访问后,才将servlet加载到容器中,就成为延迟加载,可以加快容器的启动速度,但是如果初始化时要完成很多任务,那么第一个发送请求的客户等待时间会很长。
为客户提供服务
初始化成功之后,用户会向容器请求访问Servlet,容器收到请求后,会根据请求中的URL找到正确的Servlet,然后创建HttpServletRequest请求对象,和HttpServletResponse对象,然后创建一个新的线程,将两个对象放进去,有多少个对象就有多少个线程,对象在线程中使用service()产生结果,将结果返回给客户浏览器,然后销毁线程。
销毁和卸载Servlet
等到其它执行Servlet的service()线程结束,容器将调用destroy()方法,释放Servlet的资源,废除之前生命周期的方法。如果Servlet实例被销毁,就会被作为垃圾回收,如果web容器关闭,Servlet也将被销毁和卸载。

小知识:

一个程序可以占用多个端口号
一个端口号只能代表一个程序

参考:https://blog.csdn.net/qq_38263562/article/details/80015082?utm_source=blogxgwz5

ServletJavaEE 规范的一部分,是处理 Web 请求的组件。Servlet 运行在服务器端,能够接收客户端发来的请求,并给客户端响应结果。下面我们来看看 Servlet 的基本概念和使用方法。 ## 一、Servlet 的基本概念 ### 1.1 Servlet生命周期 Servlet生命周期包含以下三个阶段: - 初始化阶段(init):当 Servlet 实例化后,Web 容器会调用其 init() 方法进行初始化操作。在此阶段,Servlet 可以执行一些初始化操作,例如读取配置信息、建立数据库连接等。 - 请求处理阶段(service):当客户端发来请求时,Web 容器会创建一个线程调用 Servlet 的 service() 方法处理请求。在此阶段,Servlet 可以获取请求参数、处理请求并生成响应数据。 - 销毁阶段(destroy):当 Web 应用停止或 Servlet 被卸载时,Web 容器会调用 Servlet 的 destroy() 方法进行清理工作。在此阶段,Servlet 可以释放资源、关闭数据库连接等。 ### 1.2 Servlet配置 在使用 Servlet 时,需要在 web.xml 文件进行配置。以下是一个 Servlet 的基本配置: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> ``` 其servlet-name 表示 Servlet 的名称,servlet-class 表示 Servlet 的类名,url-pattern 表示请求的 URL 匹规则。 ## 二、Servlet 的使用方法 ### 2.1 编写 Servlet 编写 Servlet 有两种方法:一种是继承 HttpServlet 类,另一种是实现 Servlet 接口。这里以继承 HttpServlet 类为例: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 GET 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 POST 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } } ``` 在 Servlet ,doGet() 方法用于处理 GET 请求,doPost() 方法用于处理 POST 请求。通过调用 HttpServletResponse 对象的 getWriter() 方法可以向客户端返回响应数据。 ### 2.2 部署 Servlet 将编写好的 Servlet 部署到 Web 容器,有两种方法:一种是将 Servlet 类打成 war 包放到 Web 容器的 webapps 目录下,另一种是通过 Eclipse 等开发工具将 Servlet 部署到 Web 容器。部署完成后,可以通过访问 Servlet 的 URL 来测试 Servlet 是否正常工作。 ## 三、总结 本文介绍了 Servlet 的基本概念和使用方法。ServletJava Web 开发非常重要的组件,掌握 Servlet 的使用方法对于 Java Web 开发人员来说是必不可少的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值