请求和响应

Response 和 Request

1.HttpServletResponse(响应)

HttpServletResponse代表服务端的一个响应

web服务器接收到服务器客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse对象。

简单来说

  • 如果要获取客户端请求过来的参数:用HttpServletRequest
  • 如果要给客户端响应一些数据信息:使用HttpServletResponse

1.简单分类

1.负责向浏览器发送数据的方法

ServletOutputStream getOutputStream() throws IOException; 字节输出流

PrintWriter getWriter() throws IOException;字符输出流

2.负责向浏览器发送响应头的方法

void setCharacterEncoding(String var1);

void setContentLength(int var1);

void setContentType(String var1);

void setBufferSize(int var1);

void sendError(int var1, String var2) throws IOException;

void sendError(int var1) throws IOException;

void sendRedirect(String var1) throws IOException;

void setDateHeader(String var1, long var2);

void addDateHeader(String var1, long var2);

void setHeader(String var1, String var2);

void addHeader(String var1, String var2);

void setIntHeader(String var1, int var2);

void addIntHeader(String var1, int var2);

void setStatus(int var1);

3.响应状态码常量
在这里插入图片描述

2.常见应用

1.像浏览器输出消息
在这里插入图片描述

2.让浏览器下载文件

1.要获取下载文件的路径

String realPath = this.getServletContext().getRealPath("/蛇哥.png");

2.下载的文件名

String filename= realPath.substring(realPath.lastIndexOf("\\")+1); //截取字符串
  1. 设置想办法让浏览器支持下载我们需要的东西
    在这里插入图片描述

  2. 获取下载文件的输入流

    FileInputStream in = new FileInputStream(realPath);
    
  3. 创建缓冲区

    int len=0;
    byte[] buffer = new byte[1024];
    
  4. 获取输出流 OutputStream对象 将FileOutputStream读到缓冲区 将缓冲区的数据写到客户端

ServletOutputStream out = resp.getOutputStream();
while ((len = in.read(buffer))>0){
    out.write(buffer);
}
in.close();
out.close();

7.启动测试。

3.实现验证码
在这里插入图片描述

2.1 实现重定向(重点)

在这里插入图片描述

概念:一个WEB资源B收到客户端A请求后,会通知A客户端去访问另一个WEB资源C

在这里插入图片描述
面试题:请聊聊重定向和转发的区别?

  • 相同点
    • 页面都会跳转 页面内容会改变
  • 不同点
    • 请求转发的时候,url网址不会产生变化
    • 重定向 ,url地址栏会发生变化

实现简单的注册

1.首先在JSP文件中写一个表单 提交数据

采用utf-8编码,在jsp文件中,加入下面2句即可:
<%@ page language="java" pageEncoding="utf-8"%>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
第一句设置jsp页面的编码方式,第二句是设置输出到浏览器,浏览器选择的编码方式 

<%--这里提交的路径需要寻找到项目的路径--%>
<%--${pageContext.request.contextPath} 代表请求当前项目--%>

在这里插入图片描述

如果这个JSP网页是把表单中的内容 提交到/login项目中

2.写出相应的Servlet接口 在web.xml文件中映射到/login地址

在这里插入图片描述
并且重定向到sucess.jsp文件上
在这里插入图片描述

3.启动测试

输入用户名和密码

在这里插入图片描述

点击提交 会提交到/login上 并且由/login重定向到我们写好的succes.jsp文件上
在这里插入图片描述

2.HttpServletRequest(请求)

HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,Httpq请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法 获得客户端提供的所有信息。

在这里插入图片描述

2. 获取前端传递的参数

在这里插入图片描述

举例

写一个前端JSP文件 里面有表单 通过post方式提交数据到请求中
在这里插入图片描述

2.写Servlet接口 通过HttpServletRequest对象获得前端传递的参数

在这里插入图片描述

启动测试
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200703233436782.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Jzbm1k,size_16,color_FFFFFF,t_70

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值