HttpServlet-HttpServletRequest-HttpServletResponse

这篇具有很好参考价值的文章主要介绍了HttpServlet-HttpServletRequest-HttpServletResponse。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.HttpServlet

2.HttpServletRequest

3.HttpServletResponse


本文介绍servlet API的详细情况

重点掌握以下三个类,就可以完成servlet的大部分开发了

1.HttpServlet

2.HttpServletRequest

3.HttpServletResponse

1.HttpServlet

写一个servlet代码,往往是要继承HttpServlet,重写其中的方法

public class HelloServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("你好 worldzd");//显示在浏览器页面上
        System.out.println("hello world");//打印在tomcat控制台上
    }
}

不需要写main方法,tomcat中有main方法,把代码放在tomcat上运行,就相当于把代码插入到tomcat中运行(在一次处理请求的过程中,tomcat完成的大部分工作,剩下的、差异化的工作,由代码实现)

HttpServlet中的方法

方法名称 调用时机
init 在 HttpServlet 实例化之后被调用一次(servelt实例化后自动执行,完成初始化工作)
destroy 在 HttpServlet 实例不再使用的时候调用一次(servlet销毁之前自动执行,完成释放资源工作)
service 收到 HTTP 请求的时候调用(每次收到http请求时自动执行)
doGet 收到 GET 请求的时候调用(由 service 方法调用)
doPost 收到 POST 请求的时候调用(由 service 方法调用)
doPut/doDelete/... 收到其他请求的时候调用(由 service 方法调用)

上述方法,都是在子类中重写的,都不需要手动调用,tomcat在合适的时机会自动调用

经典面试题:servlet的生命周期(什么时间点,做什么事情)

init初始化,service处理请求,destroy销毁、释放资源

前三个方法实际开发中很少用,service一般会被doGet/doPost替代,而关闭tomcat有两种方式①直接关闭tomcat进程,这种情况来不及调用destroy;(更常见的方式)②通过8005管理端口,给tomcat发送停机指令,只有这种情况能执行destroy

2.HttpServletRequest

表示了一个http请求

方法 描述
String getProtocol() 返回请求协议的名称和版本。
String getMethod() 返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。
String getRequestURI() 从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该 请求的 URL 的一部分。
String getContextPath() 返回指示请求上下文的请求 URI 部分。
String getQueryString() 返回包含在路径后的请求 URL 中的查询字符串。
Enumeration getParameterNames() 返回一个 String 对象的枚举,包含在该请求中包含的参数的名 称。
String getParameter(String name) 以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。
String[] getParameterValues(String name) 返回一个字符串对象的数组,包含所有给定的请求参数的值, 如果参数不存在则返回 null。
Enumeration getHeaderNames() 返回一个枚举,包含在该请求中包含的所有的头名。
String getHeader(String name) 以字符串形式返回指定的请求头的值。
String getCharacterEncoding() 返回请求主体中使用的字符编码的名称。
String getContentType() 返回请求主体的 MIME 类型,如果不知道类型则返回 null。
int getContentLength() 以字节为单位返回请求主体的长度,并提供输入流,或者如果 长度未知则返回 -1。
InputStream getInputStream() 用于读取请求的 body 内容. 返回一个 InputStream 对象.

通过这些方法可以获取到一个请求中的各个方面信息

注意:当前拿到的HttpServletRequest是客户端发来的数据,服务器不应当修改,所以这些方法都是“读”方法,而非“写”方法

http请求传递参数有两种方式

①通过query string

HttpServlet-HttpServletRequest-HttpServletResponse,https,http,后端,网络,网络协议

②通过body(post)

下面介绍通过body传递参数的方式

a.通过form表单(body的格式是query string)

b.通过json(body的格式是json)

{
  username:"zhangsan";
  password:"123"
}

json本质上也是键值对

json支持嵌套,某个key的value也可以是另外一个value

{
   key1:{
          key2:{
                key3:123                
                }
        }
}

针对json格式的数据解析和构造,servlet自身不支持,需要引入第三方库(此处使用jackson)

①下载导入jackson到项目中

HttpServlet-HttpServletRequest-HttpServletResponse,https,http,后端,网络,网络协议

②使用jackson

一个类(ObjectMapper 对象映射器),两个方法(readValue writeVaule)

作用:把json字符串映射成java对象(read方法),把java对象映射成json字符串(write方法)

(网络传输中使用json字符串,java代码中使用java对象)

(服务器收到的请求是json字符串,需要把json字符串映射成java对象,再进行逻辑业务处理,处理完成后可能还需要把得到的java对象,映射回json字符串,并通过响应返回

HttpServlet-HttpServletRequest-HttpServletResponse,https,http,后端,网络,网络协议

Request request=objectMapper.readValue(req.getInputStream(),Request.class);

a.通过getInputStream获取到json字符串,再把这个流对象传给readValue

b.把json字符串解析成Map(键值对)

c.把Map转换成java对象

d.得到一个完整的Request对象

String respJson=objectMapper.writeValueAsString(response);

a.通过传入的参数,获取到类对象,通过反射拿到都有哪些属性
b.根据属性的名字拿到属性的值
c.把上述 属性名字 和 属性值 按照 json 格式构造成字符串

3.HttpServletResponse

方法 描述
void setStatus(int sc) 为该响应设置状态码。
void setHeader(String name, String value) 设置一个带有给定的名称和值的 header. 如果 name 已经存在, 则覆盖旧的值.
void addHeader(String name, String value) 添加一个带有给定的名称和值的 header. 如果 name 已经存在, 不覆盖旧的值, 并列添加新的键值对
void setContentType(String type) 设置被发送到客户端的响应的内容类型。
void setCharacterEncoding(String charset) 设置被发送到客户端的响应的字符编码(MIME 字符集)例 如,UTF-8。
void sendRedirect(String location) 使用指定的重定向位置 URL 发送临时重定向响应到客户端。
PrintWriter getWriter() 用于往 body 中写入文本格式数据.
OutputStream getOutputStream()

用于往 body 中写入二进制格式数据.

 

 

 

 

 

 

 

 

 

 

都是 set系列方法

resp.sendError(404,“这是一个错误页面“);

可以通过这个方法在页面上提示错误

(状态码不友好,并不会在页面上直接显示)文章来源地址https://www.toymoban.com/news/detail-860667.html

到了这里,关于HttpServlet-HttpServletRequest-HttpServletResponse的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TM1621/HT1621 段码LCD驱动器

    TM1621和HT1621是兼容的,下面统称TM1621。 TM1621是一个32x4的LCD 驱动器,也就是说它最多能驱动 128 段段码。 四线串行接口 一般我们不使用读数据的功能,所以用到的数据引脚只有/WR、/CS、DATA 先定义使用到的引脚 一些命令参数 下图是手册中的写数据时序图 从以上时序同中我们

    2024年02月11日
    浏览(31)
  • 【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)

    在前后端的交互中,前端通过以下三种方式来与后端进行交互🌟 ✅query string ✅form表单 ✅JSON字符串 下面我们将书写这三种方式的后端代码并进行讲解 QueryString即在url中写入键值对,一般用doGet方法进行交互 代码如下  用postman验证    form表单一般用doPost方法进行交互 Jason是

    2024年01月19日
    浏览(32)
  • HT32合泰单片机开发环境搭建和配置教程

    HT32合泰(Holtek)单片机开发环境搭建安装教程 最近在准备合泰杯的比赛,在看合泰官方的PPT和数据手册学习,顺便做个合泰单片机的开发环境搭建教程。 合泰杯比赛发放的开发板是ESK32-30501,用的单片机是HT32F52352。 合泰杯官网地址:https://url.zeruns.tech/S7xu8 合泰官方HT32F52352授课

    2024年02月02日
    浏览(30)
  • DSP28035驱动HT1621B显示段码LCD屏

         最近做的项目里面使用的控制芯片为TI公司的28035,在控制程序以外,需要用该芯片控制显示LCD屏幕,其中驱动LCD屏幕的是HT1621B芯片,由于这也是我第一次写驱动LCD的程序以及第一次接触1621这款芯片,在网上参考了很多例程,以及对DATASHEET的学习,遇到了一些问题,在

    2024年02月10日
    浏览(37)
  • stm32 MCU液晶TM1622 HT1622驱动调试

    本文使用的例程软件工程代码如下 (1条消息) stm32MCU液晶TM1622HT1622驱动调试,源代码,实际项目使用资源-CSDN文库 HT1622/HT1622G/TM1622是一款常用的LCD驱动芯片 TM1622/HT1622厂家不一样,但是芯片功能基本上一直,硬件上基本上可以做到pin2pin兼容,这个需要根据自己的做微调整 以T

    2024年02月13日
    浏览(33)
  • 手机端运维管理系统——图扑 HT for Web

    随着信息技术的快速发展,网络技术的应用涉及到人们生活的方方面面。其中,手机运维管理系统可提供数字化、智能化的方式,帮助企业和组织管理监控企业的 IT 环境,提高运维效率、降低维护成本、增强安全性、提升服务质量,并支持企业实现数字化转型,满足客户需求

    2024年02月05日
    浏览(32)
  • 图扑 HT for Web 手机端运维管理系统

    随着信息技术的快速发展,网络技术的应用涉及到人们生活的方方面面。其中,手机运维管理系统可提供数字化、智能化的方式,帮助企业和组织管理监控企业的 IT 环境,提高运维效率、降低维护成本、增强安全性、提升服务质量,并支持企业实现数字化转型,满足客户需求

    2024年02月06日
    浏览(30)
  • import javax.servlet.http.HttpServletRequest;HttpServletRequest request多处标红报错,如何解决?

    在做动态网页开发是,一不留神 javax.servlet.http.HttpServletRequest;HttpServletRequest request满屏标红报错。看下图   这是因为项目缺少两个jar依赖,分别是jsp-api.jar和servlet-api.jar ,我们按照如下操作导入即可快速解决。 右键项目--》Properties--》Java Build Path--》Libraries--》Add External JAR

    2024年02月12日
    浏览(33)
  • HT for Web (Hightopo) 使用心得(6)- 3D场景环境配置(天空球,雾化,辉光,景深)

    在前一篇文章《Hightopo 使用心得(5)- 动画的实现》中,我们将一个直升机模型放到了 3D 场景中。同时,还利用动画实现了让该直升机围绕山体巡逻。在这篇文章中,我们将对上一篇的场景进行一些环境上的丰富与美化。让场景更真实一些。具体涉及到的知识点如下: 天空

    2024年02月10日
    浏览(32)
  • Httpservletrequest与Httpservletresponse

    目录 一、Httpservletrequest 1.1什么是Httpservletrequest 1.2Httpservletrequest中的方法 二、Httpservletresponse 1.1什么是Httpservletresponse 1.2Httpservletresponse的方法 HttpServletRequest(请求):该接口封装了HTTP请求的信息,包括请求头、请求参数、请求方法、请求URL等。它提供了方法来获取这些信息

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包