当前位置: 首页 > news >正文

java # Servlet

一、什么是Servlet?

Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是:Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序,它可以接收客户端发送来的请求,并响应数据给客户端。

二、Servlet的生命周期

  1. 执行Servlet构造器方法(只在第一次创建Servlet程序会调用)
  2. 执行init初始化方法(只在第一次创建Servlet程序会调用)
  3. 执行service方法(每次访问都会调用)
  4. 执行destroy销毁方法(在web工程停止的时候调用)

三、实现Servlet程序(2种方法)

方法1:实现Servlet接口(不常用)

  • 编写一个类去实现Servlet接口;在src目录下创建
  • 实现service方法,处理请求,并响应数据;需要根据getMethod方法,来区分get,post请求。
  • 在web.xml中去配置servlet程序的访问地址;
    • <servlet>
      • <servlet-name>:Servlet程序起的别名。一般为类名。
      • <servlet-class>:Servlet程序的全类名。
    • <servlet-mapping>
      • <servlet-name>:Servlet程序起的别名。一般为类名。
      • <url-pattern>:配置访问地址。

方法2:继承HttpServlet类(常用)

  • 编写一个类去继承HttpServlet类;在src目录下创建。
  • 根据业务需要重写doGet或doPost方法。
  • 在web.xml中去配置servlet程序的访问地址。

四、ServletConfig类

  • ServletConfig是Servlet程序的配置信息类。
  • Servlet程序的配置信息,web.xml中<servlet>标签中的信息(属于每个Servlet,而不是整个web工程)。
    • <servlet-name> Servlet程序的别名。
    • <init-param> Servlet程序的初始化参数。
  • Servlet程序 & ServletConfig对象的创建。
    • Servlet程序和ServletConfig对象都是由Tomcat负责创建。
    • Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创一个对应的ServletConfig对象。
      • 一个Servlet程序对应一个ServletConfig对象
      • 通过当前ServletConfig对象,不可以获取其他Servlet程序的配置信息。

注意:

  1. 通过getSevletConfig()获取ServletConfig对象
  2. 重写init方法,一定要调用父类GenericServlet的init方法

ServletConfig的作用:

  • 获取Servlet程序的别名<servlet-name>的值 getServletname()
  • 获取初始化参数<init-param> getInitParameter(name)
  • 获取ServletConfig对象 servletConfig.getServletContext()

五、ServletContext类

一、什么是ServletContext?

  • ServletContext是一个接口,它表示Servlet上下文对象
  • 在web.xml中<context-param>中配置Servlet上下文信息,不单独属于某个<servlet>,在所有<servlet>外面
  • 一个web工程,只有一个ServletContext对象实例
  • ServletContext对象作用域是整个web工程

二、ServletContext生命周期

ServletContext对象在工程部署启动时创建,在工程停止时销毁。

三、ServletContext作用

  1. 获取web.xml中配置的上下文参数context-param getInitParameter(name)
  2. 获取当前的工程路径,格式:/工程路径 getContextPath()
  3. 获取工程部署后在服务器硬盘上的绝对路径 getRealPath("/")
  4. 像Map一样存取数据
    1. setAttribute("key","value")
    2. getAttribute("key")

六、HTTP协议

一、什么是HTTP协议

HTTP协议是指客户端与服务器之间通信时,发送的数据需要遵守的规则

二、Get请求&Post请求

常见的Get请求:

  • form标签method=get
  • a标签
  • link标签引入css
  • Script标签引入js文件
  • img标签引入图片
  • iframe引入html页面
  • 在浏览器地址栏中输入地址后敲回车

常见的Post请求:

  • form标签method=post

三、常用响应码

  • 200:表示请求成功
  • 302:表示请求重定向
  • 404:数据不存在(请求地址错误)
  • 500:服务器内部错误(代码错误,比如Servlet中分母为0)

七、HttpServletRequest类

作用:获取到所有的请求信息,Tomcat服务器会把请求过来的HTTP协议信息解析封装好到Request对象中。然后传递到service方法(doget和doPost)中给我们使用。

1、如何请求获取参数

req.getParameter(name);

2、POST请求的中文乱码解决

req.setCharacterEncoding("UTF-8")

3、请求转发

请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作

请求转发的特点:

  • 浏览器地址栏不会改变
  • 他们是一次请求
  • 他们共享request域中的数据
  • 可以转发到WEB-INF目录下
  • 不可以访问工程以外的资源

req.getRequestDispather("待转发的Servlet路径").forward(req.resp);

4、web中/斜杠的不同意义

  • 在web中/斜杠是一种绝对路径
  • /斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
  • /斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径

特殊情况:

response.sendRedict("/");把斜杠发送给浏览器解析,得到http://ip:port/

八、HTTPServletRespons类

1、HTTPServletRespons类的作用

表示所有响应的信息。用来设置返回给客户端的信息

2、如何往客户端回传数据

        1、通过输出往客户端回传数据信息(2种流)

  • 字节流:getOutputStream(); 常用于下载(传递二进制数据);
  • 字符流:getWriter();常用于回传字符串(常用);

        2、解决响应的中文乱码

        resp.setContentType("text/html;charset=UTF-8");

  • 同时设置服务器和客户端都使用utf-8字符集,还设置了响应头
  • 一定要在获取流对象之前使用才有效。

        3、请求重定向

        resp.sendRedirect("http://localhost:8080");

特点:

  1. 浏览器地址栏会改变
  2. 他们是两次请求
  3. 不共享request域中的数据
  4. 不能访问WEB_INF目录下
  5. 可以访问工程以外的资源,如www.baidu.com

相关文章:

java # Servlet

一、什么是Servlet&#xff1f; Servlet是javaEE规范之一。规范就是接口。JavaWeb三大组件分别是&#xff1a;Servlet程序、Filter过滤器、Listener监听器。Servlet是运行在服务器上的一个Java小程序&#xff0c;它可以接收客户端发送来的请求&#xff0c;并响应数据给客户端。…...

Linux内核的两种安全策略:基于inode的安全与基于文件路径的安全

实现系统安全的策略 在Linux中&#xff0c;一切且为文件&#xff0c;实现系统安全的策略主要可分为两种&#xff1a;基于inode的安全、基于文件路径的安全。 基于inode的安全 为文件引入安全属性&#xff0c;安全属性不属于文件内容&#xff0c;它是文件的元数据&#xff0c…...

有哪些前端开发工具推荐? - 易智编译EaseEditing

在前端开发中&#xff0c;有许多工具可以帮助你更高效地进行开发、调试和优化。以下是一些常用的前端开发工具推荐&#xff1a; 代码编辑器/集成开发环境&#xff08;IDE&#xff09;&#xff1a; Visual Studio Code&#xff1a;功能强大、轻量级的代码编辑器&#xff0c;支…...

【JAVA】抽象类与接口

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; 抽象类与接口 1. 抽象类1.1 抽象类的概念…...

人脸图像处理

1,人脸图像与特征基础 人脸图像的特点 规律性: 人的两只眼睛总是对称分布在人脸的上半部分,鼻子和嘴唇中心点的连线基本与两眼之间的连线垂直,嘴绝对不会超过眼镜的两端点(双眼为d,则双眼到嘴巴的垂直距离一般在0.8-1.25) 唯一性 非侵扰与便利性 可扩展性 人脸图像的应用 身份…...

Docker入门——实战图像分类

一、背景 思考&#xff1a; 在一个项目的部署阶段&#xff0c;往往需要部署到云服务器或者是终端设备上&#xff0c;而环境的搭建往往是最费时间和精力的&#xff0c;特别是需要保证运行环境一致性&#xff0c;有什么办法可以批量部署相同环境呢&#xff1f; Docker本质——…...

【HarmonyOS北向开发】-02 第一个程序测试

飞书原文档链接&#xff1a;Docs...

关于小程序收集用户手机号行为的规范

手机号在日常生活中被广泛使用&#xff0c;是重要的用户个人信息&#xff0c;小程序开发者应在用户明确同意的前提下&#xff0c;依法合规地处理用户的手机号信息。 而部分开发者在处理用户手机号过程中&#xff0c;存在不规范收集行为&#xff0c;影响了用户的正常使用体验&a…...

js判断手指的上滑,下滑,左滑,右滑,事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动

js判断手指的上滑&#xff0c;下滑&#xff0c;左滑&#xff0c;右滑&#xff0c;事件监听 和 判断鼠标滚轮向上滚动滑轮向下滚动 pc端 判断鼠标滚轮向上滚动滑轮向下滚动 const scrollFunc (e) > { e e || window.event; let wheelDelta e.wheelDelta ? e.wheelDelta…...

ES 一些简单 的查询注意事项

term query 不分词字段 带分数 where namexxx filter 分词字段 不分词字段 不带分数 Terms query 所有类型 带分数 where name in(xxx) Range query where name between xxx and xxx Exists Regexp Match query 分词字段/基础字段 Multi-match query 多个分词字段/基础字段 Boo…...

LeetCode //C - 57. Insert Interval

57. Insert Interval You are given an array of non-overlapping intervals intervals where intervals[i] [ s t a r t i , e n d i start_i, end_i starti​,endi​] represent the start and the end of the i t h i^{th} ith interval and intervals is sorted in asce…...

android手势事件

与手势事件有关的方法 dispatchTouchEvent()&#xff1a;该方法将触摸事件分发给相应的视图或视图组。onInterceptTouchEvent()&#xff1a;该方法用于判断是否需要拦截触摸事件&#xff0c;如果需要拦截&#xff0c;则返回 true&#xff0c;否则返回 false。onTouchEvent()&a…...

[网络安全学习篇01]:windowsxp、windows2003、windows7、windows2008系统部署(千峰网络安全视频笔记)

VM 虚拟机&#xff1a;VMware Workstation 15.5 PRO&#xff08;建议升至最高版本&#xff09; 部署windows-xp系统 一、配置虚拟机硬件并安装系统 1、在VMware文件目录下创建一个空文件夹将其命名位&#xff1a;winxp-1 2、打开VMware软件&#xff0c;点击创建新的虚拟机。…...

CANoe自动化工程的搭建

基于XMLCAPL建立自动化工程 1、导入ini文件2、新建 Test Environment3、报告类型4、代码编写 1、导入ini文件 工程的配置的文件&#xff0c;配置DUT相关信息&#xff0c;具体视工程而编写内容。 2、新建 Test Environment 1、新建XML测试用例环境 2、导入XML测试用例文件 …...

第6章:支持向量机

间隔与支持向量 w为法向量&#xff0c;决定的是超平面的方向。b是偏移项&#xff0c;决定了超平面与原点之间的距离。 为什么最大化间隔&#xff0c;得到的就是最优平面呢&#xff1f; 当超平面没有正确划分正负样本时&#xff0c;几何间隔为负数。几何间隔&#xff0c;各个…...

ROS机器人启动move base时代价地图概率性无法加载的原因及解决方法

最近&#xff0c;使用ROS机器人&#xff0c;在启动move_base 节点时&#xff0c;概率性会出现全局和局部代价地图不加载的问题&#xff0c;此时&#xff0c;发布目标点也无法启动路径规划。而且该问题有时候出现概率很低&#xff0c;比如启动10次&#xff0c;会有1次发送该情况…...

快速上手PyCharm指南

PyCharm简介 PyCharm是一种Python IDE&#xff08;Integrated Development Environment&#xff0c;集成开发环境&#xff09;&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具&#xff0c;比如调试、语法高亮、项目管理、代码跳转、智能提示、自动…...

数字图像处理 - 图像处理结合机器学习的应用示例

在本文中,特别关注树叶分类机器学习技术的实现。我们的目标是演示如何利用机器学习算法来分析一系列叶子照片,从而实现准确分类并提供对植物领域有价值的算法。 图像处理中机器学习的本质 机器学习使计算机能够学习模式并根据视觉数据进行预测,彻底改变了图像处理领域。在叶…...

Linux命令200例:zip和unzip用于压缩和解压文件(常用)

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;全栈领域新星创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &…...

通过 HttpClient 发送请求

文章目录 1. 引入 maven 依赖2. 发送 GET 方式的请求3. 发送 POST 方式的请求 1. 引入 maven 依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId> </dependency>2. 发送 GET 方式的请求…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——假言——第二节 必要条件假言+第三节 特殊假言

文章目录 第二节 必要条件假言命题-才真题(2018-26)-假言-必要假言-才-(1)建模-“才”-后推前。-(2)A→B的公式化转换-A→B的等价命题:①逆否命题:非B→非A。真题(2020-26)-假言-必要假言-才-(1)建模-“才”-后推前。-(2)A→B的公式化转换-A→B的等价命题:①逆…...

算法笔记:A*算法

A*算法是一种很常用的路径查找和图形遍历算法。它有较好的性能和准确度 1 中心思路 A*算法通过下面这个函数来计算每个节点n的优先级 f(n)g(n)h(n) f(n)是节点n的综合优先级。当选择下一个要遍历的节点时&#xff0c;总会选取综合优先级最高&#xff08;f(n)值最小&#xff0…...

postgresql 分类排名

postgresql 分类排名 排名窗口函数示例CUME_DIST 和 NTILE 排名窗口函数 排名窗口函数用于对数据进行分组排名。常见的排名窗口函数包括&#xff1a; • ROW_NUMBER&#xff0c;为分区中的每行数据分配一个序列号&#xff0c;序列号从 1 开始分配。 • RANK&#xff0c;计算每…...

TCP服务器实现—多进程版,多线程版,线程池版

目录 前言 1.存在的问题 2.多进程版 3.多线程版 4.线程池版 总结 前言 在上一篇文章中使用TCP协议实现了一个简单的服务器&#xff0c;可以用来服务端和客户端通信&#xff0c;但是之前的服务器存在一个问题&#xff0c;就是当有多个客户端连接服务器的时候&#xff0c;服…...

Nginx 配置文件的完整指南 (二)

文章目录 四、反向代理配置4.1 proxy_pass效果1—路径重写效果2—转发到其他服务器 4.2 proxy_pass使用规则4.3 proxy_set_header4.3.1 修改请求协议 五、负载均衡配置5.1 upstream5.2 server5.3 负载均衡策略5.3.1 轮询5.3.2 加权轮询5.3.3 最少连接5.3.3 ip_hash&#xff1a;…...

AI夏令营第三期 - 基于论文摘要的文本分类与关键词抽取挑战赛笔记

赛题&#xff1a;基于论文摘要的文本分类与关键词抽取 背景&#xff1a;高效的从海量医学文献中提取疾病诊断和治疗关键信息 任务&#xff1a;通过论文摘要判断论文是否为医学文献 样例 数据集&#xff1a;csv文件&#xff0c;字段&#xff1a;标题、作者、摘要、关键词 评价指…...

使用qsqlmysql操作mysql提示Driver not loaded

环境: win10 IDE: qt creator 编译器: mingw32 这里简单的记录下。我遇到的情况是在IDE使用debug和release程序都是运行正常&#xff0c;但是当我编译成发布版本之后。老是提示Driver not load。 这就很奇诡了。 回顾了下编译的时候是需要在使用qt先编译下libqsqlmysql.dll的…...

Java云原生框架Quarkus初探

Java云原生框架Quarkus初探 Quarkus 介绍 Quarkus 是一个云原生&#xff0c;容器优先的Java应用框架&#xff0c;它号称是超音速和亚原子的框架&#xff0c;主要特点是构建速度、启动速度快和占用资源少等特点。它为OpenJDK HotSpot和GraalVM量身定制&#xff0c; 根据Java库和…...

ElasticSearch相关概念

文章目录 前提倒排索引MySQL、ES的区别和关联IK分词器索引库mapping属性索引库的crud 文档的crudRestClientDSL查询DSL 查询种类DSL query 基本语法 搜索结构处理排序分页高亮RestClient 前提 开源的搜索引擎&#xff0c;从海量数据中快速找到需要的内容。&#xff08;分词检索…...

微服务实战项目-学成在线-项目部署

微服务实战项目-学成在线-项目部署 1 什么是DevOps 一个软件的生命周期包括&#xff1a;需求分析阶、设计、开发、测试、上线、维护、升级、废弃。 通过示例说明如下&#xff1a; 1、产品人员进行需求分析 2、设计人员进行软件架构设计和模块设计。 3、每个模块的开发人员…...