JSP004:jsp的九大内置对象中的request和response

JSP内置对象. 内置对象就是不用定义,直接使用的对象! 比如 out。

  • request 内置对象
    表示请求。这个对象中封装了客户端提交给服务器的数据!
    方法:
  • getParameter(String ) 用来获取客户端提交的数据
    输入数据:
    在这里插入图片描述
    获取数据:
    在这里插入图片描述
    结果:
    在这里插入图片描述
  • getParamterValues. 专门获取多个名字一样的值的!
    在这里插入图片描述
    获取
    在这里插入图片描述
    结果:
    在这里插入图片描述
  • 解决中文乱码
    在这里插入图片描述
    在获取去到值之后,输出之前加上
 s3=new String(s3.getBytes("iso-8859-1"),"utf-8");
  • getAttribute和setAttribute 是用来给请求范围内添加数据的
    在这里插入图片描述

  • response对象
    对比,request里面存放的是 客户端给服务器的数据, response是把服务器的数据再发给客户端! 所以response对象叫做 响应对象.
    方法:

  • sendRedirect 重定向

 <%
      response.sendRedirect("aa.jsp");
      %>

也是从一个网页跳转到另一个网页。从效果上看,重定向和转发看起来是一样的!
但是,还是有区别的,至少转发(jsp:forward)时,地址栏不变。重定向是地址栏变。

  • 转发和重定向最大的区别是: 转发只是一次请求, 而重定向是2次请求。
    下图就是转发:
    在这里插入图片描述
    重定向:
    在这里插入图片描述

转发和重定向的区别
1.转发是服务器端跳转,客户端不能感知,转发会延长请求范围至下一个页面。(转发前后的jsp页面中的所有request是用一个对象);
重定向是客户端跳转,客户端能感知,重定向是客户端再次发起一次信的请求,则之前请求中的所有数据全部丢失! (重定向前后的jsp页面中的request对象是两个请求对象。)

重定向时,客户端一共发了2次请求,数据如果存在第一次请求中,则第二天请求中无法获取!
比如把index.jsp界面的值想传给aa.jsp界面
index界面代码

 <%
       request.setAttribute("a", "apple");
      response.sendRedirect("aa.jsp");//重定向达到aa.jsp
      %>

获取:
发现获取到的值为空

 <%
     String value=(String)request.getAttribute("a");//他是个object类型,转String需要强转
     out.println(value);
    %>

在这里插入图片描述

  • setContentType() :
    告诉浏览器,服务器发送的是什么格式的数据! 这个方法等价于 <%@ page contentType=”” %>
 <%
       response.setContentType("application/msword");
       //设置响应头
       response.setHeader("Content-Disposition", "attachment;filename=abc.doc");
      %>

上面代码是直接以doc格式下载文件。设置下载文件名字的代码是固定写法,这个代码是给响应头中添加信息!
响应头中的信息最终被浏览器接收到!浏览器会下载,并自动命名下载文件!

  • getOutStream 获得输出流,这个输出流的起点:服务器,终点:客户端浏览器。
    在这里插入图片描述
    这个sos是一个字节流,除了能发文本,还能发2进制文件。字符流(out)只能发文本 ,字节流什么都能发!但是如果想发字符,先要把它打成字节码。把字节码发过去,再让接收端解码
    在这里插入图片描述
    它也可以发送一张图片,默认是黑色的。
    在这里插入图片描述
    在制作的图片上还可以涂鸦,首先需要创建一个画笔,然后拿画笔做出相应的操作。
 //画笔工具
      Graphics g=image.getGraphics();
      //在横纵坐标100的位置显示这三个字
      g.drawString("总冠军", 100, 100);
      //划线,起点坐标50,50,终点坐标100,100
      g.drawLine(50, 50, 100, 100);
      //画弧,弧线外切坐标50,50.外切矩形100,100.弧线起点0,弧度数360(圆)
      g.drawArc(20, 20, 100, 100, 0, 360);
      //同上,实心的圆
      g.fillArc(0, 0, 20, 20, 0, 360);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值