Servlet

Servlet概述

Servlet是JavaWeb的三大组件之一,它属于动态资源。
Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:

接收请求数据;
处理请求;
完成响应;

Servlet与JSP

JSP是另外一种方式实现的Servlet,Servlet是JSP的早期版本,JSP更加注重页面的表现,而Servlet中则更注重业务逻辑的实现。

编写的页面显示效果比较复杂时,首选是JSP。或者在开发过程中,HTML代码经常发生变化,而Java代码则相对比较固定时,可以选择JSP。而在处理业务逻辑时,首选则是Servlet。

JSP只能处理浏览器的请求,而Servlet则可以处理一个客户端的应用程序请求。因此,Servlet加强了Web服务器的功能。

Servlet是纯java代码编写,可以方便调用java的其他组件;JSP是将java代码嵌入到HTML代码中,更容易生成复杂的HTML。

Servlet工作原理

在这里插入图片描述
(1) Web服务器(Servlet容器)接收到客户端请求,容器创建“请求和响应”对象,并判断请求的Servlet对象是否存在。
(2) 如果存在,则之间调用此Servlet对象的Service方法(间接调用doPost或doGet等方法),并将“请求和响应”对象作为参数传递。
(3) 如果不存在,容器负责加载Servlet类,创建Servlet对象并实例化,然后调用Servlet的init方法进行初始化,之后调用Service方法。
(4) 在Service方法中,通过请求对象获取客户端提交的数据并处理,然后通过响应对象将处理结果返回给客户端。

Servlet创建过程

在这里插入图片描述

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

Servlet生命周期

初始化阶段:调用init()方法。Servlet对象被创建时,由容器调用此方法对该对象进行初始化。

响应客户请求阶段:调用service()方法。对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的HttpServletRequest对象和HttpServletResponse对象,然后调用 Servlet 的service方法。

终止阶段:当Web应用被终止,或Servlet容器终止运行,或Servlet容器重新装载Servlet的新实例时,Servlet容器会先调用 Servlet的destroy方法。在destroy方法中,可以释放Servlet所占用的资源。

Servlet主要接口及实现类

javax.servlet.Servlet接口

Servlet接口的基本目标是提供生命周期方法
在这里插入图片描述

javax.servlet.ServletConfig接口

用于在初始化时从Servlet容器中读取其他配置信息

getInitParameter(String name):根据给定的初始化参数名,返回匹配的初始化参数值。
getInitParameterNames():返回一个Enumeration对象,里面包含了所有的初始化参数名。
getServletContext():返回一个ServletContext对象。
getServletName():返回Servlet的名字

javax.Servlet.GenericServlet类

实现了javax.servlet.Servlet接口和javax.servlet.ServletConfig接口的抽象类,它处service()方法外的所有接口方法做了缺省实现。
在这里插入图片描述

javax.Servlet.http.HttpServlet类

HttpServlet类是Servlet API提供的一个专用于HTTP协议的类, 该类是GenericServlet类的子类,在GenericServlet类的基础上进行了一些针对HTTP特点的扩充。它提供了对HTTP请求的特殊支持,所以通常我们都会通过继承HttpServlet来完成自定义的Servlet。
在这里插入图片描述

HttpServletRequest和HttpServletResponse接口

分别继承自javax.servletRequest和javax.servletResponse接口

javax.servlet.http.HttpServletRequest接口
在这里插入图片描述
在这里插入图片描述
javax.servlet.http.HttpServletResponse接口
在这里插入图片描述

ServletContext接口(servlet上下文)

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象包含Web应用中所有 Servlet 在 Web 容器中的一些数据信息。ServletContext随着Web应用的启动而创建,随着 Web 应用的关闭而销毁。一个 Web 应用只有一个ServletContext 对象。
ServletContext中不仅包含了 web.xml 文件中的配置信息,还包含了当前应用中所有Servlet可以共享的数据。可以这么说, ServeltContext 可以代表整个应用,所以ServletContext有另外一个名称:application。

Servlet初始化时,Web容器将初始化一给Servlet,当前ServletContext包含在ServletConfig对象;利用上下文对象,可以存储应用级数据(如网站的访问人数),可为所有用户共享。

在Servlet中获取ServletContext对象:

void init(ServletConfig config)中:
ServletContext context =config.getServletContext();
ServletConfig类的getServletContext()方法可以用来获取ServletContext对象;

在GenericeServlet或HttpServlet中获取ServletContext对象:

GenericServlet类有getServletContext()方法,所以可以直接使用this.getServletContext()来获取;

JavaWeb四大域对象

PageContext;
ServletRequest;
HttpSession;
ServletContext;

ServletContext对象方法:
void setAttribute(String name, Object value):用来存储一个对象,也可以称之为存储一个域属性,请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同;

Object getAttribute(String name):用来获取ServletContext中的数据,当前在获取之前需要先去存储才行

void removeAttribute(String name):用来移除ServletContext中的域属性,如果参数name指定的域属性不存在,那么本方法什么都不做;

Enumeration getAttributeNames():获取所有域属性的名称;

Servlet与客户端进行通信

Servlet与客户端的交互主要通过doXXX方法或Service方法中传入的request对象和response对象。
通过request对象不但可以获取客户端提交的信息,还可以获得会话对象session进行会话管理;
通过response对象完成对客户端的响应。

通过request对象获取请求信息以及转发请求

request对象保存了用户的请求信息,通过此对象可以获取用户提交的数据。该对象的使用和JSP的内置对象request的使用方法完全相同。

请求转发或请求包含,都表示由多个Servlet共同来处理一个请求。

RequestDispatcher rd = request.getRequestDispatcher("/BServlet"); 
		rd.forward(request, response) ;
RequestDispatcher rd = request.getRequestDispatcher("/BServlet");
		rd.include (request, response);

在这里插入图片描述

对session进行操作

在Servlet中,容器没有直接将会话对象传入,而是将会话对象绑定到request对象中。在Servlet总要管理会话首先必须通过如下方法来获取会话对象:
public HttpSession getSession() 获得会话对象,若不存在则建立
public HttpSession getSession(boolean create) 获得会话对象,则根据参数create觉得是否建立会话对象,若为true则创建,否则不创建返回一个空对象。得到会话对象后,会话管理和JSP内置对象session相同。
在这里插入图片描述

通过response对象对用户进行响应

JSP和Servlet中都通过response对象来对客户端做出响应的。但Servlet中没有传入输出流对象,若要向客户端输出信息首先要通过response对象获得输出流对象,方法如下:
PrintWriter out = response.getWriter();
在Servlet中,使用out对象向客户端输出信息之前必须执行下面两个方法:
response. setContentType(“text/html;charset=UTF-8”);
设置响应的内容类型和编码,将“UTF-8”指定为工程所采用的编码即可。
response.setCharacterEncoding(“UTF-8”);
设置response对象的编码。
若没有设置相应编码,在浏览器中可能会显示乱码。

对Cookie进行操作

Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。
当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!
在这里插入图片描述
Cookie的创建

Cookie myCookie = new Cookie(“username”,“张三”);

通过response对象使用Cookie

response.addCookie(myCookie);

Cookie对象获取

Cookie[] cookies=request.getCookie();

Cookie不只是有name和value,还有在客户端的有效时间,可以设置Cookie的有效时间。

setMaxAge(int)
该数据集通过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围通常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值通常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛·米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛·米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Ma.01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值