JSP入门——response对象

340 阅读2分钟

「这是我参与11月更文挑战的第27天,活动详情查看:2021最后一次更文挑战

前言

大家好,我是程序猿小白 gw_Gw,很高兴能和大家一起学习进步。

以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。

摘要

本文主要介绍JSP脚本中的9个内置对象中的response对象。

1. reponse对象

先前我们已经说了Web应用是请求和响应的架构,前面我们已经说了请求(request),本篇我们来说一说响应(response).

response是HttpServletResponse的实例,主要用于向客户端发送非字符文件(图片,音频等),重定向和增加Cookie。

1.1 向客户端发送非字符文件

通常我们会使用out对象来输出内容,但是对于非字符文件out对象就无能为力了。这时我们就要借助response对象。

response中有一个方法:ServletOutputStream getOutputStream()方法,该方法返回客户端的输出流对象。

实例展示:

<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="java.awt.*" %>
<%@ page import="javax.imageio.ImageIO" %>
<%@ page contentType="image/png" language="java" pageEncoding="UTF-8" errorPage="ErrorHandlePage.jsp" %>
<!DOCTYPE html>
<html>
<head>
  <title>JSP - Hello World</title>
</head>
<body>
<%
  BufferedImage bufferedImage = new BufferedImage(340, 160, BufferedImage.TYPE_INT_RGB);
  Graphics graphics = bufferedImage.getGraphics();
  graphics.fillRect(0,0,400,200);
  graphics.setColor(Color.BLUE);
  graphics.drawString("dsajfkhasjf",50,50);
  graphics.dispose();
  ImageIO.write(bufferedImage,"png",response.getOutputStream());
%>
​
</body>
</html>

image-20211129212647860

1.2 重定向

response对象还可以帮助我们进行重定向。

这里要区分重定向和转发的区别。

重定向:重新进行了一次请求,不能在获得上一个请求的所有内容,地址栏内的地址也会发生改变。

转发:转发并没有改变请求,可以获得仍能获得该请求的内容,地址栏内的地址也不会改变。

对于response来说,重定向使用sendRedirect()方法。

response.sendRedirect("1.jsp");

参数可以是一个网址也可是一个JSP页面。

1.3 增加Cookie

Cookie其实就是一个和网站相关的文本文件,这个文本文件很小,通常只有4K大小。里面可以用来存放用户的信息,以便网站能对用户提供更好的服务,例如10天免登录,浏览历史等等。

Cookie是有生存期限的,默认情况下Cookie只存在与浏览器的内存里,当关闭浏览器时Cookie就消失,但是我们可以通过设置Cookie的生存期来将Cookie保存到本地硬盘中。

添加Cookie的流程:

  1. 创建Cookie
  2. 设置Cookie的生命周期
  3. 向客户端添加Cookie

实例展示:

<%
    String userName = request.getParameter("name");
    String userPassWord = request.getParameter("password");
    Cookie cookie1 = new Cookie("userName", userName);
    Cookie cookie2 = new Cookie("userPassword", userPassWord);
    cookie1.setMaxAge(24*3600);
    cookie2.setMaxAge(24*3600);
    response.addCookie(cookie1);
    response.addCookie(cookie2);
%>

setMaxAge的参数单位是秒。

但是需要注意的是:如果Cookie中含有中文,就要使用java.net.URLEncoder.encode()来进行编码,在获取的时候通过java.net.URLDecoder.decode()来进行解码。

小结

以上就是JSP九大内置对象中的response对象,希望对读者有所帮助。到此我们JSP的内容已经结束了,当然理论知识虽然我们已经学完了,但是更多的还是需要实践,一起加油吧!