【Servlet】5:详解响应对象 HttpServletResponse

news2024/11/20 10:33:48

目录

| 响应对象 HttpServletResponse接口

HttpServletResponse的基本概述

响应对象返回 String 给Browser & 中文乱码问题

响应对象返回 int 给Browser

响应对象 解析HTML标签后 返回给Browser


本文章属于后端全套笔记的第三部分

(更新中)【后端入门到入土!】Java+Servlet+JDBC+SSM+SpringBoot+SpringCloud 基础入门_m0_57265007的博客-CSDN博客一篇文章,后端入门到入土。包含 Java基础+高级、MySQL、JDBC、Servlet、SSM、SpringBoot、SpringCloud、项目 的笔记。https://blog.csdn.net/m0_57265007/article/details/127962617?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22127962617%22%2C%22source%22%3A%22m0_57265007%22%7D

| 响应对象 HttpServletResponse接口


HttpServletResponse的基本概述

HttpServletResponse是什么?

  • HttpServletResponse来自于Servlet规范中,是一个接口

  • 实现类由 HTTP服务器(Tomcat)提供

  • HttpServletResponse的实现类对象被称为响应对象

主要功能?

  • 将doGet/doPost方法执行结果写入到【响应体】交给浏览器(即把执行结果以二进制形式写入到【响应体】)

  • 设置响应头中[content-type]属性值,从而控制浏览器使用对应编译器将响应体二进制数据编译为【文字,图片,视频,命令】

  • 设置响应头中【location】属性,将一个请求地址赋值给location,从而控制浏览器向指定服务器发送请求


<a name="响应对象输出不乱码中文"></a>

响应对象返回 String 给Browser & 中文乱码问题

语法

  • 若输出的内容包含中文,则必须对resp对象使用setContentType进行内容类别的指定、编码规则。且需要注意:必须在获取PrintWriter对象前设置!

  • 使用PrintWriter对象 out 进行输出

  • out的 write是按照字节输出,一般用于String。而对于int类型,则需要使用out的按字符输出的print方法。推荐使用print

resp.setContentType("text/html;charset=utf-8");  //设置content-Type中的字符规则为UTF-8,以保证显示到网页为中文
PrintWriter out = resp.getWriter();   //获取输出流
out.write("从前台收到的参数值为" +   strValue);   //write方法,是字节输出流的方法(输出int的时候会按照ASCII码输出)

示例

    <form action="/web3/test1" method="post">
      <input type="text" name="p1">
      <input type="submit" value="测试响应对象返回String">
    </form>

 

public class TestResponse extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //接收测试参数
        req.setCharacterEncoding("utf-8");  //对POST请求体进行UTF-8编码
        String strValue = (String)req.getParameter("p1");  //获取参数值

        //测试返回String
        resp.setContentType("text/html;charset=utf-8");  //设置content-Type中的字符规则,以保证显示到网页为中文
        PrintWriter out = resp.getWriter();
        out.write("从前台收到的参数值为" +   strValue);
    }
}

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>testWeb1</servlet-name>
        <servlet-class>TestResponse</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>testWeb1</servlet-name>
        <url-pattern>/test1</url-pattern>
    </servlet-mapping>

</web-app>

 

 


响应对象返回 int 给Browser

语法

  • out的 write是按照字节输出,一般用于String。而对于int类型,则需要使用out的按字符输出的print方法

  • 在实际开发过程中,都是通过out.print()将真实的数据写入响应体的

示例

web.xml、index.jsp等配置,和上小节一模一样。

public class TestResponse extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");  //设置content-Type中的字符规则,以保证显示到网页为中文
        PrintWriter out = resp.getWriter();

        //测试返回 int
        out.write("测试返回int");
        out.write(50);  //按字节输出,得到的是50的ASCII码对应的字符,输出的是2
        out.print(50);  //按字符输出,得到的是原本的50
    }
}

响应对象 解析HTML标签后 返回给Browser

语法

  • 如果输出语句内含有HTML标签,若直接输出,则由于在默认情况下,conten-type属性的值“text” content-type=“text”

    此时采用的是【文本编译器】对响应体的二进制数据进行解析,无法将其解析为HTML命令而导致原封不动地把HTML标签输出了出来

  • 若想让浏览器解析HTML标签后再显示出来,则可以使用 response.setContentType("text/html");

    指定浏览器采用【编译器】对【响应体中的二进制内容】进行编译处理

  • 这个语法在 响应对象输出不乱码中文 中也使用过

response.setContentType("text/html");

示例

public class TestResponse extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //测试返回String
        resp.setContentType("text/html;charset=utf-8");  //设置content-Type中的字符规则,以保证显示到网页为中文、按HTML标签和text文本编译
        
        //测试输出编译好的HTML标签
        out.print("第一行");
        out.print("</br>");
        out.print("第二行");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UI和UI有什么不同,是如何协助的

UX(用户体验)和UI&#xff08;用户界面&#xff09;是一个常用的术语。然而&#xff0c;尽管有复杂的联系&#xff0c;但网页设计的两个领域是两个不同的东西。事实上&#xff0c;有可能有一个用户界面优秀但用户体验差的网站。因此&#xff0c;了解UX和UI良好的网页设计非常重…

只需要改造一下实体类,以后再也不用写SQL了

文章目录只需要改造一下实体类&#xff0c;以后再也不用写SQL了 现状分析现状示例1. 建立人员表M.T.Person表&#xff0c;包含三个字段名称&#xff0c;年龄&#xff0c;身份证。2. 新增一条数据&#xff0c;也就是插入的情况。3. 获取单条数据内容&#xff0c;也是就是根据ID获…

经济师十大专业通过人数分析!选专业有谱了!

最近&#xff0c;很多同学在后台咨询&#xff0c;哪个专业的好通过&#xff0c;自己要如何选专业…… 小编特别整理了已经公布的各省市2021年初、中级经济师各专业通过情况数据&#xff0c;给大家参考&#xff01; 2022年中级经济专业技术资格考试设《经济基础知识》和《专业知…

让学前端不再害怕英语单词(三)

前两章直通车↓↓↓ 让学前端不再害怕英语单词&#xff08;一&#xff09; 让学前端不再害怕英语单词&#xff08;二&#xff09; 由于前两章都反响强烈&#xff0c;都上了全站的热榜&#xff0c;所以今天打算把第三章也写出来 第三章我们主要讲一下css中的伪类的英语单词还有…

TResNet: ResNet改进,实现高精度的同时保持高 GPU 利用率

终于开题&#xff0c;抓紧发文&#xff0c;然后放飞​​​​​​&#xff0c;来由就是想搞一篇论文&#xff0c;但是增加了某个东西之后吧&#xff0c;速度变慢了&#xff0c;所以导师提议加个这玩意看看能不能快点。 论文题目&#xff1a;TResNet: High Performance GPU-Dedi…

深度剖析商业智能BI中的多维分析

数据在这些年的时间中&#xff0c;也逐渐成长为了个人、机构、企业乃至国家的战略资源&#xff0c;被很多人放到“新时代的石油”这一位置上。虽然这个说法也引起了一些争议&#xff0c;但更多只是讨论数据和石油的差异性&#xff0c;却并没有多少人否认数据的价值&#xff0c;…

开发速查表,一个值得每个程序员收藏的网站

在工作过程中&#xff0c;虽然我们程序员&#xff0c;主要是使用一门语言开发&#xff0c;但免不了会用到其他语言参与其他项目&#xff1b;或者很多全栈工程师&#xff0c;会参与前端的开发调试&#xff1b;总的来说&#xff0c;我们工作过程中&#xff0c;都会涉及到多门编程…

Fluent 嵌套网格(overset)功能讲解与实例操作

作者 | 张杨 在流体仿真中&#xff0c;我们经常会遇到边界运动的问题&#xff0c;如&#xff1a; 生物医疗行业中血管的运动 航空航天行业中飞行器的分离 容积泵中齿轮的相对运动 在ANSYS Fluent 17.0之前的版本中&#xff0c;我们通常采用传统的MDM&#xff08;Moving/D…

【模型训练】YOLOv7车辆和行人检测

YOLOv7车辆和行人检测 1、车辆和行人检测模型训练2、模型评估3、模型和数据集下载网盘链接1、本项目采用YOLOv7算法实现对车辆和行人检测,在几千多张车辆和行人检测中能训练得到,我们训练了YOLOv7、,所有指标都是在同一个验证集上得到; 2、目标类别数:2 ;类别名:person、…

5、网络配置

文章目录5、网络配置5.1 VMware三种模式5.1.1 桥连模式5.1.2 NAT模式5.1.3 仅主机模式5.2 查看网络IP和网关5.2.1 查看虚拟网络编辑器5.2.2 修改虚拟网卡 Ip5.2.3 查看网关5.2.4 查看 windows 环境的中 VMnet8 网络配置5.3 配置网络ip地址5.3.1 ifconfig查看网络接口配置1 基本…

Windows内核--系统调用参数验证(5.1)

内核参数验证的重要性 内核模式之所以有别于用户模式&#xff0c;在于内核模式应该是安全、可信的。用户系统调用可以传入各式各样的参数&#xff0c;可能是代码无意写错或因不预期的内存覆盖"暗地修改"参数&#xff0c;也可能是Hack有意传入&#xff0c;内核都应当妥…

【强化学习论文合集】ICRA-2022 强化学习论文 | 2022年合集(六)

强化学习&#xff08;Reinforcement Learning, RL&#xff09;&#xff0c;又称再励学习、评价学习或增强学习&#xff0c;是机器学习的范式和方法论之一&#xff0c;用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中通过学习策略以达成回报最大化或实现…

生成者(建造者)模式

思考生成者模式 生成者模式就是将对象构建和对象内部构建分离 对象构建&#xff1a;手机的构建 对象内部构建&#xff1a;手机中屏幕和电池的构建 1.生成者模式的本质 生成器模式的本质:分离整体对象构建算法和对象的部件构造。 构建一个复杂的对象&#xff0c;本来就有构建的过…

前端程序员辞掉朝九晚五工作成为独立开发者一年开发出6款软件的故事

一个前端程序员的梦想 作为一个程序员&#xff0c;陈明福的梦想是&#xff1a; 自主自由的工作内容和方式。在全球范围内发展个人品牌和影响力。学习技术和经验&#xff0c;成为 SaaS 软件方面的专家。对世界产生积极影响。财务自由&#xff0c;能提前退休。 他的故事 1、他…

JS 根据某个字段进行排序或分组

JS 数组中根据某个字段进行排序 const arr [ { name: "崔喻琪", age: 32 }, { name: " 王忱景", age: 18 }, { name: " 房真睿", age: 27 }, { name: "姬泉孝", age: 20 }, { name: "余嘉芳", age: 16 }, { na…

Deep Few-Shot Learning for Hyperspectral Image Classification-浅读

这里写目录标题Deep Few-Shot Learning for Hyperspectral Image ClassificationIntroductionMethodExperimentDeep Few-Shot Learning for Hyperspectral Image Classification 我看的第一篇 few-shot learning 文章&#xff0c;记录一下&#xff0c;看看能不能说明few-shot …

学生家乡网页设计作品静态HTML网页—— HTML+CSS+JavaScript制作辽宁沈阳家乡主题网页源码(11页)

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

Python绘制三维图详解

利用Python绘制三维图 目标&#xff1a; 绘制图像z2x2y2z^2 x^2 y^2z2x2y2 import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import Axes3D #绘制3D图案画曲面的第一步是就是要创建一个二维平面的网格&#xff0c;在Python当中&#xff0c;…

设备树_基础知识

设备树 格式 /dts-v1/; // 版本号 / { // /表示根节点string-property "xxx"; // string 类型string-list-property "xxx", "yyy"; // strin…

Linux下的Framebuffer编程

文章目录前言一、LCD操作原理二、代码解析及编写程序的步骤0.定义各类参数1.打开LCD设备节点2.获取触摸屏数据3.mmap映射Framebuffer&#xff0c;在Framebuffer中写入数据三、LCD操作函数解析1.描点函数2.显示字符函数总结前言 本篇文章将会介绍Linux下的Framebuffer编程&…