请求和响应

    技术2024-11-10  7

    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

    Processed: 0.028, SQL: 9