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); //截取字符串
-
设置想办法让浏览器支持下载我们需要的东西
-
获取下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
-
创建缓冲区
int len=0; byte[] buffer = new byte[1024];
-
获取输出流 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