码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Servlet】5:详解响应对象 HttpServletResponse


    目录

    | 响应对象 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,从而控制浏览器向指定服务器发送请求


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

    语法

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

    • 使用PrintWriter对象 out 进行输出

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

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

    示例

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

     

    1. public class TestResponse extends HttpServlet {
    2. @Override
    3. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    4. //接收测试参数
    5. req.setCharacterEncoding("utf-8"); //对POST请求体进行UTF-8编码
    6. String strValue = (String)req.getParameter("p1"); //获取参数值
    7. //测试返回String
    8. resp.setContentType("text/html;charset=utf-8"); //设置content-Type中的字符规则,以保证显示到网页为中文
    9. PrintWriter out = resp.getWriter();
    10. out.write("从前台收到的参数值为" + strValue);
    11. }
    12. }

     

    1. "1.0" encoding="UTF-8"?>
    2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0">
    6. <servlet>
    7. <servlet-name>testWeb1servlet-name>
    8. <servlet-class>TestResponseservlet-class>
    9. servlet>
    10. <servlet-mapping>
    11. <servlet-name>testWeb1servlet-name>
    12. <url-pattern>/test1url-pattern>
    13. servlet-mapping>
    14. web-app>

     

     


    响应对象返回 int 给Browser

    语法

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

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

    示例

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

    1. public class TestResponse extends HttpServlet {
    2. @Override
    3. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    4. resp.setContentType("text/html;charset=utf-8"); //设置content-Type中的字符规则,以保证显示到网页为中文
    5. PrintWriter out = resp.getWriter();
    6. //测试返回 int
    7. out.write("测试返回int");
    8. out.write(50); //按字节输出,得到的是50的ASCII码对应的字符,输出的是2
    9. out.print(50); //按字符输出,得到的是原本的50
    10. }
    11. }

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

    语法

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

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

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

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

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

    response.setContentType("text/html");

    示例

    1. public class TestResponse extends HttpServlet {
    2. @Override
    3. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    4. //测试返回String
    5. resp.setContentType("text/html;charset=utf-8"); //设置content-Type中的字符规则,以保证显示到网页为中文、按HTML标签和text文本编译
    6. //测试输出编译好的HTML标签
    7. out.print("第一行");
    8. out.print("
      "
      );
    9. out.print("第二行");
    10. }
    11. }

  • 相关阅读:
    Dubbo 与 Spring Cloud 完美结合
    OpenGL原理与实践——核心模式(六):光照贴图、光源分类以及多光源场景主要源码实现
    如何调试一个C++程序?以Visual Studio 2019为例的保姆级教程。
    中国医疗器械在“一带一路”国家贸易状况及贡献度分析
    AppScan ——证书安装和登入绕过
    js中创建对象的5种方法
    Msql_流程控制case
    Actipro WPF Controls 2022.1.2
    【Vue-Element】好用的音频组件
    以太坊合并升级的全面介绍
  • 原文地址:https://blog.csdn.net/m0_57265007/article/details/128005880
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号