• response响应,常用方法,分发器重定向,错误提示


    response响应

    响应的构成部分

    1.状态行
    protocol: http协议版本
    status code: 状态码

    • 1xx: 信息响应类,表示接收到请求并且继续处理
    • 2xx: 处理成功响应类,表示动作被成功接收、理解和接受
    • 3xx: 重定向响应类,为了完成指定的动作,必须接受进一步处理
    • 4xx: 客户端错误,客户请求包含语法错误或者是不能正确执行
    • 5xx: 服务端错误,服务器不能正确执行一个正确的请求 OK 表示状态描述,只是一个文本的描述。

    status message: 状态描述

    2.响应头
    服务器定义内容, 把内容通过http响应返回到客户端!

    3.响应内容
    响应是从服务器向客户端(浏览器)写入的!

    响应总共有两个类型

    1.响应文本 字符串
    把字符串传输到浏览器, 然后由浏览器负责解析!

    //响应文本
    response.getWriter();
    
    • 1
    • 2

    2.响应流 文件
    文件下载

    //响应流
    response.getOutputStream();
    
    • 1
    • 2

    常用方法

    package com.javakc.web1.user;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.nio.file.Files;
    import java.nio.file.Path;
    
    
    //response常用方法
    public class UserServlet7 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //从服务器端向客户端返回响应头信息
            response.setHeader("username", "admin");
    
            //响应文本
            //向客户端返回html
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter writer = response.getWriter();
            writer.write("

    Hello world

    "
    ); writer.flush(); writer.close(); //向客户端返回json response.setContentType("application/json;charset=UTF-8"); PrintWriter writer1 = response.getWriter(); String json = "{\"name\": \"admin\", \"age\": 21}"; writer1.write(json); writer1.flush(); writer1.close(); //响应流 //1.指定响应类型 图片 response.setContentType("image/jpeg"); //2.获取文件输入流 String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg"; //3.获取响应流 OutputStream out = response.getOutputStream(); out.write(Files.readAllBytes(Path.of(path))); out.flush(); out.close(); //1.指定响应类型 图片 response.setContentType("image/jpeg"); //2.获取文件输入流 String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg"; File imageFile = new File(path); InputStream input = new FileInputStream(imageFile); //2.获取响应流 OutputStream out = response.getOutputStream(); int len = 0; byte[] b = new byte[1024]; while ((len = input.read(b)) > 0) { out.write(b, 0, len); } out.flush(); out.close(); //文件下载 //1.指定响应类型 图片 response.setContentType("image/jpeg"); //2.获取文件输入流 String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg"; //3.获取响应流 //重置响应 response.reset(); //通知浏览器 响应类型 response.setHeader("Content-Disposition", "attachment;filename=1.jpg"); OutputStream out = response.getOutputStream(); out.write(Files.readAllBytes(Path.of(path))); out.flush(); out.close(); //1.指定响应类型 图片 response.setContentType("image/jpeg"); //2.获取文件输入流 String path = "C:\\Users\\a\\Pictures\\谭晓聪\\txc.jpg"; File imageFile = new File(path); InputStream input = new FileInputStream(imageFile); //3.获取响应流 //重置响应 response.reset(); //通知浏览器 响应类型 response.setHeader("Content-Disposition", "attachment;filename=1.jpg"); OutputStream out = response.getOutputStream(); int len = 0; byte[] b = new byte[1024]; while ((len = input.read(b)) > 0) { out.write(b, 0, len); } out.flush(); out.close(); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98

    分发器重定向

    package com.javakc.web1.user;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class UserServlet8 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //分发器跳转页面
            request.getRequestDispatcher("/success.html").forward(request, response);
    
            //重定向跳转
            response.sendRedirect(request.getContextPath() + "/success1.html");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>successtitle>
    head>
    <body>
    success
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>success1title>
    head>
    <body>
    success1
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    分发器、重定向区别

    分发器重定向
    是否携在参数携在参数不携在参数
    请求次数一次请求两次请求
    跨域不支持支持
    地址栏不会发生改变会发生改变,新地址是重定向后的地址

    错误提示

    web.xml

     
     <error-page>
         <error-code>404error-code>
         <location>/error/404.htmllocation>
     error-page>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>404title>
    head>
    <body>
    很遗憾,页面找不到
    body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    普教建设数字化怎么设施?
    一款可以自动写代码的编辑器,解放你的双手
    【SpringBoot篇】基于SpringBoot进行Web开发
    比较不同项目管理工具的团队协作功能,找出最全面的一款
    海外专线网络费用
    Java | UDP协议
    RabbitMQ
    Linux常用命令— 目录和文件都能操作的命令
    ssm教务系统网站 毕业设计-附源码290915
    达梦数据库学习操作记录
  • 原文地址:https://blog.csdn.net/qq_45939736/article/details/126820517